From cf18ce071c79ae37e14ea38943e0b1d88da70a7b Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Fri, 9 Apr 2021 13:33:57 -0300 Subject: Override --- npc/012-1/injured-mouboo.txt | 226 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 226 insertions(+) create mode 100755 npc/012-1/injured-mouboo.txt (limited to 'npc/012-1/injured-mouboo.txt') diff --git a/npc/012-1/injured-mouboo.txt b/npc/012-1/injured-mouboo.txt new file mode 100755 index 00000000..167e91d8 --- /dev/null +++ b/npc/012-1/injured-mouboo.txt @@ -0,0 +1,226 @@ + +function script QuestMoubooHeal { + @Q_MASK = NIBBLE_2_MASK; + @Q_SHIFT = NIBBLE_2_SHIFT; + + @Q_status = (QUEST_MAGIC & @Q_MASK) >> @Q_SHIFT; + @Q_status_upper = @Q_status & 12; + @Q_status = @Q_status & 3; + + @STATE_INITIAL = 0; + @STATE_HEALED_MOUBOO = 3; + + if (@Q_status != @STATE_INITIAL) + goto L_Nothing; + + @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."; + next; + @value = 15; + callfunc "QuestSagathaHappy"; + close2; + return; + +L_Nothing: + mes "Your spell has no effect."; + close2; + return; + +S_Update_Var: + @Q_wr_status = @Q_status | @Q_status_upper; + set QUEST_MAGIC, + (QUEST_MAGIC & ~(@Q_MASK) + | (@Q_wr_status << @Q_SHIFT)); + return; +} + +012-1,57,153,0 script Mouboo NPC171,{ + @Q_MASK = NIBBLE_2_MASK; + @Q_SHIFT = NIBBLE_2_SHIFT; + + @Q_status = (QUEST_MAGIC & @Q_MASK) >> @Q_SHIFT; + @Q_status_upper = @Q_status & 12; + @Q_status = @Q_status & 3; + + @STATE_INITIAL = 0; + @STATE_KILLED_MOUBOO = 1; + @STATE_TOOK_KILL_REWARD = 2; + @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; + goto L_Menu; + +L_Menu: + menu + "Examine the mouboo", L_examine, + "Give the mouboo something", L_Give, + "Kill the mouboo", L_Kill, + "Leave", L_close; + +L_examine: + mes "[Injured Mouboo]"; + mes "Looking closer, you notice that the mouboo's left hind leg is bent at 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; + +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: + @items_nr = 12; + setarray @items$, "CactusDrink", "CactusPotion", "ChocolateBar", "Milk", "OrangeCupcake", "RedApple", "Beer", "BottleOfWater", "TinyHealingPotion", "SmallHealingPotion", "MediumHealingPotion", "LargeHealingPotion"; + setarray @itemnames$, "Cactus Drink", "Cactus Potion", "Chocolate Bar", "Milk", "Orange Cupcake", "Red Apple", "Beer", "Bottle of Water", "Tiny Healing Potion", "Small Healing Potion", "Medium Healing Potion", "Large Healing Potion"; + setarray @itemeat, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0; + + setarray @menuitems$, "", "", "", "", "", "", "", "", "", "", "", "", ""; + @choices_nr = 0; + setarray @menuNames$, "", "", "", "", "", "", "", "", "", "", "", "", ""; + setarray @choice_eat, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0; + + @n = 0; + @ct = 0; + goto L_nloop; + +L_nloop: + @k$ = @items$[@n]; + if (countitem(@k$) == 0) + goto L_nloop_skip; + + @menuitems$[@ct] = @itemnames$[@n]; + @menuNames$[@ct] = @k$; + @choice_eat[@ct] = @itemeat[@n]; + @ct = @ct + 1; + goto L_nloop_skip; + +L_nloop_skip: + @n = @n+1; + if (@n < @items_nr) + goto L_nloop; + + @menuitems$[@ct] = "Nevermind"; + + menu + @menuitems$[0], L_MenuItems, + @menuitems$[1], L_MenuItems, + @menuitems$[2], L_MenuItems, + @menuitems$[3], L_MenuItems, + @menuitems$[4], L_MenuItems, + @menuitems$[5], L_MenuItems, + @menuitems$[6], L_MenuItems, + @menuitems$[7], L_MenuItems, + @menuitems$[8], L_MenuItems, + @menuitems$[9], L_MenuItems, + @menuitems$[10], L_MenuItems, + @menuitems$[11], L_MenuItems, + @menuitems$[12], L_MenuItems; + +L_MenuItems: + @menu = @menu - 1; + if (@menu == @ct) + goto L_Menu; + @choice$ = @menuNames$[@menu]; + @verb$ = "drinks"; + if (@choice_eat[@menu]) + @verb$ = "eats"; + if (@choice$ != "" && countitem(@choice$)) + goto L_consume; + goto L_Menu; + +L_consume: + mes "[Injured Mouboo]"; + mes "The mouboo " + @verb$ + " your " + getitemlink(@choice$) + "."; + delitem @choice$, 1; + next; + if (@choice$ == "LargeHealingPotion") + goto L_do_heal; + mes "[Injured Mouboo]"; + mes "Unfortunately, it seems to have had no effect."; + next; + goto L_Menu; + +L_do_heal: + callfunc "QuestMoubooHeal"; + end; + +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; + @Q_status = @STATE_KILLED_MOUBOO; + callsub S_Update_Var; + next; + goto L_Dead; + +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 "BlackTurtleneck", 1; + mes "You pull out the sweater and stuff it into your backpack."; + @Q_status = @STATE_TOOK_KILL_REWARD; + callsub S_Update_Var; + close; + +L_took_reward: + mes "[Dead Mouboo]"; + mes "You see a dead mouboo."; + close; + +L_Nopickup: + mes "Unfortunately, you can't carry any more."; + close; + +L_healed: + mes "[Mouboo]"; + mes "The mouboo is sleeping soundly, smiling in its dreams."; + close; + +L_close: + close; + +S_Update_Var: + @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