summaryrefslogblamecommitdiff
path: root/world/map/npc/012-1/injured-mouboo.txt
blob: 2aefb0f72976e1614bc162f689f086ca4de7a0dd (plain) (tree)
1
2
3
4

                                                                                                    
                               
 
















                                                                                             
                                                                                                                   








                                                                                                                           

           

          
                                    

           

             




                                                  

 
                                
 

                                 
 


                                                       
 



                                   
 





                                             
 


                                                                            
                

       



                                            
                         

          
                           
                                                                                                                                                    







                                                                                                            

               
                           
                                                                                                  

                

       

                                                                                                                                                                                                                          
                                                                                                                                                                                                                                             
                                                                                
 






                                                                             
                 
 
        


                            
 
                                          


                                       
                      

             






                                      














                                     









                                              

          
                           
                                                                        







                                                         

          
                               
        

       







                                                                                    

               





                                                                     
                

       




                                                                     
                                 



                                                                    

              


                                 

           

                                                   
 
         


                                                                 
 


          
             




                                                  
 
// 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.";
    next;
    set @value, 15;
    callfunc "QuestSagathaHappy";
    close2;
    return;

L_nothing:
    mes "Your spell has no effect.";
    close2;
    return;

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,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;
    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:
    set @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$, "", "", "", "", "", "", "", "", "", "", "", "", "";
    set @choices_nr, 0;
    setarray @menuNames$, "", "", "", "", "", "", "", "", "", "", "", "", "";
    setarray @choice_eat, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;

    set @n, 0;
    set @ct, 0;
    goto L_nloop;

L_nloop:
    set @k$, @items$[@n];
    if (countitem(@k$) == 0)
        goto L_nloop_skip;

    set @menuItems$[@ct], @itemnames$[@n];
    set @menuNames$[@ct], @k$;
    set @choice_eat[@ct], @itemeat[@n];
    set @ct, @ct + 1;
    goto L_nloop_skip;

L_nloop_skip:
    set @n, @n+1;
    if (@n < @items_nr)
        goto L_nloop;

    set @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:
    set @menu, @menu - 1;
    if (@menu == @ct)
        goto L_menu;
    set @choice$, @menuNames$[@menu];
    set @verb$, "drinks";
    if (@choice_eat[@menu])
        set @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;
    set @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.";
    set @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:
    set @Q_wr_status, @Q_status | @Q_status_upper;
    set QUEST_MAGIC,
        (QUEST_MAGIC & ~(@Q_MASK)
        | (@Q_wr_status << @Q_SHIFT));
    return;
}