diff options
Diffstat (limited to 'npc/006-1/tree.txt')
-rwxr-xr-x | npc/006-1/tree.txt | 159 |
1 files changed, 159 insertions, 0 deletions
diff --git a/npc/006-1/tree.txt b/npc/006-1/tree.txt new file mode 100755 index 00000000..6c961691 --- /dev/null +++ b/npc/006-1/tree.txt @@ -0,0 +1,159 @@ +function script QuestTreeTrigger { + @Q_MASK = NIBBLE_2_MASK; + @Q_SHIFT = NIBBLE_2_SHIFT; + + @Q_status = (QUEST_MAGIC & @Q_MASK) >> @Q_SHIFT; + @Q_status_lower = @Q_status & 3; + @Q_status = (@Q_status & 12) >> 2; + + if (@Q_status & @flag) goto L_close; // already did that + + if (@flag == 2) goto L_hug; + goto L_Cont; + +L_Cont: + @Q_status = @Q_status | @flag; + callsub S_Update_Var; + + if (@Q_status != 3) goto L_close; + + if (MAGIC_FLAGS & MFLAG_DID_CUTTREE) goto L_close; + + mes "Maybe it is just a trick of the light, but you can't help but think that the tree looks different... healthier, almost younger."; + mes "[20000 experience points]"; + getexp 20000, 0; + @value = 15; + callfunc "QuestSagathaHappy"; + goto L_close; + +L_hug: + mes "You hug the tree."; + next; + goto L_Cont; + +L_close: + @Q_MASK = 0; + @Q_SHIFT = 0; + @Q_status = 0; + @Q_status_lower = 0; + @Q_wr_status = 0; + @value = 0; + return; + +S_Update_Var: + @Q_wr_status = (@Q_status << 2) | @Q_status_lower; + QUEST_MAGIC = (QUEST_MAGIC & ~(@Q_MASK) | (@Q_wr_status << @Q_SHIFT)); + return; +} + +function script QuestTreeTouch { + @Q_MASK = NIBBLE_2_MASK; + @Q_SHIFT = NIBBLE_2_SHIFT; + + @Q_status = (QUEST_MAGIC & @Q_MASK) >> @Q_SHIFT; + @Q_status = (@Q_status & 12) >> 2; + + if (@Q_status == 3) goto L_Happy; + + if ((MAGIC_FLAGS & (MFLAG_KNOWS_DRUIDTREE | MFLAG_KNOWS_CUTTREE)) == MFLAG_KNOWS_CUTTREE) goto L_cut; + + if ((MAGIC_FLAGS & (MFLAG_KNOWS_DRUIDTREE | MFLAG_KNOWS_CUTTREE)) == MFLAG_KNOWS_DRUIDTREE) goto L_Water; + + if ((MAGIC_FLAGS & (MFLAG_KNOWS_DRUIDTREE | MFLAG_KNOWS_CUTTREE)) > 0) //i.e., both are set + goto L_both; + + mes "[Dying Tree]"; + mes "You see a strange tree."; + goto L_close; + +L_cut: + mes "[Dying Tree]"; + mes "This must be the tree that the earth spirit was referring to."; + next; + menu + "Cut off a branch", L_do_cut, + "Leave it alone", L_close; + +L_Water: + mes "[Dying Tree]"; + mes "This must be the druid tree."; + next; + menu + "Water the tree", L_Givewater, + "Kiss tree", L_kiss, + "Leave it alone", L_close; + +L_both: + mes "[Dying Tree]"; + mes "This must be the druid tree that Wyara and the earth spirit were talking about."; + next; + menu + "Water the tree", L_Givewater, + "Kiss tree", L_kiss, + "Cut off a branch", L_do_cut, + "Leave it alone", L_close; + +L_Givewater: + if (countitem("BottleOfWater") < 1) goto L_No_Water; + delitem "BottleOfWater", 1; + getitem "EmptyBottle", 1; + + mes "[Dying Tree]"; + mes "You pour a bottle of water into the sand. The water dissipates quickly, without any effect."; + goto L_close; + +L_No_Water: + mes "[Dying Tree]"; + mes "You don't have any water."; + goto L_close; + +L_kiss: + mes "[Dying Tree]"; + mes "You pluck out a splinter from your lip."; + mes "Somehow, you don't think that this helped."; + goto L_close; + +L_do_cut: + if (countitem("BoneKnife") < 1) goto L_No_boneknife; + + if (MAGIC_FLAGS & MFLAG_DID_CUTTREE) goto L_really_cut; + + mes "[Dying Tree]"; + mes "You find a suitable branch and put your bone knife in position."; + mes "Holding the branch, you have an uneasy feeling – as if something inside the tree were trying to resist you..."; + mes "Do you want to continue cutting?"; + next; + menu + "Nah... better not.", L_close, + "Yes, let's cut!", L_really_cut; + +L_really_cut: + MAGIC_FLAGS = MAGIC_FLAGS | MFLAG_DID_CUTTREE; + getitem "DruidTreeBranch", 1; + mes "[Dying Tree]"; + mes "You cut off a branch from the tree."; + mes "For an instant, you have an uneasy feeling, as if the branch were writhing in your hand..."; + goto L_close; + +L_No_boneknife: + mes "[Dying Tree]"; + mes "Try as you might, you can't seem to find a way to cut off a branch. Perhaps you need a different tool for cutting?"; + goto L_close; + +L_Happy: + mes "[Druid Tree]"; + mes "The tree looks younger and healthier now."; + goto L_close; + +L_close: + @Q_MASK = 0; + @Q_SHIFT = 0; + @Q_status = 0; + return; + +} + +006-1,82,59,0 script #DruidTree0#_M NPC400,{ + callfunc "QuestTreeTouch"; + close; +} |