summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--conf/char_athena.conf8
-rw-r--r--data/004-1.wlkbin15565 -> 15565 bytes
-rw-r--r--data/022-1.wlkbin19354 -> 19354 bytes
-rw-r--r--data/033-1.wlkbin17668 -> 17668 bytes
-rw-r--r--data/034-1.wlkbin22788 -> 22788 bytes
-rw-r--r--data/041-1.wlkbin0 -> 15629 bytes
-rw-r--r--data/042-1.wlkbin0 -> 14804 bytes
-rw-r--r--data/042-2.wlkbin0 -> 7704 bytes
-rw-r--r--data/resnametable.txt3
-rw-r--r--db/const.txt1
-rw-r--r--npc/001-1/guide.txt10
-rw-r--r--npc/004-1/_warps.txt1
-rw-r--r--npc/022-1/_import.txt14
-rw-r--r--npc/022-1/tutorial.txt9
-rw-r--r--npc/041-1/_import.txt5
-rw-r--r--npc/041-1/_mobs.txt39
-rw-r--r--npc/041-1/_warps.txt4
-rw-r--r--npc/041-1/tutorial.txt9
-rw-r--r--npc/042-1/_import.txt8
-rw-r--r--npc/042-1/_mobs.txt8
-rw-r--r--npc/042-1/_warps.txt7
-rw-r--r--npc/042-1/hasan.txt259
-rw-r--r--npc/042-1/kaan.txt159
-rw-r--r--npc/042-1/malik.txt21
-rw-r--r--npc/042-1/valon.txt38
-rw-r--r--npc/042-2/_import.txt7
-rw-r--r--npc/042-2/_mobs.txt8
-rw-r--r--npc/042-2/_warps.txt6
-rw-r--r--npc/042-2/mapflags.txt1
-rw-r--r--npc/042-2/sorfina.txt288
-rw-r--r--npc/042-2/tanisha.txt275
-rw-r--r--npc/_import.txt3
32 files changed, 1172 insertions, 19 deletions
diff --git a/conf/char_athena.conf b/conf/char_athena.conf
index 243aa97d..dd387fd2 100644
--- a/conf/char_athena.conf
+++ b/conf/char_athena.conf
@@ -44,13 +44,13 @@ backup_txt_flag: no
backup_txt: save/athena_backup.txt
// Start point, Map name followed by coordinates (x,y)
-start_point: 001-1.gat,29,28
+start_point: 042-2.gat,26,26
// Starting weapon for new characters
-start_weapon: 1201
+start_weapon: 0
// Starting armor for new characters
-start_armor: 1202
+start_armor: 0
// Starting zeny for new characters
start_zeny: 50
@@ -75,7 +75,7 @@ char_name_option: 1
// Note: add 'space' between 2 others letters/symbols.
// default: void.
// char_name_letters: [ ] { } , . | - # @ ! ~ ` ; : " " ? / \ = + < >
-char_name_letters: a b c d e f g h i j k l m n o p r s t q u v w x y z A B C D E F G H I J K L M N O P R S T Q U V W X Y Z 1 2 3 4 5 6 7 8 9 0 - _ + = ! @ $ % ^ & * ( ) : ; ' < > , . ? / ~ ` | \
+char_name_letters: a b c d e f g h i j k l m n o p r s t q u v w x y z A B C D E F G H I J K L M N O P R S T Q U V W X Y Z 1 2 3 4 5 6 7 8 9 0 - _ + = ! @ $ % ^ & * ( ) : ; ' < > , . ? / ~ ` | \
// Filename of the file which receives the online players list in text
online_txt_filename: online.txt
diff --git a/data/004-1.wlk b/data/004-1.wlk
index 27423757..435ee4a7 100644
--- a/data/004-1.wlk
+++ b/data/004-1.wlk
Binary files differ
diff --git a/data/022-1.wlk b/data/022-1.wlk
index 18f68fed..01da8bf6 100644
--- a/data/022-1.wlk
+++ b/data/022-1.wlk
Binary files differ
diff --git a/data/033-1.wlk b/data/033-1.wlk
index 87e0e43e..6d1630bf 100644
--- a/data/033-1.wlk
+++ b/data/033-1.wlk
Binary files differ
diff --git a/data/034-1.wlk b/data/034-1.wlk
index 49dc84c4..eaaa8b5e 100644
--- a/data/034-1.wlk
+++ b/data/034-1.wlk
Binary files differ
diff --git a/data/041-1.wlk b/data/041-1.wlk
new file mode 100644
index 00000000..df0ec560
--- /dev/null
+++ b/data/041-1.wlk
Binary files differ
diff --git a/data/042-1.wlk b/data/042-1.wlk
new file mode 100644
index 00000000..2a289545
--- /dev/null
+++ b/data/042-1.wlk
Binary files differ
diff --git a/data/042-2.wlk b/data/042-2.wlk
new file mode 100644
index 00000000..ca2d33e8
--- /dev/null
+++ b/data/042-2.wlk
Binary files differ
diff --git a/data/resnametable.txt b/data/resnametable.txt
index 0db3e9a5..fa526488 100644
--- a/data/resnametable.txt
+++ b/data/resnametable.txt
@@ -78,4 +78,7 @@
032-3.gat#032-3.wlk#
033-1.gat#033-1.wlk#
034-1.gat#034-1.wlk#
+041-1.gat#041-1.wlk#
+042-1.gat#042-1.wlk#
+042-2.gat#042-2.wlk#
botcheck.gat#botcheck.wlk#
diff --git a/db/const.txt b/db/const.txt
index d694e2c7..f7b12451 100644
--- a/db/const.txt
+++ b/db/const.txt
@@ -259,6 +259,7 @@ FLAG_TOWEL_HELPED 16 // gave the towel npc the stuff he wants
FLAG_TOWEL_COMPLETED 32 // got the towel from the towel npc
FLAG_ANDRA_HELPED 64 // Knows Andra and agreed to help her
FLAG_ROSSI_COMPLETED 128 // Completed the Rossi Quest
+FLAG_TUTORIAL_DONE 256 // player completed tutorial (or entered the tutorial area from outside after it was added)
DOCK_tulimshar 1
DOCK_hurnscald 2
diff --git a/npc/001-1/guide.txt b/npc/001-1/guide.txt
index d00a2a6f..be04e307 100644
--- a/npc/001-1/guide.txt
+++ b/npc/001-1/guide.txt
@@ -1,6 +1,6 @@
//
-001-1.gat,32,27,0 script Ian 102,4,4,{
+001-1.gat,32,27,0 script Ian 102,{
// This line is only relevant for players, who started before the timestamp was introduced.
// Set the graduation cap flag at the right position.
// It is a bugfix
@@ -40,7 +40,7 @@ L_Fight:
L_Items:
mes "[Ian the Guide]";
mes "\"There are three types of items.";
- mes "They can be Consumables, Equipment, or Miscellaneous\"";
+ mes "They can be Consumables, Equipment or Miscellaneous\"";
next;
mes "[Ian the Guide]";
mes "\"Consumable items such as Potions, can be used only once.";
@@ -176,10 +176,4 @@ L_TooMany:
mes "\"I wanted to give you something, but you don't have room for it.\"";
next;
return;
-
-OnTouch:
- if (TUT_var != 0) close;
- callfunc "GameRules";
- mes "Ian, the trainer, can help you get to know the game.";
- close;
}
diff --git a/npc/004-1/_warps.txt b/npc/004-1/_warps.txt
index 45c98920..eb232ec8 100644
--- a/npc/004-1/_warps.txt
+++ b/npc/004-1/_warps.txt
@@ -5,3 +5,4 @@
004-1.gat,37,111 warp ToBeach 1,-1,003-1.gat,141,21
004-1.gat,80,31 warp ToHouse -1,-1,004-2.gat,21,28
004-1.gat,86,27 warp To2ndFloor -1,-1,004-2.gat,57,65
+004-1.gat,68,19 warp to041-1 1,-1,041-1.gat,76,94
diff --git a/npc/022-1/_import.txt b/npc/022-1/_import.txt
index f0e9cc73..8f72cbc0 100644
--- a/npc/022-1/_import.txt
+++ b/npc/022-1/_import.txt
@@ -1,9 +1,9 @@
-// Map 022-1: Tulimshar
// This file is generated automatically. All manually changes will be removed when running the Converter.
map: 022-1.gat
-npc: npc/022-1/_mobs.txt
-npc: npc/022-1/_warps.txt
-npc: npc/022-1/dock.txt
-npc: npc/022-1/elanore.txt
-npc: npc/022-1/ferry_master.txt
-npc: npc/022-1/mapflags.txt
+npc: npc/022-1_Tulimshar/_mobs.txt
+npc: npc/022-1_Tulimshar/_warps.txt
+npc: npc/022-1_Tulimshar/dock.txt
+npc: npc/022-1_Tulimshar/elanore.txt
+npc: npc/022-1_Tulimshar/ferry_master.txt
+npc: npc/022-1_Tulimshar/mapflags.txt
+npc: npc/022-1_Tulimshar/tutorial.txt
diff --git a/npc/022-1/tutorial.txt b/npc/022-1/tutorial.txt
new file mode 100644
index 00000000..a0166921
--- /dev/null
+++ b/npc/022-1/tutorial.txt
@@ -0,0 +1,9 @@
+// This file is part of the Tutorial
+// Author: Jenalya
+// if you enter the tutorial area, it is set to be already done
+
+022-1.gat,19,37,0 script #tutorial 127,0,2{
+ set FLAGS, FLAGS | FLAG_TUTORIAL_DONE;
+ warp "042-1.gat", 114, 76;
+ end;
+}
diff --git a/npc/041-1/_import.txt b/npc/041-1/_import.txt
new file mode 100644
index 00000000..736f2859
--- /dev/null
+++ b/npc/041-1/_import.txt
@@ -0,0 +1,5 @@
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+map: 041-1.gat
+npc: npc/041-1/_mobs.txt
+npc: npc/041-1/_warps.txt
+npc: npc/041-1/tutorial.txt
diff --git a/npc/041-1/_mobs.txt b/npc/041-1/_mobs.txt
new file mode 100644
index 00000000..91741bbb
--- /dev/null
+++ b/npc/041-1/_mobs.txt
@@ -0,0 +1,39 @@
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+// 041-1 mobs
+
+041-1.gat,56,55,18,9 monster Scorpion 1003,3,100000,30000,Mob041-1::On1003
+041-1.gat,76,67,18,9 monster Scorpion 1003,3,100000,30000,Mob041-1::On1003
+041-1.gat,75,84,18,9 monster Scorpion 1003,3,100000,30000,Mob041-1::On1003
+041-1.gat,36,34,13,20 monster Scorpion 1003,3,100000,30000,Mob041-1::On1003
+041-1.gat,30,30,10,48 monster Sea Slime 1033,3,100000,30000,Mob041-1::On1033
+041-1.gat,34,13,10,9 monster Scorpion 1003,3,100000,30000,Mob041-1::On1003
+041-1.gat,35,7,3,2 monster Black Scorpion 1009,1,100000,30000,Mob041-1::On1009
+041-1.gat,41,49,3,2 monster Black Scorpion 1009,1,100000,30000,Mob041-1::On1009
+041-1.gat,70,75,21,9 monster Black Scorpion 1009,1,100000,30000,Mob041-1::On1009
+041-1.gat,75,57,18,9 monster Red Scorpion 1004,3,100000,30000,Mob041-1::On1004
+041-1.gat,58,64,18,9 monster Red Scorpion 1004,3,100000,30000,Mob041-1::On1004
+
+
+041-1.gat,0,0,0 script Mob041-1 -1,{
+On1003:
+ set @mobID, 1003;
+ callfunc "MobPoints";
+ break;
+
+On1004:
+ set @mobID, 1004;
+ callfunc "MobPoints";
+ break;
+
+On1009:
+ set @mobID, 1009;
+ callfunc "MobPoints";
+ break;
+
+On1033:
+ set @mobID, 1033;
+ callfunc "MobPoints";
+ break;
+
+ end;
+}
diff --git a/npc/041-1/_warps.txt b/npc/041-1/_warps.txt
new file mode 100644
index 00000000..16e9f68c
--- /dev/null
+++ b/npc/041-1/_warps.txt
@@ -0,0 +1,4 @@
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+// 041-1 warps
+
+041-1.gat,76,95 warp to004-1 1,-1,004-1.gat,68,20
diff --git a/npc/041-1/tutorial.txt b/npc/041-1/tutorial.txt
new file mode 100644
index 00000000..866bc145
--- /dev/null
+++ b/npc/041-1/tutorial.txt
@@ -0,0 +1,9 @@
+// This file is part of the Tutorial
+// Author: Jenalya
+// if you enter the tutorial area, it is set to be already done
+
+041-1.gat,33,5,0 script #tutorial 127,1,0{
+ set FLAGS, FLAGS | FLAG_TUTORIAL_DONE;
+ warp "042-1.gat", 17, 80;
+ end;
+}
diff --git a/npc/042-1/_import.txt b/npc/042-1/_import.txt
new file mode 100644
index 00000000..d3e2c8b2
--- /dev/null
+++ b/npc/042-1/_import.txt
@@ -0,0 +1,8 @@
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+map: 042-1.gat
+npc: npc/042-1/_mobs.txt
+npc: npc/042-1/_warps.txt
+npc: npc/042-1/hasan.txt
+npc: npc/042-1/kaan.txt
+npc: npc/042-1/malik.txt
+npc: npc/042-1/valon.txt
diff --git a/npc/042-1/_mobs.txt b/npc/042-1/_mobs.txt
new file mode 100644
index 00000000..f439ba03
--- /dev/null
+++ b/npc/042-1/_mobs.txt
@@ -0,0 +1,8 @@
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+// 042-1 mobs
+
+
+
+042-1.gat,0,0,0 script Mob042-1 -1,{
+ end;
+}
diff --git a/npc/042-1/_warps.txt b/npc/042-1/_warps.txt
new file mode 100644
index 00000000..d1a7aa3d
--- /dev/null
+++ b/npc/042-1/_warps.txt
@@ -0,0 +1,7 @@
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+// 042-1 warps
+
+042-1.gat,87,76 warp toStorehouse -1,-1,042-2.gat,44,91
+042-1.gat,77,76 warp toStorehouse -1,-1,042-2.gat,22,91
+042-1.gat,62,62 warp toInside -1,-1,042-2.gat,29,60
+042-1.gat,37,56 warp toInside -1,-1,042-2.gat,44,29
diff --git a/npc/042-1/hasan.txt b/npc/042-1/hasan.txt
new file mode 100644
index 00000000..db32179d
--- /dev/null
+++ b/npc/042-1/hasan.txt
@@ -0,0 +1,259 @@
+// This file is part of the Tutorial
+// Authors: Jenalya, alastrim
+
+042-1.gat,111,68,0 script Hasan 189,{
+
+ set @toll, 10000;
+ set @x, getx(0);
+ set @y, gety(0);
+
+ 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;
+
+ mes "[Unfriendly Guy]";
+ mes "\"Hey! You can't pass here.\"";
+ next;
+ menu
+ "Why not?",-,
+ "Who says that?",-;
+ mes "[Unfriendly Guy]";
+ mes "\"Me, Hasan the mighty, decided to put a toll on this way.\"";
+ next;
+L_Toll:
+ mes "[Hasan]";
+ mes "\"Give me " + @toll + "GP, and I may let you pass.\"";
+ if (hasan == 0)
+ set hasan, 1;
+ next;
+ if (zeny >= @toll)
+ menu
+ "Ok, here you go.",L_Pay,
+ "What? I don't have so much money!",L_NoPay,
+ "We'll see if you can stop me!",L_Fight;
+ menu
+ "What? I don't have so much money!",L_NoPay,
+ "We'll see if you can stop me!",L_Fight;
+ close;
+
+L_NoPay:
+ mes "[Hasan]";
+ mes "\"That's not my problem. You have to stay here then.\"";
+ close;
+
+L_Fight:
+ mes "He laughs derisively.";
+ mes "[Hasan]";
+ mes "\"Do you really think you can beat me?\"";
+ mes "He pulls out a nasty looking dagger and stabs it in your direction.";
+ set hp, 1;
+ mes "That hurt! You begin to think searching for a different solution might be healthier.";
+ close;
+
+L_Pay:
+ if (zeny < @toll)
+ goto L_Cheat;
+ set zeny, zeny - @toll;
+ mes "He grins gloatingly.";
+ mes "[Hasan]";
+ mes "\"Very well. You may pass.\"";
+ set hasan, 0;
+ set kaan, 0;
+ set sorfina, 0;
+ set tanisha, 0;
+ set maggot, 0;
+ set FLAGS, FLAGS | FLAG_TUTORIAL_DONE;
+ close;
+
+L_Cheat:
+ mes "[Hasan]";
+ mes "\"Don't dare to cheat on me!\"";
+ close;
+
+L_Trick:
+ mes "[Hasan]";
+ mes "\"Are you going to pay now? " + @toll + "GP, and I may let you pass.\"";
+ next;
+ menu
+ "I don't have so much money!",L_NoPay,
+ "No. (Scratch your head.)",-;
+ if ($@scorp == 1) goto L_Wait;
+ mes "While you're scratching your head, you see Kaan coming nearer to the cliff above you.";
+ 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;
+ end;
+
+L_Thank:
+ mes "[Hasan]";
+ mes "\"You - you saved me!";
+ mes "I tried to get your money and you saved me!\"";
+ next;
+ mes "\"Hey, you're a really cool person.";
+ mes "I mean, how you finished that ghastly scorpion!";
+ mes "Amazing!\"";
+ next;
+ mes "\"I tell you something: Cool persons are allowed to pass for free.";
+ mes "And you can have my Sharp Knife.\"";
+ getitem "SharpKnife", 1;
+ next;
+ set hasan, 0;
+ set kaan, 0;
+ set sorfina, 0;
+ set tanisha, 0;
+ set maggot, 0;
+ set FLAGS, FLAGS | FLAG_TUTORIAL_DONE;
+ mes "\"You want to go to the bazaar, right? Shall I bring you there?\"";
+ next;
+ menu
+ "Sure, thanks.",-,
+ "I'll try to find the way myself.",L_Explore,
+ "Could you just explain me the way?",L_Directions;
+ warp "001-1.gat", 44, 40;
+ close;
+
+L_Explore:
+ mes "[Hasan]";
+ mes "\"Alright. Take care!\"";
+ close;
+
+L_Directions:
+ mes "[Hasan]";
+ mes "\"Ok, when you leave here follow the road past the docks until you reach the old city gates.\"";
+ next;
+ mes "\"Pass through them and at the crossway, just go west and then south until you reach some other gateway.\"";
+ next;
+ mes "\"Behind it there is the bazaar of Tulimshar.\"";
+ close;
+
+L_Fear:
+ mes "[Hasan]";
+ mes "\"Sc-sc-sco-scorpion!\"";
+ mes "He seems close to tears.";
+ close;
+
+L_Tut_Done:
+ mes "[Hasan]";
+ if (baselevel >= 40)
+ mes "\"Welcome to the suburbs of Tulimshar. I wonder what an experienced adventurer like you is doing here.\"";
+ if (baselevel < 40)
+ mes "\"Bah, nothing interesting is happening here.\"";
+ close;
+
+L_Distance:
+ mes "There is a person in some distance. He doesn't seem to notice you, maybe you should go closer.";
+ close;
+
+L_Cliff_Up:
+ mes "You see a guy in shaby clothes when you look down the cliff.";
+ close;
+
+L_SummonAgain:
+ message strcharinfo(0), "Kaan is mad with your interference! He comes near the cliff and throws a rock on the top of your head, and let another scorpion run just near Hasan!";
+ percentheal -100, 0;
+ attachrid(getcharid(3,$@ScorpionFighter$));
+ 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 $@ScorpionTimer, 0;
+ set $@scorp, 0;
+ stopnpctimer;
+ setnpctimer 0;
+ if (isloggedin(getcharid(3,$@ScorpionFighter$))==0) end;
+ attachrid(getcharid(3,$@ScorpionFighter$));
+ if (PC_DIE_COUNTER > $@ScorpDeath) goto L_MessageDeath;
+ message strcharinfo(0), "Hasan, with his eyes almost closed, trembling with fear, runs toward the scorpion and stabs it with all his strenght! Seems like it 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;
+
+L_MessageDeath:
+ message strcharinfo(0), "Ouch... I should be more careful when fighting these monsters.";
+ end;
+
+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) 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;
+ setnpctimer 0;
+ end;
+
+onScorpionDeath:
+ if (strcharinfo(0) != $@ScorpionFighter$) goto L_SummonAgain;
+ set $@scorp, 0;
+ if (hasan != 3)
+ close;
+ set hasan, 4;
+ message strcharinfo(0), "You saved Hasan.";
+ set $@ScorpionTimer, 0;
+ set $@ScorpionFighter$, "";
+ stopnpctimer;
+ setnpctimer 0;
+ end;
+
+OnInit:
+ initnpctimer;
+ stopnpctimer;
+
+}
+
+042-1.gat,111,68,0 script #Toll 45,2,2,{
+
+ end;
+
+OnTouch:
+ if ($@scorp && $@ScorpionFighter$ == strcharinfo(0))
+ 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 hits you. Maybe you shoudn'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))
+ message strcharinfo(0), "Hasan: \"Hey! Stop right there!\"";
+ if (!$@scorp && hasan == 4)
+ message strcharinfo(0), "Hasan: \"Please wait a moment!\"";
+ end;
+L_Tut:
+ warp "022-1.gat", 23, 38;
+ end;
+
+
+}
diff --git a/npc/042-1/kaan.txt b/npc/042-1/kaan.txt
new file mode 100644
index 00000000..494dc874
--- /dev/null
+++ b/npc/042-1/kaan.txt
@@ -0,0 +1,159 @@
+// This file is part of the Tutorial
+// Author: Jenalya
+
+042-1.gat,106,70,0 script Kaan 160,{
+
+ if (FLAGS & FLAG_TUTORIAL_DONE) goto L_Tut_Done;
+ if (hasan == 4) goto L_Hasan_Saved;
+ if ($@ScorpionFighter$ == strcharinfo(0)) goto L_Run;
+ if (kaan == 4) goto L_Plan;
+ if (kaan == 3) goto L_Trick;
+ if (kaan == 2) goto L_Out;
+ if (kaan == 1) goto L_Tanisha;
+
+ mes "[Young Man]";
+ mes "\"You're the person Tanisha brought here, right?";
+ mes "My name is Kaan, I'm her brother.\"";
+ next;
+ mes "\"She was babbling at me about it all the morning until I sent her to take care of the maggots in the storehouse.\"";
+ next;
+ mes "Kaan grins mischievous";
+ mes "[Kaan]";
+ mes "\"She hates maggots.\"";
+ next;
+ mes "\"Maybe you should go to see her, she was really upset about what happened with you.\"";
+ set kaan, 1;
+ if (tanisha >= 3)
+ goto L_Tanisha2;
+ close;
+
+L_Tanisha2:
+ menu
+ "I already did and helped her with the maggots.",L_Tanisha3,
+ "I talked to her, and she's done with the maggots.",L_Tanisha3;
+
+L_Tanisha:
+ mes "[Kaan]";
+ mes "\"Did you already talk to Tanisha?\"";
+ if (tanisha < 3)
+ close;
+ next;
+ menu
+ "Yes, I helped her with the maggots.",-,
+ "Yeah, and she's done with the maggots.",-;
+L_Tanisha3:
+ mes "[Kaan]";
+ mes "\"Ah, that are good news.";
+ mes "You know, we have a lot of problems with bugs here.\"";
+ next;
+ mes "\"If we don't watch out the maggots will eat all of our stocks.";
+ mes "And the desert is crawling with scorpions.";
+ mes "They also come here and you need to watch out not to step on them.\"";
+ next;
+ mes "\"But I took care about that problem.\"";
+ mes "He looks very proud.";
+ next;
+ mes "\"I build this fence to keep them out.\"";
+ next;
+ menu
+ "Impressive! Just a bit... skew.",-,
+ "Wow, it looks very - ahm, unconventional.",-;
+ mes "[Kaan]";
+ mes "\"Well, it keeps the scorpions out. That's all that matters.\"";
+ next;
+ mes "\"Are you going to visit main Tulimshar?";
+ mes "The bazaar there is a wondeful place! Traders, entertainers, adventurers - it's very exciting there.\"";
+ next;
+ mes "\"And Ian the trainer is hanging around there often. You should talk to him, he's a smart guy.\"";
+ set kaan, 2;
+ if (hasan)
+ menu
+ "A guy named Hasan doesn't let me enter main Tulimshar.",L_Hasan,
+ "Thanks for the advice.",L_Close;
+ close;
+
+L_Out:
+ mes "[Kaan]";
+ mes "\"Hello! How are you? Did you already visit main Tulimshar?\"";
+ next;
+ if (hasan)
+ menu
+ "A guy named Hasan doesn't let me enter main Tulimshar.",L_Hasan,
+ "Not yet.",L_Close;
+ menu
+ "Not yet.",L_Close;
+ close;
+
+L_Hasan:
+ mes "[Kaan]";
+ mes "\"Hasan! That's crazy. He becomes more cheekily with every day.";
+ mes "I'd like to help you, but - I won't risk an open confrontation with him.\"";
+ next;
+ mes "\"Sometimes he just freaks out and then he's dangerous.";
+ mes "We should think about some trick. Ah, if I'd now what's his weak point.\"";
+ next;
+ mes "\"He might listen to one of the adult men, but they're all off to work in main Tulimshar during the day.\"";
+ set kaan, 3;
+ next;
+L_Trick:
+ mes "[Kaan]";
+ mes "\"Do you have an idea what Hasans weakness could be?";
+ if (hasan < 2)
+ close;
+ next;
+ menu
+ "He's afraid of scorpions.",-,
+ "No idea.",L_Close;
+ mes "[Kaan]";
+ mes "\"Scorpions?! Right! How could I forget?";
+ mes "When he was a child, he nearly died because he felt in a scorpion nest.\"";
+ next;
+L_Explain:
+ mes "\"Ok, then here's the plan:";
+ mes "I will catch one of the scorpions that's coming to the fence from the desert.\"";
+ next;
+ mes "\"You'll go to Hasan and give me a sign when you're ready.";
+ mes "Let's say the sign is that you're scratching your head.";
+ mes "I'll watch you from this point.\"";
+ next;
+ mes "\"When you give me the sign, I'll throw the scorpion down on him.";
+ mes "While he's distracted with the scorpion, you can pass.\"";
+ next;
+ mes "\"How's that? We can start as soon as you're ready.\"";
+ if (kaan == 3)
+ set kaan, 4;
+ set hasan, 3;
+ close;
+
+L_Plan:
+ mes "[Kaan]";
+ mes "\"I'm ready. Just give me the sign when you're down there.";
+ mes "Or do you want me to explain the plan again?\"";
+ next;
+ menu
+ "Yes please.",L_Explain,
+ "No, everything's alright.",-;
+ close;
+
+L_Hasan_Saved:
+ mes "[Kaan]";
+ mes "\"I told you to pass when he's distracted, not to fight the scorpion!";
+ mes "But maybe Hasan is thankful now?\"";
+ next;
+ mes "\"Maybe you should talk to him again.\"";
+ close;
+
+L_Tut_Done:
+ mes "[Kaan]";
+ mes "\"Hi there. I hope you enjoy your time in Tulimshar.";
+ mes "Hasan is a real troublemaker, but it seems he calmed down now.\"";
+ close;
+
+L_Run:
+ mes "[Kaan]";
+ mes "\"He's distracted! What are you waiting for?\"";
+ close;
+
+L_Close:
+ close;
+}
diff --git a/npc/042-1/malik.txt b/npc/042-1/malik.txt
new file mode 100644
index 00000000..389d3233
--- /dev/null
+++ b/npc/042-1/malik.txt
@@ -0,0 +1,21 @@
+042-1.gat,105,60,0 script Malik 162,{
+
+ menu
+ "Reset",-,
+ "Test Scorpion Fight", L_Scorp,
+ "close",L_Close;
+ set hasan, 0;
+ set kaan, 0;
+ set sorfina, 0;
+ set tanisha, 0;
+ set maggot, 0;
+ set FLAGS, FLAGS & ~FLAG_TUTORIAL_DONE;
+L_Close:
+ close;
+
+L_Scorp:
+ set sorfina, 4;
+ set kaan, 4;
+ set hasan, 3;
+ close;
+}
diff --git a/npc/042-1/valon.txt b/npc/042-1/valon.txt
new file mode 100644
index 00000000..6ca6ff6a
--- /dev/null
+++ b/npc/042-1/valon.txt
@@ -0,0 +1,38 @@
+// This file is part of the Tutorial
+// Author: Jenalya
+
+042-1.gat,17,82,0 script Valon 156,1,0{
+
+ if (FLAGS & FLAG_TUTORIAL_DONE) goto L_Tut_Done;
+
+ mes "[Valon]";
+ mes "\"Hello!";
+ mes "You're looking for adventures, right?\"";
+ next;
+ mes "\"But you shouldn't underestimate this desert, it is dangerous.\"";
+ next;
+ mes "\"It's crawling with scorpions, and the heat has overcome men tougher than you are.\"";
+ next;
+ mes "\"If you really want to challenge the desert go to main Tulimshar first to prepare yourself.\"";
+ close;
+
+L_Tut_Done:
+ mes "[Valon]";
+ mes "\"Hello!";
+ mes "You're an adventurer, right?\"";
+ next;
+ mes "\"Be careful in the desert.\"";
+ close;
+
+OnTouch:
+ if (FLAGS & FLAG_TUTORIAL_DONE)
+ goto L_Tut;
+ warp "042-1.gat", 17, 81;
+ mes "[Valon]";
+ mes "\"The desert is merciless.";
+ mes "I can't let you leave like this.\"";
+ close;
+L_Tut:
+ warp "041-1.gat", 33, 8;
+ end;
+}
diff --git a/npc/042-2/_import.txt b/npc/042-2/_import.txt
new file mode 100644
index 00000000..5d2ff6df
--- /dev/null
+++ b/npc/042-2/_import.txt
@@ -0,0 +1,7 @@
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+map: 042-2.gat
+npc: npc/042-2/_mobs.txt
+npc: npc/042-2/_warps.txt
+npc: npc/042-2/mapflags.txt
+npc: npc/042-2/sorfina.txt
+npc: npc/042-2/tanisha.txt
diff --git a/npc/042-2/_mobs.txt b/npc/042-2/_mobs.txt
new file mode 100644
index 00000000..589e4711
--- /dev/null
+++ b/npc/042-2/_mobs.txt
@@ -0,0 +1,8 @@
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+// 042-2 mobs
+
+
+
+042-2.gat,0,0,0 script Mob042-2 -1,{
+ end;
+}
diff --git a/npc/042-2/_warps.txt b/npc/042-2/_warps.txt
new file mode 100644
index 00000000..7e218f24
--- /dev/null
+++ b/npc/042-2/_warps.txt
@@ -0,0 +1,6 @@
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+// 042-2 warps
+
+042-2.gat,29,62 warp toOutside -1,-1,042-1.gat,62,64
+042-2.gat,22,93 warp toOutside -1,-1,042-1.gat,77,78
+042-2.gat,44,93 warp toOutside -1,-1,042-1.gat,87,78
diff --git a/npc/042-2/mapflags.txt b/npc/042-2/mapflags.txt
new file mode 100644
index 00000000..c9f5cc23
--- /dev/null
+++ b/npc/042-2/mapflags.txt
@@ -0,0 +1 @@
+042-2.gat mapflag nosave 042-2,26,26;
diff --git a/npc/042-2/sorfina.txt b/npc/042-2/sorfina.txt
new file mode 100644
index 00000000..5b55997f
--- /dev/null
+++ b/npc/042-2/sorfina.txt
@@ -0,0 +1,288 @@
+// This file is part of the Tutorial
+// Author: Jenalya
+
+042-2.gat,28,26,0 script Sorfina 154,4,4{
+
+ if (FLAGS & FLAG_TUTORIAL_DONE) goto L_Again;
+ if (sorfina == 4) goto L_Again;
+ if (sorfina == 3) goto L_Clothes;
+ if (sorfina == 2) goto L_Chest;
+ if (sorfina == 1) goto L_Carpet;
+
+ callfunc "GameRules";
+L_Start:
+ mes "You open your eyes.";
+ mes "";
+ mes "[Old Woman]";
+ mes "\"Ah, you woke up. It seems you collapsed after you left the boat that brought you to Tulimshar.";
+ mes "A group of ragtags immediatly took advantage of that and stole all your stuff!\"";
+ next;
+ mes "\"My little granddaughter Tanisha saw that, but couldn't do anything to stop them.";
+ mes "She hurried to get someone to help. It was too late to catch the thieves, but at least the helpers brought you here to recover.\"";
+ next;
+ mes "\"We're in the suburbs of Tulimshar here and this area of the town is full of shady people, so I don't think there's a chance to get back your stuff.\"";
+ mes "She has a sad look on her face, but then she shakes her head and smiles.";
+ next;
+ mes "[Old Woman]";
+ mes "\"Did you come here to look for a job? Many young people come to Tulimshar for this reason.\"";
+ next;
+ mes "\"I can tell you some useful things, if you want to hear.";
+ mes "Oh, and by the way my name is Sorfina.\"";
+ next;
+ menu
+ "That would be great!",L_Tut,
+ "No, thanks. I already know how things are going.",L_SkipTut;
+
+L_Tut:
+ mes "[Server]";
+ mes "The explanations in this tutorial are based on the official client version 0.5.2";
+ mes "If you're using another client, settings and controls may be different.";
+ next;
+ mes "She smiles at you.";
+ mes "[Sorfina]";
+ mes "\"A wise decision.\"";
+ next;
+ mes "\"You still look rather shaky.";
+ mes "You're not used to the hot weather, right?\"";
+ next;
+L_Carpet:
+ mes "\"Try to do some steps and walk to that red carpet over there.";
+ mes "Just use the arrow keys or click at the place you want to go to.\"";
+ if (!sorfina)
+ set sorfina, 1;
+ close;
+
+L_Chest:
+ mes "[Sorfina]";
+ mes "\"In that chest there is a shirt you can have.\"";
+ next;
+ mes "\"To interact with things in your environment or talk to NPCs you can either click on it or press N to focus and T to talk/activate.\"";
+ next;
+ mes "\"Now get the shirt out of the chest.\"";
+ close;
+
+L_Naked:
+ mes "\"Press F3 or click at the button for your equipment in the bar at the upper right corner to open your inventory.\"";
+ next;
+ mes "\"After we talked click on the shirt and press the equip button.\"";
+ next;
+ mes "\"Talk to me again when you got dressed. You can either click on me, or press N to focus on me and T to talk.\"";
+ close;
+
+L_Clothes:
+ if (getequipid(equip_torso) < 0) goto L_Naked;
+ mes "[Sorfina]";
+ mes "\"That's much better, don't you think so?\"";
+ next;
+ mes "\"I think this will help you a bit. To get more informations, press the button Setup and look at the controls on the Keyboard tab. You can also change them as you like.";
+ mes "Talk to me again if you want me to explain more things.\"";
+ next;
+ mes "\"Now you should go to see my granddaughter, she is very worried. She's in the storehouse, that's the second building southeast from here.\"";
+ next;
+ mes "\"Oh, and if you're looking for work, you should talk to Aidan when you go to main Tulimshar. They're giving rewards for monster hunting.";
+ mes "You can find him near the south gate. Well, good luck.\"";
+ set sorfina, 4;
+ close;
+
+L_Again:
+ mes "[Sorfina]";
+ mes "\"Make yourself at home! Do you have any questions?\"";
+ next;
+ if (hasan)
+ menu
+ "A guy named Hasan doesn't let me enter main Tulimshar.",L_Hasan,
+ "Yes, could you explain again about...",L_Explain,
+ "No, thanks.",L_Close;
+ menu
+ "Yes, could you explain about...",L_Explain,
+ "No, thanks.",L_Close;
+ close;
+
+L_Explain:
+ menu
+ "... walking?",L_Walk,
+ "... talking?",L_Talk,
+ "... the inventory and items?",L_Items,
+ "... shortcuts?",L_Shortcut,
+ "... what to do in main Tulimshar?",L_Aidan,
+ "... nevermind.",L_Close;
+ close;
+
+L_Walk:
+ mes "[Sorfina]";
+ mes "\"You can use the arrow keys to walk around.";
+ mes "Or just click at the place you want to go to.";
+ mes "But this only works if that place is reachable and walkable.\"";
+ close;
+
+L_Talk:
+ mes "[Sorfina]";
+ mes "\"If you want to talk to a normal person, you can click at him or her.";
+ mes "Or you can press N to focus on the nearest person and then press T to talk.\"";
+ next;
+ mes "\"If you want to talk to other adventurers, press Enter to open your chat window.";
+ mes "Then type your message and press Enter to send.\"";
+ next;
+ mes "\"You may want to talk privately to another adventurer sometimes. In that case you can whisper.";
+ mes "After pressing Enter type '/whisper [name] [message]'.";
+ mes "Or you can right click on someone and choose the whisper option.\"";
+ next;
+ mes "\"Press F7 to show and hide your chat window.\"";
+ close;
+
+L_Items:
+ mes "[Sorfina]";
+ mes "\"There are three types of items.";
+ mes "They can be Consumables, Equipment or Miscellaneous.\"";
+ next;
+ mes "\"Consumable items such as Potions, can be used only once.";
+ mes "After use, they will disappear from your inventory.";
+ mes "There are some rare items that can be used but don't get consumed.";
+ next;
+ mes "\"Equipment items like Armors, Weapons, Accessories can be equipped for fashionable purposes or to raise your status.\"";
+ next;
+ mes "\"Miscellaneous items such as maggot slime, are used in creating other items, or just to trade and sell.\"";
+ next;
+ mes "\"Press F3 to open your inventory.";
+ mes "When placing your cursor over an item there, you can see a box with some informations about that item.\"";
+ next;
+ mes "\"To use or equip an item, select it with clicking on it.";
+ mes "Then press Use or Equip.\"";
+ close;
+
+L_Shortcut:
+ mes "[Sorfina]";
+ mes "\"Press F8 to open your shortcut window.\"";
+ next;
+ mes "\"You can select the item you want to put on a shortcut with your mouse and then click on the position in the shortcut window you want to place it.\"";
+ next;
+ mes "\"Now you can use or equip/unequip it with pressing the number of the shortcut.\"";
+ close;
+
+L_Aidan:
+ mes "[Sorfina]";
+ mes "\"I suggest to go to the bazaar near the south gate.";
+ mes "We're in the north of Tulimshar here, so you have to walk across the town.\"";
+ next;
+ mes "\"When you leave this area to the Southeast, you'll come to the docks.";
+ mes "Follow the street to the south to pass the old town gates.\"";
+ next;
+ mes "\"Turn West at the next intersection. You'll pass by the gates of Tulimshar's famos magic school there.";
+ mes "Just follow the street to the south and you'll reach the bazaar.\"";
+ next;
+ mes "\"I heard Aidan is looking for brave adventurers, you might want to talk to him.";
+ mes "Usually the bazaar is bustling with activity, there are many persons who might know something useful.\"";
+ close;
+
+L_Hasan:
+ mes "[Sorfina]";
+ mes "\"Ah, Hasan. He's causing trouble again?\"";
+ mes "She shakes her head.";
+ next;
+ mes "[Sorfina]";
+ mes "\This guy was a plague ever since. He's always causing trouble.\"";
+ next;
+ mes "\"And his father... Well, one day his father thought he should teach Hasan a lesson.\"";
+ next;
+ mes "\"He took him in the desert and then left him there!";
+ mes "Hasan was only seven years old!\"";
+ next;
+ mes "\"I never understood how someone can do something like that to a child, even if it's a rascal like Hasan.\"";
+ next;
+ mes "\"Anyway, Hasan tried to find his way back home, but stumbled in a nest of scorpions!\"";
+ mes "She shakes her head.";
+ next;
+ mes "\"If Valon wouldn't have come along that moment, Hasan would have died that day.\"";
+ next;
+ mes "\"However, the scorpions poison caused a bad fever and after Hasan had recovered from that, he was even more malicious than before.\"";
+ mes "She sighs.";
+ if (hasan == 1)
+ set hasan, 2;
+ close;
+
+L_SkipTut:
+ mes "[Sorfina]";
+ mes "\"Really? You seem quite unexperienced. Listening to some advices won't hurt.\"";
+ next;
+ menu
+ "Thinking about it twice... please tell me.",L_Tut,
+ "Yeah, but thanks for the offer. Bye.",-;
+ mes "[Sorfina]";
+ mes "\"If you think so. But take at least this.";
+ set hasan, 0;
+ set kaan, 0;
+ set sorfina, 0;
+ set tanisha, 0;
+ set maggot, 0;
+ set FLAGS, FLAGS | FLAG_TUTORIAL_DONE;
+ getitem "Knife", 1;
+ getitem "CottonShirt", 1;
+ mes "Good luck.\"";
+ close;
+
+L_Close:
+ close;
+
+OnTouch:
+ if (TUT_var != 0) close;
+ callfunc "GameRules";
+ goto L_Start;
+ close;
+}
+
+042-2.gat,33,27,0 script #Carpet 45,1,1{
+ end;
+OnTouch:
+ if (sorfina != 1)
+ end;
+ mes "[Sorfina]";
+ mes "\"Very good! I'm glad you're recovering.";
+ mes "Now you should get dressed again.\"";
+ next;
+ mes "Sorfina unlocks the chest behind her.";
+ next;
+ mes "[Sorfina]";
+ mes "\"In that chest there is a shirt you can have.\"";
+ next;
+ mes "\"To interact with things in your environment or talk to NPCs you can either click on it or press N to focus and T to talk/activate.\"";
+ next;
+ mes "\"Now get the shirt out of the chest.\"";
+ set sorfina, 2;
+ close;
+}
+
+042-2.gat,27,23,0 script Chest 111,{
+
+ if (sorfina > 2) goto L_Empty;
+ if (sorfina == 2) goto L_Shirt;
+
+ mes "The chest is locked.";
+ close;
+L_Shirt:
+ mes "You take a simple Cotton Shirt out of the chest.";
+ getitem "CottonShirt", 1;
+ next;
+ mes "[Sorfina]";
+ mes "\"Great! Now you can equip it.\"";
+ next;
+ mes "\"You can open your inventory with pressing F3 or clicking at the button 'Inventory' in the bar at the upper right corner.\"";
+ next;
+ mes "\"After we finished talking click on the shirt and press the equip button.\"";
+ set sorfina, 3;
+ close;
+
+L_Empty:
+ mes "The chest is empty.";
+ close;
+}
+
+042-2.gat,44,31,0 script #DoorOut 45,0,0{
+ end;
+OnTouch:
+ if ((sorfina < 4) && !(FLAGS & FLAG_TUTORIAL_DONE)) goto L_Block;
+ warp "042-1.gat", 37, 57;
+ end;
+L_Block:
+ message strcharinfo(0), "Sorfina: Wait a moment! You're not ready to leave.";
+ end;
+}
diff --git a/npc/042-2/tanisha.txt b/npc/042-2/tanisha.txt
new file mode 100644
index 00000000..5e040da3
--- /dev/null
+++ b/npc/042-2/tanisha.txt
@@ -0,0 +1,275 @@
+// This file is part of the Tutorial
+// Authors: Jenalya, alastrim
+
+042-2.gat,37,90,0 script Tanisha 114,{
+
+ set @playerlimit, 4;
+
+ if ((getx(0) > 29) && (getx(0) < 37) && (gety(0) > 84) && (gety(0) < 90)) goto L_Fighting;
+
+ if (FLAGS & FLAG_TUTORIAL_DONE) goto L_Tut_Done;
+ if (tanisha == 4) goto L_Again;
+ if (tanisha == 3) goto L_Stats;
+ if (tanisha == 2) goto L_Fail;
+ if (tanisha == 1) goto L_Maggots;
+
+ mes "[Tanisha]";
+ mes "\"Hey! You're up again!\"";
+ emotion 3;
+ next;
+ mes "\"Are you feeling better?\"";
+ next;
+ menu
+ "Yes, thank you.",-,
+ "Yeah, but all my stuff is gone.",-;
+ mes "[Tanisha]";
+ mes "\"I see. It was really bad luck what happened to you.";
+ mes "Hey, I have an idea.\"";
+ next;
+L_Maggots:
+ set tanisha, 1;
+ mes "\"There are some maggots eating the goods and I shall 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?\"";
+ next;
+ menu
+ "Sure!",-,
+ "That's your job.",L_Close;
+ mes "[Tanisha]";
+ mes "\"Wonderful!\"";
+ if ($@TUT_MAGGOT >= @playerlimit)
+ goto L_Crowded;
+ set $@TUT_MAGGOT, $@TUT_MAGGOT + 1;
+ getitem "Knife", 1;
+ next;
+L_Fight_Again:
+ mes "\"Ok, listen what to do.";
+ mes "Equip the knife 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 Shift, you can abort your attack.\"";
+ next;
+ mes "\"Maggots aren't aggressive, so they won't harm you until you attacked them first. Take them out one by one.\"";
+ next;
+ mes "\"Sometimes dead monsters leave some useful things. You can pick them up with pressing Z or clicking with your mouse.\"";
+ set tanisha, 2;
+ set @maggot, 0;
+ set @time, 0;
+ close2;
+ warp "042-2.gat", 33, 87;
+
+L_Summon:
+ monster "042-2.gat", getx(0), gety(0), "", 1002, 1, "Tanisha::onMaggotDeath";
+ startnpctimer;
+ 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 to see your status window. There you can distribute your points on six different properties.\"";
+ next;
+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.\"";
+ next;
+ mes "\"Dexterity is needed to hit a monster. 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 putting 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 abilites!\"";
+ mes "Tanisha looks at you with wide opened eyes.";
+ next;
+ mes "[Tanisha]";
+ mes "\"But I don't think he'd do that without a service in return.\"";
+
+ if (tanisha == 3) goto L_Advice;
+ close;
+
+L_Advice:
+ next;
+ mes "[Tanisha]";
+ mes "\"When you go to main Tulimshar, you could see Bernard. He can make a delicious soup!";
+ mes "Good luck!\"";
+ emotion 3;
+ if (tanisha == 3)
+ set tanisha, 4;
+ close;
+
+L_Again:
+ mes "[Tanisha]";
+ mes "\"Hi there! Is everything alright? Do you have questions?\"";
+ next;
+ if (hasan)
+ menu
+ "A guy named Hasan doesn't let me enter main Tulimshar.",L_Hasan,
+ "Yes, could you explain again about...",L_Explain,
+ "No, thanks.",L_Close;
+ menu
+ "Yes, could you explain again about...",L_Explain,
+ "No, thanks.",L_Close;
+ close;
+
+L_Explain:
+ menu
+ "... how to fight?",L_Fight,
+ "... monsters?",L_Mob,
+ "... status points?",L_StatsRe,
+ "... what to do in main 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 Shift, you can abort your attack.\"";
+ next;
+ mes "\"Sometimes dead monsters leave some useful things. You can pick them up with pressing Z or clicking with your mouse.\"";
+ next;
+ mes "\"If you feel exhausted from battle you can sit down with pressing S to recover faster.\"";
+ 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 a 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 peacefully until they get attacked.\"";
+ next;
+ mes "\"Assistants are monsters who help each other.\"";
+ close;
+
+L_Hasan:
+ 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.\"";
+ if (hasan == 1)
+ set hasan, 2;
+ close;
+
+L_Tut_Done:
+ mes "[Tanisha]";
+ mes "\"This 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;
+ close;
+
+L_Crowded:
+ mes "[Tanisha]";
+ mes "\"That's great! But...";
+ mes "it seems it's crowded in there.\"";
+ next;
+ mes "\"Let's wait a short while.\"";
+ 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, 0;
+ set @time, 0;
+ if ($@TUT_MAGGOT > 0)
+ set $@TUT_MAGGOT, $@TUT_MAGGOT - 1;
+ if ($@TUT_MAGGOT == 0) stopnpctimer;
+ if ($@TUT_MAGGOT == 0) setnpctimer 0;
+ close;
+
+L_Fail:
+ mes "Tanisha seems to try hard to supress laughter.";
+ mes "[Tanisha]";
+ mes "\"The maggots defeated you.\"";
+ next;
+ mes "She bursts out with laughter.";
+ mes "[Tanisha]";
+ mes "\"Oups, I'm sorry. It's just too funny.";
+ mes "Do you want to try it again?\"";
+ next;
+ menu
+ "Sure!",-,
+ "No, I need a rest.",L_Close;
+ if ($@TUT_MAGGOT >= @playerlimit)
+ goto L_Crowded;
+ goto L_Fight_Again;
+ set $@TUT_MAGGOT, $@TUT_MAGGOT + 1;
+ close;
+
+L_Fighting:
+ message strcharinfo(0), "Tanisha: I believe in you!";
+ end;
+
+OnTimer1000:
+ setnpctimer 0;
+ if (getareausers("042-2.gat", 29, 85, 36, 90) < 1)
+ goto L_CleanUp;
+ areatimer "042-2.gat", 30, 85, 36, 89, 10, "Tanisha::onTick";
+ end;
+
+L_CleanUp:
+ killmonster "042-2.gat", "Tanisha::onMaggotDeath";
+ set $@TUT_MAGGOT, 0;
+ stopnpctimer;
+ setnpctimer 0;
+ end;
+
+onTick:
+ set @time, @time + 1;
+ if (@time > 300)
+ goto L_Sleep;
+ if (isdead(0)) end;
+ if (hp > 20)
+ goto L_NoHeal;
+ heal MaxHp, 0;
+ message strcharinfo(0), "Tanisha: You're doing good!";
+L_NoHeal:
+ if (@maggot < 5)
+ end;
+ warp "042-2.gat", 36, 90;
+ set tanisha, 3;
+ set @maggot, 0;
+ set @time, 0;
+ if ($@TUT_MAGGOT > 0)
+ set $@TUT_MAGGOT, $@TUT_MAGGOT - 1;
+ if ($@TUT_MAGGOT == 0) stopnpctimer;
+ if ($@TUT_MAGGOT == 0) setnpctimer 0;
+ close;
+
+onMaggotDeath:
+ if (@maggot == 1) message strcharinfo(0), "Tanisha: Aaahhhh... another one! It will crawl up your legs!";
+ if (@maggot == 2) message strcharinfo(0), "Tanisha: Ohh... Irrhk... Eeeeww... They just appear from nowhere!";
+ if (@maggot == 3) message strcharinfo(0), "Tanisha: Yuck... I think I am getting sick.";
+ if ((getx(0) > 29) && (getx(0) < 37) && (gety(0) > 84) && (gety(0) < 90)) set @maggot, @maggot + 1;
+ if (@maggot < 5 && (getx(0) <= 29) || (getx(0) >= 37) || (gety(0) <= 84) || (gety(0) >= 90)) monster "042-2.gat", 33, 87, "", 1002, 1, "Tanisha::onMaggotDeath";
+ if (@maggot < 5 && (getx(0) > 29) && (getx(0) < 37) && (gety(0) > 84) && (gety(0) < 90)) monster "042-2.gat", getx(0), gety(0), "", 1002, 1, "Tanisha::onMaggotDeath";
+ end;
+
+L_Close:
+ close;
+}
diff --git a/npc/_import.txt b/npc/_import.txt
index b3bcc75a..f6da80e5 100644
--- a/npc/_import.txt
+++ b/npc/_import.txt
@@ -77,4 +77,7 @@ import: npc/032-1/_import.txt
import: npc/032-3/_import.txt
import: npc/033-1/_import.txt
import: npc/034-1/_import.txt
+import: npc/041-1/_import.txt
+import: npc/042-1/_import.txt
+import: npc/042-2/_import.txt
import: npc/botcheck/_import.txt