diff options
-rw-r--r-- | npc/005-1_Snake_desert/spirit.txt | 2 | ||||
-rw-r--r-- | npc/009-2_Hurnscald/wyara.txt | 6 | ||||
-rw-r--r-- | npc/doc/magic | 10 |
3 files changed, 17 insertions, 1 deletions
diff --git a/npc/005-1_Snake_desert/spirit.txt b/npc/005-1_Snake_desert/spirit.txt index ad835121..a7f8dd04 100644 --- a/npc/005-1_Snake_desert/spirit.txt +++ b/npc/005-1_Snake_desert/spirit.txt @@ -287,7 +287,7 @@ L_close: S_update_var: set QUEST_MAGIC2, - (QUEST_MAGIC & ~(@Q_MASK) + (QUEST_MAGIC2 & ~(@Q_MASK) | (@Q_status << @Q_SHIFT)); return; } diff --git a/npc/009-2_Hurnscald/wyara.txt b/npc/009-2_Hurnscald/wyara.txt index a799cdf0..0e62fccb 100644 --- a/npc/009-2_Hurnscald/wyara.txt +++ b/npc/009-2_Hurnscald/wyara.txt @@ -11,6 +11,12 @@ set @STATUS_PURIFY_ONCE, 2; set @STATUS_PURIFY_TWICE, 3; set @STATUS_PURIFY_OVER, 4; + set @STATUS_MAX, @STATUS_PURIFY_OVER; + + // This operation + if (@Q_status > @Q_STATUS_MAX) + set @Q_status, @STATUS_INITIAL; + callsub S_update_var; set @has_magic, getskilllv(SKILL_MAGIC); diff --git a/npc/doc/magic b/npc/doc/magic index 931e637e..3e5863e0 100644 --- a/npc/doc/magic +++ b/npc/doc/magic @@ -11,3 +11,13 @@ Nibble use: N1: Elanore N2: Wyara N3: Elanore subquests (Cure Kadiya) + N4-N7: may be messy at this point + +The various magic scripts pack their status into these variables. +Locally, they use `@Q_status' to maintain the state, and use a function +`S_update_var' to update it. This is all re-using the same code, setting +the `@Q_MASK' and `@Q_SHIFT' variables appropriately. + + There are a few exceptions (such as the Kadiya quest) wherein +a separate helper function sets a dedicated local variable, or some hackery +in Auldsbel wherein we read stati directly, merely to enable certain options.
\ No newline at end of file |