From aacf6527a0ae9d440f9271906400825c9722275f Mon Sep 17 00:00:00 2001 From: Fate Date: Sat, 27 Dec 2008 22:22:21 -0700 Subject: Magic quests 0, 2, 4 --- npc/012-1_Woodland_Hills/_import.txt | 1 + npc/012-1_Woodland_Hills/injured-mouboo.txt | 228 ++++++++++++++++++++++++++++ 2 files changed, 229 insertions(+) create mode 100644 npc/012-1_Woodland_Hills/injured-mouboo.txt (limited to 'npc/012-1_Woodland_Hills') diff --git a/npc/012-1_Woodland_Hills/_import.txt b/npc/012-1_Woodland_Hills/_import.txt index 851f97fc..c4438c6c 100644 --- a/npc/012-1_Woodland_Hills/_import.txt +++ b/npc/012-1_Woodland_Hills/_import.txt @@ -2,4 +2,5 @@ map: 012-1.gat npc: npc/012-1_Woodland_Hills/_mobs.txt npc: npc/012-1_Woodland_Hills/_warps.txt npc: npc/012-1_Woodland_Hills/monsters.txt +npc: npc/012-1_Woodland_Hills/injured-mouboo.txt npc: npc/012-1_Woodland_Hills/shops.txt diff --git a/npc/012-1_Woodland_Hills/injured-mouboo.txt b/npc/012-1_Woodland_Hills/injured-mouboo.txt new file mode 100644 index 00000000..d6c536f2 --- /dev/null +++ b/npc/012-1_Woodland_Hills/injured-mouboo.txt @@ -0,0 +1,228 @@ +// The following auxiliary function is used both by appropriate magic and within the regular script: + +function script QuestMoubooHeal { + set @Q_MASK, NIBBLE_2_MASK; + set @Q_SHIFT, NIBBLE_2_SHIFT; + + set @Q_status, (QUEST_MAGIC & @Q_MASK) >> @Q_SHIFT; + set @Q_status_upper, @Q_status & 12; + set @Q_status, @Q_status & 3; + + set @STATE_INITIAL, 0; + set @STATE_HEALED_MOUBOO, 3; + + if (@Q_status != @STATE_INITIAL) + goto L_nothing; + + set @Q_status, @STATE_HEALED_MOUBOO; + callsub S_update_var; + mes "[Injured Mouboo]"; + mes "A soft white glow surrounds the mouboo's leg, which slowly shifts back into place."; + mes "As the glow subsides, the mouboo gets up, carefully, and takes a few steps. It seems to be fully healed!"; + mes "[5000 experience points]"; + getexp 5000, 0; + next; + + mes "[Injured Mouboo]"; + mes "Visibly happy, the mouboo lies down on the ground and snuggles with a black piece of cloth it had been lying on."; + mes "The healing process must have been exhausting, for it is asleep in an instant."; + close; + +L_nothing: + mes "Your spell has no effect."; + next; + close; + +S_update_var: + set @Q_wr_status, @Q_status | @Q_status_upper; + set QUEST_MAGIC, + (QUEST_MAGIC & ~(@Q_MASK) + | (@Q_wr_status << @Q_SHIFT)); + return; +} + + + +012-1.gat,57,153,0 script Mouboo 171,{ + set @Q_MASK, NIBBLE_2_MASK; + set @Q_SHIFT, NIBBLE_2_SHIFT; + + set @Q_status, (QUEST_MAGIC & @Q_MASK) >> @Q_SHIFT; + set @Q_status_upper, @Q_status & 12; + set @Q_status, @Q_status & 3; + + set @STATE_INITIAL, 0; + set @STATE_KILLED_MOUBOO, 1; + set @STATE_TOOK_KILL_REWARD, 2; + set @STATE_HEALED_MOUBOO, 3; + + if (@Q_status = @STATE_KILLED_MOUBOO) + goto L_dead; + if (@Q_status = @STATE_TOOK_KILL_REWARD) + goto L_took_reward; + if (@Q_status = @STATE_HEALED_MOUBOO) + goto L_healed; + + mes "[Injured Mouboo]"; + mes "You notice a mouboo lying on the ground, groaning, as if in pain."; + next; + +L_menu: + menu + "Examine the mouboo", L_examine, + "Give the mouboo something", L_give, + "Kill the mouboo", L_kill, + "Leave", -; + close; + +L_examine: + mes "[Injured Mouboo]"; + mes "Looking closer, you notice that the mouboo's left hind leg is bent in a very unnatural angle-- that seems to be the cause for its pain."; + next; + mes "[Injured Mouboo]"; + mes "You also notice that the mouboo is lying on top of what appears to be a black turtleneck sweater."; + mes "Do you want to pick up the sweater?"; + next; + menu + "Yes.", L_pickup_alive, + "No.", L_menu; + goto L_menu; + +L_pickup_alive: + mes "[Injured Mouboo]"; + mes "The Mouboo groans and pushes your hand away. It seems to be rather fond of the sweater." + next; + goto L_menu; + +L_give: + set @items_nr, 12; + setarray @items, 501, 502, 509, 527, 534, 535, 539, 541, 684, 685, 686, 687; + setarray @itemeat, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0; + + setarray @choice$, "", "", "", "", "", "", "", "", "", "", "", ""; + set @choices_nr, 0; + setarray @choice_idx, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0; + setarray @choice_eat, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0; + + set @n, 0; +L_nloop: + set @k, @items[@n]; + if (countitem(@k) == 0) + goto L_nloop_skip; + + set @name$, getitemname(@k); + set @choice$[@n], @name$; + set @choice_idx[@n], @k; + set @choice_eat[@n], @itemeat[@n]; + +L_nloop_skip: + + set @n, @n+1; + if (@n < @items_nr) + goto L_nloop; + + menu + @choice$[0], - + @choice$[1], - + @choice$[2], - + @choice$[3], - + @choice$[4], - + @choice$[5], - + @choice$[6], - + @choice$[7], - + @choice$[8], - + @choice$[9], - + @choice$[10], - + @choice$[11], -; + + set @menu, @menu - 1; + set @choice = @choice_idx[@menu]; + set @choice_e = @choice_eat[@menu]; + set @verb$, "drinks"; + if (@choice_e) + set @verb$, "eats"; + + if (@choice && countitem(@choice)) + goto L_consume; + + goto L_menu; + +L_consume: + mes "[Injured Mouboo]"; + + mes "The mouboo " + @verb$ + " your " + getitemname(@choice) + "."; + delitem @choice, 1; + next; + + if (@choice == 687) + goto L_do_heal; + + + mes "[Injured Mouboo]"; + mes "Unfortunately, it seems to have had no effect."; + goto L_menu; + +L_do_heal: + callfunc "QuestMoubooHeal"; + +L_kill: + mes "[Injured Mouboo]"; + if (BaseLevel > 44) + goto L_kill_success; + mes "The mouboo deflects your attack and counterattacks!"; + mes "It misses you only barely."; + mes "Injured though it may be, this mouboo is still more than a match for you!"; + next; + goto L_menu; + +L_kill_success: + mes "After some wrestling, the mouboo succumbs to your attacks."; + mes "[100 experience points]"; + getexp 100, 0; + + set @Q_status, @STATE_KILLED_MOUBOO; + callsub S_update_var; + + next; + +L_dead: + mes "[Dead Mouboo]"; + mes "The dead mouboo is lying on top of a black T-neck sweater."; + + getinventorylist; + if (@inventorylist_count == 100) + goto L_nopickup; + + getitem 2076, 1; + mes "You pull out the sweater and stuff it into your backpack."; + + set @Q_status, @STATE_TOOK_KILL_REWARD; + callsub S_update_var; + + next; + close; + +L_took_reward: + mes "[Dead Mouboo]"; + mes "You see a dead mouboo."; + next; + close; + +L_nopickup: + mes "Unfortunately, you can't carry any more."; + next; + close; + +L_healed; + mes "[Mouboo]"; + mes "The mouboo is sleeping soundly, smiling in its dreams."; + next; + close; + +S_update_var: + set @Q_wr_status, @Q_status | @Q_status_upper; + set QUEST_MAGIC, + (QUEST_MAGIC & ~(@Q_MASK) + | (@Q_wr_status << @Q_SHIFT)); + return; +} -- cgit v1.2.3-60-g2f50