diff options
Diffstat (limited to 'world/map')
-rw-r--r-- | world/map/npc/013-3/barrier.txt | 21 | ||||
-rw-r--r-- | world/map/npc/013-3/mask_chest.txt | 63 | ||||
-rw-r--r-- | world/map/npc/018-3/bookcase.txt | 25 | ||||
-rw-r--r-- | world/map/npc/functions/clear_vars.txt | 5 |
4 files changed, 79 insertions, 35 deletions
diff --git a/world/map/npc/013-3/barrier.txt b/world/map/npc/013-3/barrier.txt index 6de45440..410bc882 100644 --- a/world/map/npc/013-3/barrier.txt +++ b/world/map/npc/013-3/barrier.txt @@ -1,17 +1,30 @@ // 013-3.gat,71,21,0|script|#DemonMineBarrier1#_M|45,1,1,{ - if (QUEST_demon_mines >= 2) close; - if (QUEST_demon_mines == 1 && countitem("JackOSoul") >= 1) goto L_Has_Jack_O_Soul; + callfunc "ClearVariables"; + + set @state, ((QUEST_Hurnscald & NIBBLE_2_MASK) >> NIBBLE_2_SHIFT); + + if (@state >= 2) goto L_Close; + if (@state == 1 && countitem("JackOSoul") >= 1) goto L_Has_Jack_O_Soul; mes "A barrier around the opening pushes you back as you approach."; warp "013-3.gat", 71, 25; - close; + goto L_Close; L_Has_Jack_O_Soul: mes "The barrier around the opening allows you passage."; - set QUEST_demon_mines, 2; + set @state, 2; + callsub S_Update_Mask; delitem "JackOSoul", 1; + goto L_Close; + +L_Close: + set @state, 0; close; + +S_Update_Mask: + set QUEST_Hurnscald, (QUEST_Hurnscald & ~(NIBBLE_2_MASK)) | (@state << NIBBLE_2_SHIFT); + return; } diff --git a/world/map/npc/013-3/mask_chest.txt b/world/map/npc/013-3/mask_chest.txt index 59aa0819..4a15bc0b 100644 --- a/world/map/npc/013-3/mask_chest.txt +++ b/world/map/npc/013-3/mask_chest.txt @@ -1,8 +1,12 @@ // 013-3.gat,28,27,0|script|Chest#DemonMask|111,{ - if (QUEST_demon_mines < 2) goto L_This_shouldn_t_happen; - if (QUEST_demon_mines == 3) goto L_Finished; + callfunc "ClearVariables"; + + set @state, ((QUEST_Hurnscald & NIBBLE_2_MASK) >> NIBBLE_2_SHIFT); + + if (@state < 2) goto L_This_shouldn_t_happen; + if (@state == 3) goto L_Finished; if (countitem("MaggotSlime") == 0) goto L_No_maggot_slime; @@ -112,97 +116,106 @@ mes "You managed to perform the ritual and open the chest."; getitem "DemonMask", 1; mes "You found a demon mask inside."; - set QUEST_demon_mines, 3; - close; + set @state, 3; + callsub S_Update_Mask; + goto L_Close; L_No_maggot_slime: mes "You do not have any maggot slime."; - close; + goto L_Close; L_No_mushroom: mes "You do not have a mushroom, neither big, nor small."; - close; + goto L_Close; L_No_pink_petal: mes "You can't seem to find that pink petal you had."; - close; + goto L_Close; L_No_pearl: mes "You do not have a pearl, let alone one from the sea."; - close; + goto L_Close; L_No_hard_spike: mes "You weren't able to find a hard spike in the stuff you brought."; - close; + goto L_Close; L_No_raw_log: mes "You don't have any wood."; - close; + goto L_Close; L_No_pink_antenna: mes "You aren't carrying any antenna."; - close; + goto L_Close; L_No_tongues: mes "You don't have four different snake tongues."; - close; + goto L_Close; L_No_treasure_key: mes "No treasure chest key, no opening ritual."; - close; + goto L_Close; L_No_ash: mes "You still need a pile of ash."; - close; + goto L_Close; L_No_herbs: mes "Four different herbs are needed to get this thing open."; - close; + goto L_Close; L_No_bug_leg: mes "You do not have part of a bug on you. That is rather odd considering what you went through to get here."; - close; + goto L_Close; L_No_lamp: mes "You do not have a lamp. Yet, somehow, you were able to get this far into this dark cave."; - close; + goto L_Close; L_No_iron_ore: mes "\"Rock and metal, as one.\" You don't seem to have anything that fits the bill."; - close; + goto L_Close; L_No_stingers: mes "Three scorpion deaths are still missing."; - close; + goto L_Close; L_No_silk: mes "You could not find the womb for a butterfly among your stuff."; - close; + goto L_Close; L_No_fur: mes "You wonder how you can carry the \"gentle caress of a creature without blemish.\" But you need it to get this thing open."; - close; + goto L_Close; L_No_dark_crystal: mes "A piece of darkness is missing."; - close; + goto L_Close; L_No_water: mes "Just one bottle of water and you can start the ritual."; - close; + goto L_Close; L_This_shouldn_t_happen: warp "013-3.gat", 71, 25; // You need to go through the barrier to get to the chest, so this shouldn't happen. So just warp them like the barrier does. - close; + goto L_Close; L_Finished: mes "[Chest]"; mes "You already opened this chest."; - close; + goto L_Close; L_TooMany: mes "[Chest]"; mes "You don't have room for what ever is inside. Maybe you should try again later."; + goto L_Close; + +L_Close: + set @state, 0; close; + +S_Update_Mask: + set QUEST_Hurnscald, (QUEST_Hurnscald & ~(NIBBLE_2_MASK)) | (@state << NIBBLE_2_SHIFT); + return; } diff --git a/world/map/npc/018-3/bookcase.txt b/world/map/npc/018-3/bookcase.txt index 2e04c06b..38af0d0e 100644 --- a/world/map/npc/018-3/bookcase.txt +++ b/world/map/npc/018-3/bookcase.txt @@ -1,15 +1,18 @@ // 018-3.gat,75,123,0|script|#DemonMineBookcase1|127,{ - if (QUEST_demon_mines == 0) goto L_Search; + callfunc "ClearVariables"; + + set @state, ((QUEST_Hurnscald & NIBBLE_2_MASK) >> NIBBLE_2_SHIFT); + + if (@state == 0) goto L_Search; mes "You see nothing different about the bookcase."; mes "Do you want to search it again anyways?"; next; menu - "Yes", L_Search, - "No", -; - close; + "Yes.", L_Search, + "No.", L_Close; L_Search: mes "After searching the bookcase, you were able to find a few passages that you can read."; @@ -50,7 +53,17 @@ L_Search: mes ""; mes "You begin to wonder if you read that list right."; next; - if (QUEST_demon_mines == 0) - set QUEST_demon_mines, 1; + if (@state != 0) + goto L_Close; + set @state, 1; + callsub S_Update_Mask; + goto L_Close; + +L_Close: + set @state, 0; close; + +S_Update_Mask: + set QUEST_Hurnscald, (QUEST_Hurnscald & ~(NIBBLE_2_MASK)) | (@state << NIBBLE_2_SHIFT); + return; } diff --git a/world/map/npc/functions/clear_vars.txt b/world/map/npc/functions/clear_vars.txt index ff0bdb02..d0ca5313 100644 --- a/world/map/npc/functions/clear_vars.txt +++ b/world/map/npc/functions/clear_vars.txt @@ -111,6 +111,11 @@ function|script|ClearVariables|{ set QUEST_Hurnscald, (QUEST_Hurnscald & ~(NIBBLE_1_MASK)) | (QUEST_Scythe_state << NIBBLE_1_SHIFT); set QUEST_Scythe_state, 0; + // move Demon Mask quest into bitmasked variable QUEST_Hurnscald + if (QUEST_demon_mines) + set QUEST_Hurnscald, (QUEST_Hurnscald & ~(NIBBLE_2_MASK)) | (QUEST_demon_mines << NIBBLE_2_SHIFT); + set QUEST_demon_mines, 0; + //These lines are needed to migrate stuff from variables to flags if (Open_Underground_Palace_Barrier) set FLAGS, FLAGS | FLAG_OPENED_UNDERGROUND; |