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; }