summaryrefslogblamecommitdiff
path: root/npc/006-1/tree.txt
blob: df6dd2ef6722940858c9c25a05121b719578b3f6 (plain) (tree)
1
2
3
4
5
6
7
8
9







                                                    
                                                                        
 
                                          


                
                                             















































































































































                                                                                                                                          
function	script	QuestTreeTrigger	{
    @Q_MASK = NIBBLE_2_MASK;
    @Q_SHIFT = NIBBLE_2_SHIFT;

    @Q_status = (QUEST_MAGIC & @Q_MASK) >> @Q_SHIFT;
    @Q_status_lower = @Q_status & 3;
    @Q_status = (@Q_status & 12) >> 2;

    if (@Q_status & getarg(0, @flag)) goto L_close;  // already did that

    if (getarg(0, @flag) == 2) goto L_hug;
    goto L_Cont;

L_Cont:
    @Q_status = @Q_status | getarg(0, @flag);
    callsub S_Update_Var;

    if (@Q_status != 3) goto L_close;

    if (MAGIC_FLAGS & MFLAG_DID_CUTTREE) goto L_close;

    mes "Maybe it is just a trick of the light, but you can't help but think that the tree looks different... healthier, almost younger.";
    mes "[20000 experience points]";
    getexp 20000, 0;
    @value = 15;
    callfunc "QuestSagathaHappy";
    goto L_close;

L_hug:
    mes "You hug the tree.";
    next;
    goto L_Cont;

L_close:
    @Q_MASK = 0;
    @Q_SHIFT = 0;
    @Q_status = 0;
    @Q_status_lower = 0;
    @Q_wr_status = 0;
    @value = 0;
    return;

S_Update_Var:
    @Q_wr_status = (@Q_status << 2) | @Q_status_lower;
    QUEST_MAGIC = (QUEST_MAGIC & ~(@Q_MASK) | (@Q_wr_status << @Q_SHIFT));
    return;
}

function	script	QuestTreeTouch	{
    @Q_MASK = NIBBLE_2_MASK;
    @Q_SHIFT = NIBBLE_2_SHIFT;

    @Q_status = (QUEST_MAGIC & @Q_MASK) >> @Q_SHIFT;
    @Q_status = (@Q_status & 12) >> 2;

    if (@Q_status == 3) goto L_Happy;

    if ((MAGIC_FLAGS & (MFLAG_KNOWS_DRUIDTREE | MFLAG_KNOWS_CUTTREE)) == MFLAG_KNOWS_CUTTREE) goto L_cut;

    if ((MAGIC_FLAGS & (MFLAG_KNOWS_DRUIDTREE | MFLAG_KNOWS_CUTTREE)) == MFLAG_KNOWS_DRUIDTREE) goto L_Water;

    if ((MAGIC_FLAGS & (MFLAG_KNOWS_DRUIDTREE | MFLAG_KNOWS_CUTTREE)) > 0)   //i.e., both are set
        goto L_both;

    mes "[Dying Tree]";
    mes "You see a strange tree.";
    goto L_close;

L_cut:
    mes "[Dying Tree]";
    mes "This must be the tree that the earth spirit was referring to.";
    next;
    menu
        "Cut off a branch", L_do_cut,
        "Leave it alone", L_close;

L_Water:
    mes "[Dying Tree]";
    mes "This must be the druid tree.";
    next;
    menu
        "Water the tree", L_Givewater,
        "Kiss tree", L_kiss,
        "Leave it alone", L_close;

L_both:
    mes "[Dying Tree]";
    mes "This must be the druid tree that Wyara and the earth spirit were talking about.";
    next;
    menu
        "Water the tree", L_Givewater,
        "Kiss tree", L_kiss,
        "Cut off a branch", L_do_cut,
        "Leave it alone", L_close;

L_Givewater:
    if (countitem("BottleOfWater") < 1) goto L_No_Water;
    delitem "BottleOfWater", 1;
    getitem "EmptyBottle", 1;

    mes "[Dying Tree]";
    mes "You pour a bottle of water into the sand. The water dissipates quickly, without any effect.";
    goto L_close;

L_No_Water:
    mes "[Dying Tree]";
    mes "You don't have any water.";
    goto L_close;

L_kiss:
    mes "[Dying Tree]";
    mes "You pluck out a splinter from your lip.";
    mes "Somehow, you don't think that this helped.";
    goto L_close;

L_do_cut:
    if (countitem("BoneKnife") < 1) goto L_No_boneknife;

    if (MAGIC_FLAGS & MFLAG_DID_CUTTREE) goto L_really_cut;

    mes "[Dying Tree]";
    mes "You find a suitable branch and put your bone knife in position.";
    mes "Holding the branch, you have an uneasy feeling – as if something inside the tree were trying to resist you...";
    mes "Do you want to continue cutting?";
    next;
    menu
        "Nah... better not.", L_close,
        "Yes, let's cut!", L_really_cut;

L_really_cut:
    MAGIC_FLAGS = MAGIC_FLAGS | MFLAG_DID_CUTTREE;
    getitem "DruidTreeBranch", 1;
    mes "[Dying Tree]";
    mes "You cut off a branch from the tree.";
    mes "For an instant, you have an uneasy feeling, as if the branch were writhing in your hand...";
    goto L_close;

L_No_boneknife:
    mes "[Dying Tree]";
    mes "Try as you might, you can't seem to find a way to cut off a branch. Perhaps you need a different tool for cutting?";
    goto L_close;

L_Happy:
    mes "[Druid Tree]";
    mes "The tree looks younger and healthier now.";
    goto L_close;

L_close:
    @Q_MASK = 0;
    @Q_SHIFT = 0;
    @Q_status = 0;
    return;

}

006-1,82,59,0	script	#DruidTree0#_M	NPC400,{
    callfunc "QuestTreeTouch";
    close;
}