// This file is part of the Tutorial
// Authors: Jenalya, alastrim
// Cleanup: o11c
042-2.gat,37,90,0|script|Tanisha|114,
{
if (isin("042-2.gat", 30, 85, 36, 89))
goto L_Fighting;
if (FLAGS & FLAG_TUTORIAL_DONE) goto L_Tut_Done;
callfunc "TutorialState";
if ((@tutorial == 11) && !(@tanisha_hasan)) goto L_Hasan;
if (@tutorial >= 8) goto L_Again;
if (@tutorial == 7) goto L_Stats;
if (@tutorial == 6) goto L_Fail;
if (@tutorial == 5) goto L_Maggots;
mes "[Tanisha]";
mes "\"Hey! You're up again!\"";
emotion EMOTE_HAPPY;
next;
mes "\"Are you feeling better?\"";
menu
"Yes, thank you.",L_Next,
"Yeah, but all my stuff is gone.",L_Next;
L_Next:
mes "[Tanisha]";
mes "\"I'm glad you're feeling better. It was really bad luck what happened to you.";
mes "Hey, I have an idea.\"";
next;
set @tutorial_tmp, 5;
callfunc "SetTutorialMask";
goto L_Maggots;
L_Maggots:
mes "[Tanisha]";
mes "\"There are some maggots eating the goods and I'm supposed to get rid of them.";
mes "But they're so yucky!\"";
next;
mes "\"If you kill them, I'll give you my knife.";
mes "What do you say?\"";
menu
"Sure!",L_Next1,
"That's your job.",L_Close;
L_Next1:
mes "[Tanisha]";
mes "\"Wonderful!\"";
// since the check happens here, it is actually possible to have
// more than $@Maggot_MaxHunters in the area at one time
// but that's not a BIG problem
if (getareausers("042-2.gat", 30, 85, 36, 89) >= $@Maggot_MaxHunters)
goto L_Crowded;
next;
goto L_Fight_Again;
L_Fight_Again:
mes "\"Ok, listen what to do.";
mes "Equip a weapon and kill the maggots.\"";
next;
mes "\"Press A to focus on a monster. With X you can focus and start attacking the same time.";
mes "But it also works to click on the monster with your mouse.\"";
next;
mes "\"If you press the left Shift button, you can abort your attack.\"";
next;
mes "\"Maggots aren't aggressive, so they won't harm you until you attack them first. Take them out one by one.\"";
next;
mes "\"Sometimes dead monsters leave some useful things. You can pick them up by pressing Z or clicking on the items with your mouse.\"";
close2;
// The getitem must be in the same place as set @tutorial, 2;
// since it was moved to after L_Fight_Again, add it conditionally
callfunc "TutorialState";
if (@tutorial == 5)
goto L_GetFightItems;
goto L_ContinueFight;
L_GetFightItems:
getitem "Knife", 1;
getitem "SlingShot", 1;
getitem "SlingBullet", 100;
goto L_ContinueFight;
L_ContinueFight:
set @tutorial_tmp, 6;
callfunc "SetTutorialMask";
set @Maggot_Kills, 0;
set @time, 0;
if (getareausers("042-2.gat", 30, 85, 36, 89) == 0)
initnpctimer;
warp "042-2.gat", 33, 87;
goto L_Summon;
L_Summon:
areamonster "042-2.gat", 30, 85, 36, 89, "", 1002, 1, "Tanisha::OnMaggotDeath";
end;
L_Stats:
mes "[Tanisha]";
mes "\"That was great! Like a professional exterminator!\"";
next;
mes "\"And it seems you became stronger and more experienced.";
mes "That means you got some status points which you can use to increase your abilities.\"";
next;
mes "\"Press F2 or click the Status button in the bar at the upper right to see your status window. There you can distribute your points on six different properties.\"";
next;
goto L_StatsRe;
L_StatsRe:
mes "\"Strength makes you hit harder and you can carry more weight.\"";
next;
mes "\"Agility increases your attack speed and your ability to dodge attacks.\"";
next;
mes "\"Vitality gives you more hit points and more defense against physical attacks.\"";
next;
mes "\"Intelligence is useful for magic attack and defense.";
mes "But as long as you don't know any magic, you shouldn't use your points on this.\"";
next;
mes "\"Dexterity is needed to hit monsters. It's also very important for the damage if you use a ranged weapon.\"";
next;
mes "\"Luck gives you the chance to do critical hits and lowers the chance to receive a critical hit from your opponent.\"";
next;
mes "\"Think about how you want to play before assigning the points.\"";
next;
mes "\"Also I heard rumors about a strange guy lurking around in the desert south of Tulimshar who can help you to forget your abilities!\"";
mes "Tanisha looks at you with wide opened eyes.";
next;
mes "[Tanisha]";
mes "\"But I doubt he'd do that without a service in return.\"";
if (@tutorial != 7)
goto L_Close;
goto L_Money;
L_Money:
next;
mes "[Tanisha]";
mes "\"Hey, you are so smart taking out all that yucky maggots for me.";
mes "You can have my pocket money. Here.\"";
set Zeny, Zeny + 5;
next;
goto L_Advice;
L_Advice:
mes "\"When you go to Tulimshar, you should see Bernard. He can make a delicious soup!";
mes "Good luck!\"";
emotion EMOTE_HAPPY;
if (@tutorial == 7)
goto L_SetTutorial;
goto L_Close;
L_SetTutorial:
set @tutorial_tmp, 8;
callfunc "SetTutorialMask";
goto L_Close;
L_Again:
mes "[Tanisha]";
mes "\"Hi there! Is everything alright? Do you have questions?\"";
menu
"Yes, could you explain again about...",L_Explain,
"No, thanks.",L_Close;
L_Explain:
menu
"... how to fight?",L_Fight,
"... monsters?",L_Mob,
"... status points?",L_StatsRe,
"... what to do in Tulimshar?",L_Advice,
"... nevermind.",L_Close;
L_Fight:
mes "[Tanisha]";
mes "\"Press A to focus on a monster. With X you can focus and attack.";
mes "But it also works to click on the monster with your mouse.\"";
next;
mes "\"If you press the left Shift button, you can abort your attack.\"";
next;
mes "\"Sometimes dead monsters leave some useful things. You can pick them up with pressing Z or clicking on the items with your mouse.\"";
next;
mes "\"If you feel exhausted from battle you can sit down by pressing S to recover faster.\"";
goto L_Close;
L_Mob:
mes "[Tanisha]";
mes "\"I don't know much about monsters, I'm just a little girl. But I know a few things.";
mes "There are several types of monsters...Aggressive, Neutral, and Assistants.\"";
next;
mes "\"Aggressive monsters will attack you as soon as they see you.\"";
next;
mes "\"Neutral monsters are peaceful until they get attacked.\"";
next;
mes "\"Assistants are monsters who help each other.\"";
goto L_Close;
L_Hasan:
mes "[Tanisha]";
mes "\"Hi there! Is everything alright? Do you have questions?\"";
menu
"A guy named Hasan won't let me enter Tulimshar.",L_Next3,
"Yes, could you explain again about...",L_Explain,
"No, thanks.",L_Close;
L_Next3:
mes "[Tanisha]";
mes "\"Bah, Hasan. He's a jerk. But he's very strong.\"";
next;
mes "\"The only thing he's afraid of are scorpions.";
mes "I'm not sure why, some bad experience when he was a child.";
mes "That was before I was born.\"";
set TUTORIAL, TUTORIAL | $@TanishaHasanBit;
goto L_Close;
L_Tut_Done:
mes "[Tanisha]";
mes "\"These yucky maggots! They're eating our goods!";
mes "No matter how many of them you kill, they always come back.\"";
mes "She sighs.";
next;
mes "[Tanisha]";
mes "\"Do you have any questions?\"";
menu
"Yes, could you explain about...", L_Explain,
"No, thanks.", L_Close;
L_Crowded:
mes "[Tanisha]";
mes "\"That's great! But...";
mes "it seems a little crowded in there.\"";
next;
mes "\"Let's wait a short while.\"";
goto L_Close;
L_Sleep:
warp "042-2.gat", 36, 90;
mes "[Tanisha]";
mes "\"What are you doing in there?";
mes "Sleeping?";
mes "Come back when you're serious.\"";
set @Maggot_Kills, 0;
set @time, 0;
close2;
if (getareausers("042-2.gat", 30, 85, 36, 89) == 0)
goto L_CleanUp;
end;
L_Fail:
mes "Tanisha seems to be trying hard to supress laughter.";
mes "[Tanisha]";
mes "\"The maggots defeated you.\"";
next;
mes "She bursts out with laughter.";
mes "[Tanisha]";
mes "\"Oops, I'm sorry. It's just too funny.";
mes "Do you want to try it again?\"";
menu
"Sure!", L_Next2,
"No, I need a rest.", L_Close;
L_Next2:
if (getareausers("042-2.gat", 30, 85, 36, 89) >= $@Maggot_MaxHunters)
goto L_Crowded;
goto L_Fight_Again;
L_Fighting:
message strcharinfo(0), "Tanisha: I believe in you!";
end;
OnTimer1000:
setnpctimer 0;
if (getareausers("042-2.gat", 30, 85, 36, 89) == 0)
goto L_CleanUp;
// This is needed because multiple players can be in the area at once
areatimer "042-2.gat", 30, 85, 36, 89, 0, "Tanisha::OnTick";
end;
L_CleanUp:
killmonster "042-2.gat", "Tanisha::OnMaggotDeath";
set $@Maggot_Hunters, 0;
stopnpctimer;
areamonster "042-2.gat", 30, 85, 36, 89, "", 1002, 1, "Tanisha::OnMaggotDeath";
end;
OnTick:
set @time, @time + 1;
if (@time > 300)
goto L_Sleep;
if (isdead())
end;
if (Hp > 20)
end;
heal MaxHp, 0;
message strcharinfo(0), "Tanisha: You're doing good!";
end;
OnMaggotDeath:
if (@Maggot_Kills == 1)
message strcharinfo(0), "Tanisha: Aaahhhh... another one! It will crawl up your legs!";
if (@Maggot_Kills == 2)
message strcharinfo(0), "Tanisha: Ohh... Irrhk... Eeeeww... They just appear from nowhere!";
if (@Maggot_Kills == 3)
message strcharinfo(0), "Tanisha: Yuck... I think I am getting sick.";
if (isin("042-2.gat", 30, 85, 36, 89))
set @Maggot_Kills, @Maggot_Kills + 1;
if (@Maggot_Kills < 5)
goto L_Summon;
// else, complete
warp "042-2.gat", 36, 90;
set @tutorial_tmp, 7;
callfunc "SetTutorialMask";
set @Maggot_Kills, 0;
set @time, 0;
if (getareausers("042-2.gat", 30, 85, 36, 89) == 0)
goto L_CleanUp;
end;
L_Close:
set @menu, 0;
close;
OnInit:
set $@Maggot_MaxHunters, 4;
areamonster "042-2.gat", 30, 85, 36, 89, "", 1002, 1, "Tanisha::OnMaggotDeath";
end;
}