summaryrefslogblamecommitdiff
path: root/npc/012-1/injured-mouboo.txt
blob: 1aa780f5ed0f26541606d4aaa94ed6f0ae918003 (plain) (tree)



























                                                                                                                               


                                     



                                        
























                                                           
                                              
                            
                                                 
                                   
                                              















                                                                                
                                                                                                                                                      











                                                                                                                
                                                                                                       




                          
                                                                                                                                                                                                                              

                                                                                    
                                                                                 
                           
                                                                                 


                                                                 
                   
        

                                

                                  


                                     

                                           






                             

                                          










                                

                                

                             


                                      
                                         
                             
                               

                                   
                                                  





                               

                                                                            

             
                                             




                                                             
             
































                                                                                        
                                            



                                                                        




                                     



                                                       

              
         

                                                                     








                                                      
// 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";
        close;

L_nothing:
	mes "Your spell has no effect.";
        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 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;
	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$, "CactusDrink", "CactusPotion", "ChocolateBar", "Milk", "OrangeCupcake", "RedApple", "Beer", "BottleOfWater", "TinyHealingPotion", "SmallHealingPotion", "MediumHealingPotion", "LargeHealingPotion";
        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;
L_nloop:
        set @k$, @items$[@n];
        if (countitem(@k$) == 0)
		goto L_nloop_skip;

        set @name$, getitemname(@k$);
        set @menuItems$[@ct], @name$;
        set @menuNames$[@ct], @k$;
        set @choice_eat[@ct], @itemeat[@n];
        set @ct, @ct + 1;

L_nloop_skip:

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

	set @menuItems$[@ct], "Nevermind";

        menu @menuItems$[0], -,
             @menuItems$[1], -,
             @menuItems$[2], -,
             @menuItems$[3], -,
             @menuItems$[4], -,
             @menuItems$[5], -,
             @menuItems$[6], -,
             @menuItems$[7], -,
             @menuItems$[8], -,
             @menuItems$[9], -,
             @menuItems$[10], -,
             @menuItems$[11], -,
             @menuItems$[12], -;

        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 " + getitemname(@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";

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 "BlackTurtleneckSweater", 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;

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