diff options
Diffstat (limited to 'world/map/npc/002-1/sarah.txt')
-rw-r--r-- | world/map/npc/002-1/sarah.txt | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/world/map/npc/002-1/sarah.txt b/world/map/npc/002-1/sarah.txt new file mode 100644 index 00000000..15eeb83b --- /dev/null +++ b/world/map/npc/002-1/sarah.txt @@ -0,0 +1,88 @@ +// Variables used: nibble 1 of QUEST_SouthTulimshar + +002-1.gat,93,43,0|script|Sarah|106 +{ + // This NPC previously used the variable TMW_Quest + callfunc "ClearVarTMW_Quest"; + + set @state, ((QUEST_SouthTulimshar & NIBBLE_1_MASK) >> NIBBLE_1_SHIFT); + + if (@state >= 2) goto L_Done; + if (@state == 1) goto L_Progress; + + mes "[Sarah]"; + mes "\"Boy, am I hungry or what!\""; + next; + + set @TEMP, rand(2); + if(@TEMP == 1) goto L_Opening1; + goto L_Opening0; + +L_Opening0: + mes "\"Cherry Cake is the best!\""; + next; + goto L_Ask; + +L_Opening1: + mes "\"Mmm, Cherry Cake... I love it!\""; + next; + goto L_Ask; + +L_Ask: + mes "\"Can you bring me a piece of Cherry Cake? Pretty please?\""; + menu + "Yes.", L_Req0, + "No.", L_Close; + +L_Req0: + mes "[Sarah]"; + mes "\"Yippee! Bring me a piece of Cherry Cake, and I'll give you a nice hat!\""; + next; + set @state, 1; + callsub S_Update_Var; + mes "[Sarah]"; + mes "\"Please bring it to me!\""; + goto L_Close; + +L_Progress: + if (countitem("CherryCake") < 1) + goto L_NotEnough; + mes "[Sarah]"; + mes "\"Whee!\""; + next; + mes "You brought me Cherry Cake! Here is your new hat, as promised.\""; + emotion EMOTE_TONGUE; + getinventorylist; + if ((@inventorylist_count - (countitem("CherryCake") == 1)) > 99) goto L_TooMany; + delitem "CherryCake", 1; + getitem "SerfHat", 1; + set @state, 2; + callsub S_Update_Var; + goto L_Close; + +L_NotEnough: + mes "[Sarah]"; + mes "\"Oh, I'm starving! Please bring me Cherry Cake!\""; + goto L_Close; + +L_Done: + mes "[Sarah]"; + mes "\"It was so tasty, I can't eat anything more... Thank you!\""; + emotion EMOTE_TONGUE; + goto L_Close; + +L_Close: + set @TEMP, 0; + set @state, 0; + close; + +L_TooMany: + next; + mes "[Sarah]"; + mes "\"You don't have room for my reward. I'll wait until you do.\""; + goto L_Close; + +S_Update_Var: + set QUEST_SouthTulimshar, (QUEST_SouthTulimshar & ~(NIBBLE_1_MASK) | (@state << NIBBLE_1_SHIFT)); + return; +} |