Not sure if I'll be able to run through this thoroughly before you decide to submit. Been a bit burnt out on playing DROD RPG, and getting back into it is taking a while. But I did take a look through the recent hold's scripting.
Disappointed that you can no longer take the Knight Shield back for final optimising, but I suppose it doesn't matter in the long run, and makes Warmonger and Charity a bit more interesting.
With regards to "
A Clean Blade"
, personally, I thought the title would've fit more if *no mud at all* (stable, baby or mother) were cut. And it's not like you absolutely need that Power Gem to complete the hold (or even get all of the achievements). But whichever works.
Your Mimic Blade scripting is reasonably robust. Sadly, I can't recommend any better ways of doing it (some nasty bugs block one neat way of implementation). I'm not sure if the patch will break your code or not: if it eventually does, then I guess we can try fixing that when it happens.
You still have a hole in the logic though, since it *is* possible for the player to have an Invisibility Potion, kill a weak monster, and then try and Invisikill a Roach Egg. (Sure, it's not exactly the most wondrous of strategies, but it's possible.) As for detecting whether an Invisibility Potion is used, Accessory Used does *not* work for that, sadly. That event only detects Wall Walking and Warp Tokens. There is an event that could've been used to detect Speed Potions and Invisibility Potions being used, but you can't set Characters to detect for it in the editor. As a compromise, I think this global script should work:
Click here to view the secret text
× Imperative 15 //Make Script Global
Imperative 14 //Restart Script on Entrance
Set var "Invis" = 0
Label Start
Wait until var "_Accessory" = 3
Label Check
If ...
Wait until var "_Accessory" = 3
Set var "_MyScriptX" = _X
Set var "_MyScriptY" = _Y
If ...
Wait for item Invisibility Potion,0,0,0,0
Set var "Invis" = -1
Else
Set var "Invis" = 0
If End
Set var "_MyScriptX" = -9999
Set var "_MyScriptY" = -9999
Wait 0
Go to Check
If End
If ...
Wait until var "_Accessory" > 0
Go to Start
If End
Set var "_MyScriptX" = _X
Set var "_MyScriptY" = _Y
If ...
Wait for item Invisibility Potion,0,0,0,0
Set var "_MyScriptX" = -9999
Set var "_MyScriptY" = -9999
If ...
Wait until var "Invis" = 0
Go to Start
If End
If End
Set var "_MyScriptX" = -9999
Set var "_MyScriptY" = -9999
Set var "Invis" = 1
Wait for event Monster engaged
Set var "Invis" = 0
Go to Start
Not sure if the "
Wait for event Monster engaged"
needs a Wait 0 before setting the variable back to 0 though. Alternatively, you could set Invis to 0 when you test against it in the Mimic Blade script.
As for other script brokenness, I note that in all the Aumtlich rooms, you set the Aumtlich Killed variable to 0 on first enter. So if the player never enters 4N1W before they kill their first Aumtlich, then enters 4N1W and retreats without killing the Aumtlich there, they won't get credit for the achievement.
Similarly, if you kill the Wraithwing in 1N2E from the SE and then immediately step SE, it will count as if you killed a Mud Baby. I also note that
Turns and Moves made in Self-evaluation still count, leading to death when you stand on the squares at or over their 'maximums'. You should query these instead at the start of the room (or rather, you did query Moves, but you never used the variable).
EDIT: Turns apparently don't count unless you have a sword equipped, so this actually isn't a problem for Turns. Still a problem for Moves though.
And lastly, when taking the Bonus Path in 4N, you can jump directly N from the Force Arrow to skip the scorepoint. Not that it does you any *good*... but it looks untidy.
[Last edited by TFMurphy at 11-06-2010 06:07 AM]