diff options
Diffstat (limited to 'world/map/npc/042-1/hasan.txt')
-rw-r--r-- | world/map/npc/042-1/hasan.txt | 107 |
1 files changed, 48 insertions, 59 deletions
diff --git a/world/map/npc/042-1/hasan.txt b/world/map/npc/042-1/hasan.txt index 1d5a67fd..0393e697 100644 --- a/world/map/npc/042-1/hasan.txt +++ b/world/map/npc/042-1/hasan.txt @@ -2,19 +2,25 @@ // Authors: Jenalya, alastrim 042-1.gat,111,68,0|script|Hasan|189,{ - mes "This NPC is disabled due to bugs, sorry."; - close; set @toll, 10000; - set @x, getx(0); - set @y, gety(0); + set @x, getx(); + set @y, gety(); - if ($@scorp) goto L_Fear; - if (FLAGS & FLAG_TUTORIAL_DONE) goto L_Tut_Done; - if ( (@y < 64)&&(@x < 110) || (@x < 107) ) goto L_Cliff_Up; - if (hasan == 4) goto L_Thank; - if (hasan == 3) goto L_Trick; - if (hasan > 0) goto L_Toll; + if (FLAGS & FLAG_TUTORIAL_DONE) + goto L_Tut_Done; + // Please consider rewriting this in terms of isin() + if ( (@y < 64)&&(@x < 110) || (@x < 107) ) + goto L_Cliff_Up; + // implicitly, $@ScorpionFighter is nonzero + if (getcharid(3) == $@ScorpionFighter) + goto L_Fear; + if (hasan == 4) + goto L_Thank; + if (hasan == 3) + goto L_Trick; + if (hasan > 0) + goto L_Toll; mes "[Unfriendly Guy]"; mes "\"Hey! You can't pass here.\""; @@ -82,14 +88,16 @@ L_Trick: menu "I don't have that much money!",L_NoPay, "No. (Scratch your head.)",-; - if ($@scorp == 1) goto L_Wait; + if ($@ScorpionFighter) + goto L_Wait; mes "While you're scratching your head, you see Kaan coming nearer to the cliff above you."; + set $@ScorpionTimer, 0; + set $@ScorpionFighter, getcharid(3); + set $@ScorpDeath, PC_DIE_COUNTER; + // close2 blocks close2; monster "042-1.gat",110,70,"Scorpion",1003,1, "Hasan::onScorpionDeath"; - set $@ScorpionFighter$, strcharinfo(0); - set $@scorp, 1; - set $@ScorpDeath, PC_DIE_COUNTER; - startnpctimer; + initnpctimer; end; L_Thank: @@ -159,102 +167,83 @@ L_Cliff_Up: L_SummonAgain: message strcharinfo(0), "Kaan is mad at you for your interference! He walks over to the edge of the cliff and throws a rock on top of your head, then lets another scorpion run just near Hasan!"; percentheal -100, 0; - if (attachrid(getcharid(3,$@ScorpionFighter$)) == 0) - end; message strcharinfo(0), "Kaan: \"Just go while he is distracted and no one is interfering!\""; monster "042-1.gat",110,70,"Scorpion",1003,1, "Hasan::onScorpionDeath"; end; L_Clean: killmonster "042-1.gat", "Hasan::onScorpionDeath"; + set $@ScorpionFighter, 0; set $@ScorpionTimer, 0; - set $@scorp, 0; + set $@ScorpDeath, 0; stopnpctimer; - setnpctimer 0; - if (attachrid(getcharid(3,$@ScorpionFighter$)) == 0) - end; - if (PC_DIE_COUNTER > $@ScorpDeath) goto L_MessageDeath; + end; + +L_TimeOut: message strcharinfo(0), "Hasan, with his eyes almost closed, trembling with fear, runs toward the scorpion and stabs it with all his strength! Seems like you took too long and the plan didn't work this time."; warp "042-1.gat", 112, 64; message strcharinfo(0), "Hasan: \"Hey you! I told you you cannot pass!\""; - set $@ScorpionFighter$, ""; - end; + goto L_Clean; L_MessageDeath: message strcharinfo(0), "Ouch... I should be more careful when fighting these monsters."; - end; + goto L_Clean; L_Wait: mes "There is a scorpion near Hasan already. I think Kaan is helping someone else... Maybe I should try the plan later."; close; OnTimer5000: - if(isloggedin(getcharid(3,$@ScorpionFighter$)) == 0) + if (attachrid($@ScorpionFighter) == 0) goto L_Clean; set $@ScorpionTimer, $@ScorpionTimer + 5; - if ($@ScorpionTimer >= 300) goto L_Clean; - attachrid(getcharid(3,$@ScorpionFighter$)); - if (PC_DIE_COUNTER > $@ScorpDeath) goto L_Clean; + if ($@ScorpionTimer >= 300) + goto L_TimeOut; + if (PC_DIE_COUNTER > $@ScorpDeath) + goto L_MessageDeath; setnpctimer 0; end; onScorpionDeath: - if (strcharinfo(0) != $@ScorpionFighter$) goto L_SummonAgain; - set $@scorp, 0; + if (getcharid(3) != $@ScorpionFighter) + goto L_SummonAgain; if (hasan != 3) - close; + end; set hasan, 4; message strcharinfo(0), "You saved Hasan."; - set $@ScorpionTimer, 0; - set $@ScorpionFighter$, ""; - stopnpctimer; - setnpctimer 0; - end; - -OnInit: - end; - initnpctimer; - stopnpctimer; + goto L_Clean; } 042-1.gat,111,68,0|script|#Toll|45,2,2,{ - end; OnTouch: - end; - if ($@scorp && $@ScorpionFighter$ == strcharinfo(0)) + // implicitly, $@ScorpionFighter is nonzero + if ($@ScorpionFighter == getcharid(3)) end; if ((FLAGS & FLAG_TUTORIAL_DONE) || (hasan == 4)) end; - if ($@scorp && $@ScorpionFighter$ != strcharinfo(0)) - goto L_Scared; - -L_Normal: warp "042-1.gat", 112, 64; message strcharinfo(0), "Hasan: \"Stop!\""; end; -L_Scared: - warp "042-1.gat", 112, 64; - message strcharinfo(0), "Hasan seems to be completely irrational. He waves his sharp knife in the air with his eyes closed and scratches you. Maybe you shouldn't get too close or you are going to get hurt."; - percentheal -10, 0; - end; - } 042-1.gat,117,76,0|script|#barrier|45,0,2{ end; + OnTouch: if (FLAGS & FLAG_TUTORIAL_DONE) goto L_Tut; warp "042-1.gat", 115, 76; - if ($@scorp && $@ScorpionFighter$ == strcharinfo(0)) - message strcharinfo(0), "Hasan: \" " + strcharinfo(0) + "! Please help me!\""; - if ($@scorp && $@ScorpionFighter$ != strcharinfo(0)) + // implicitly, $@ScorpionFighter is nonzero + if ($@ScorpionFighter == getcharid(3)) + message strcharinfo(0), "Hasan: \"" + strcharinfo(0) + "! Please help me!\""; + if ($@ScorpionFighter && $@ScorpionFighter != getcharid(3)) + // is this reachable? message strcharinfo(0), "Hasan: \"Hey! Stop right there!\""; - if (!$@scorp && hasan == 4) + if (hasan == 4) message strcharinfo(0), "Hasan: \"Please wait a moment!\""; end; L_Tut: |