summaryrefslogtreecommitdiff
path: root/world/map/npc/042-2
diff options
context:
space:
mode:
Diffstat (limited to 'world/map/npc/042-2')
-rw-r--r--world/map/npc/042-2/_import.txt5
-rw-r--r--world/map/npc/042-2/_mobs.txt6
-rw-r--r--world/map/npc/042-2/_warps.txt4
-rw-r--r--world/map/npc/042-2/barrels.txt48
-rw-r--r--world/map/npc/042-2/barrels_config.txt109
-rw-r--r--world/map/npc/042-2/magic_basement.txt21
-rw-r--r--world/map/npc/042-2/morgan.txt142
-rw-r--r--world/map/npc/042-2/sorfina.txt72
-rw-r--r--world/map/npc/042-2/stat_reset.txt42
-rw-r--r--world/map/npc/042-2/tanisha.txt85
10 files changed, 484 insertions, 50 deletions
diff --git a/world/map/npc/042-2/_import.txt b/world/map/npc/042-2/_import.txt
index 45f7ea62..7522e5e2 100644
--- a/world/map/npc/042-2/_import.txt
+++ b/world/map/npc/042-2/_import.txt
@@ -3,6 +3,11 @@
map: 042-2.gat
npc: npc/042-2/_mobs.txt
npc: npc/042-2/_warps.txt
+npc: npc/042-2/barrels.txt
+npc: npc/042-2/barrels_config.txt
+npc: npc/042-2/magic_basement.txt
npc: npc/042-2/mapflags.txt
+npc: npc/042-2/morgan.txt
npc: npc/042-2/sorfina.txt
+npc: npc/042-2/stat_reset.txt
npc: npc/042-2/tanisha.txt
diff --git a/world/map/npc/042-2/_mobs.txt b/world/map/npc/042-2/_mobs.txt
index a423b87a..60ac26d6 100644
--- a/world/map/npc/042-2/_mobs.txt
+++ b/world/map/npc/042-2/_mobs.txt
@@ -1,9 +1,15 @@
// This file is generated automatically. All manually changes will be removed when running the Converter.
// Tulimshar Suburbs Indoor mobs
+042-2.gat,33,57,24,7|monster|HouseMaggot|1050,7,100000,30000,Mob042-2::On1050
042-2.gat,0,0,0|script|Mob042-2|-1,
{
end;
+
+On1050:
+ set @mobID, 1050;
+ callfunc "MobPoints";
+ end;
}
diff --git a/world/map/npc/042-2/_warps.txt b/world/map/npc/042-2/_warps.txt
index 117a0f15..3fa81e27 100644
--- a/world/map/npc/042-2/_warps.txt
+++ b/world/map/npc/042-2/_warps.txt
@@ -4,3 +4,7 @@
042-2.gat,29,62|warp|To Outside|-1,-1,042-1.gat,65,76
042-2.gat,22,93|warp|To Outside|-1,-1,042-1.gat,91,74
042-2.gat,44,93|warp|To Outside|-1,-1,042-1.gat,104,74
+042-2.gat,112,84|warp|To Outside|-1,-1,042-1.gat,62,41
+042-2.gat,94,53|warp|To Outside|-1,-1,042-1.gat,112,94
+042-2.gat,112,53|warp|To Outside|-1,-1,042-1.gat,120,94
+042-2.gat,103,62|warp|To Outside|-1,-1,042-1.gat,117,103
diff --git a/world/map/npc/042-2/barrels.txt b/world/map/npc/042-2/barrels.txt
new file mode 100644
index 00000000..43d4444e
--- /dev/null
+++ b/world/map/npc/042-2/barrels.txt
@@ -0,0 +1,48 @@
+// Barrels
+// Author: Wushin
+// Barrels
+042-2.gat,23,86,0|script|Barrel#0|400,
+{
+ setarray @npc_loc, 23, 86, 2;
+ set @barrel, 0;
+ callfunc "CheckBarrel";
+ end;
+
+OnMaggotDeath:
+ end;
+}
+042-2.gat,28,86,0|script|Barrel#1|400,
+{
+ setarray @npc_loc, 28, 86, 2;
+ set @barrel, 1;
+ callfunc "CheckBarrel";
+ end;
+}
+042-2.gat,31,91,0|script|Barrel#2|400,
+{
+ setarray @npc_loc, 31, 91, 2;
+ set @barrel, 2;
+ callfunc "CheckBarrel";
+ end;
+}
+042-2.gat,36,85,0|script|Barrel#3|400,
+{
+ setarray @npc_loc, 36, 85, 2;
+ set @barrel, 3;
+ callfunc "CheckBarrel";
+ end;
+}
+042-2.gat,40,89,0|script|Barrel#4|400,
+{
+ setarray @npc_loc, 40, 89, 2;
+ set @barrel, 4;
+ callfunc "CheckBarrel";
+ end;
+}
+042-2.gat,38,91,0|script|Barrel#5|400,
+{
+ setarray @npc_loc, 38, 91, 2;
+ set @barrel, 5;
+ callfunc "CheckBarrel";
+ end;
+}
diff --git a/world/map/npc/042-2/barrels_config.txt b/world/map/npc/042-2/barrels_config.txt
new file mode 100644
index 00000000..85c78e41
--- /dev/null
+++ b/world/map/npc/042-2/barrels_config.txt
@@ -0,0 +1,109 @@
+// Barrels
+// Author: Wushin
+042-2.gat,33,88,24,7|monster|HouseMaggot|1050,2,100000,30000,Barrel#0::OnMaggotDeath
+-|script|#BarrelConfig|-1,
+{
+ end;
+
+OnInit:
+ set $@BarrelStartBit, (1 << 16);
+ set $@BarrelEndBit, (1 << 23);
+ set $@ZegasMetBit, (1 << 30);
+ setarray $@BarrelBits, (1 << 17), (1 << 18), (1 << 19), (1 << 20), (1 << 21), (1 << 22);
+ setarray $@BarrelRewards, 533, 507, 505, 518, 537, 526;
+ set $@BarrelSpawnCnt, 1;
+ set $@BarrelSpawnId, 1050;
+ set $@BarrelSpawnName$, "House Maggot";
+ set $@BarrelMax, getarraysize($@BarrelBits);
+ end;
+
+}
+function|script|CheckBarrelQuest|,
+{
+ callfunc "CountBarrels";
+ set @barrel_quest, 0;
+ if (TUTORIAL & $@ZegasMetBit)
+ set @barrel_quest, 1;
+ if (TUTORIAL & $@BarrelStartBit)
+ set @barrel_quest, 2;
+ if (!(TUTORIAL & $@BarrelStartBit) && (@barrel_count))
+ set @barrel_quest, 3;
+ if (TUTORIAL & $@BarrelEndBit)
+ set @barrel_quest, 4;
+ return;
+}
+function|script|CountBarrels|,
+{
+ set @barrel_count, 0;
+ set @barrel_tmp, 0;
+ goto L_Loop;
+
+L_Loop:
+ if (TUTORIAL & $@BarrelBits[@barrel_tmp])
+ goto L_AddOne;
+ goto L_LoopAgain;
+
+L_AddOne:
+ set @barrel_count, (@barrel_count + 1);
+ goto L_LoopAgain;
+
+L_LoopAgain:
+ set @barrel_tmp, (@barrel_tmp + 1);
+ if (@barrel_tmp == getarraysize($@BarrelBits))
+ goto L_BarrelTally;
+ goto L_Loop;
+
+L_BarrelTally:
+ return;
+}
+function|script|CheckBarrel|,
+{
+ callfunc "PCtoNPCRange";
+ if (@npc_check)
+ goto L_Range;
+ callfunc "CheckBarrelQuest";
+ if (!(@barrel_quest))
+ goto L_NoI;
+ if (TUTORIAL & $@BarrelBits[@barrel])
+ goto L_Empty;
+ set TUTORIAL, TUTORIAL | $@BarrelBits[@barrel];
+
+ callfunc "CountBarrels";
+ if (@barrel_count == $@BarrelMax)
+ goto L_QuestReward;
+ set @player_random, rand(@barrel_count * 10);
+ set @barrel_random, rand(@barrel_count * $@BarrelMax);
+ if (@barrel_random > @player_random)
+ goto L_Spawn;
+ goto L_Reward;
+
+L_Range:
+ message strcharinfo(0), "You'll need to get closer.";
+ goto L_Return;
+
+L_NoI:
+ message strcharinfo(0), "Nothing interesting here.";
+ goto L_Return;
+
+L_Empty:
+ message strcharinfo(0), "You've already searched this barrel.";
+ goto L_Return;
+
+L_QuestReward:
+ message strcharinfo(0), "You found the bug bomb.";
+ misceffect 33;
+ set TUTORIAL, TUTORIAL &~ $@BarrelStartBit;
+ killmonster getmap() + ".gat", "Barrel#0::OnMaggotDeath";
+ goto L_Return;
+
+L_Spawn:
+ areamonster getmap() + ".gat", @npc_loc[0], @npc_loc[1], (@npc_loc[0] + 1), (@npc_loc[1] + 1), $@BarrelSpawnName$, $@BarrelSpawnId, $@BarrelSpawnCnt, "Barrel#0::OnMaggotDeath";
+ goto L_Return;
+
+L_Reward:
+ getitem $@BarrelRewards[rand(getarraysize($@BarrelRewards))], 1;
+ goto L_Return;
+
+L_Return:
+ return;
+}
diff --git a/world/map/npc/042-2/magic_basement.txt b/world/map/npc/042-2/magic_basement.txt
new file mode 100644
index 00000000..2f278a5a
--- /dev/null
+++ b/world/map/npc/042-2/magic_basement.txt
@@ -0,0 +1,21 @@
+//
+// Author: Wushin
+
+042-2.gat,103,56,0|script|#MagicBasement|400,0,0,
+{
+ callfunc "MorganState";
+ if (@morgan < 4)
+ goto L_Close;
+ mes "Descend into the basement?";
+ next;
+ menu
+ "Yes.", L_MagicBase,
+ "Nevermind.", L_Close;
+
+L_MagicBase:
+ warp "042-3",24,21;
+ goto L_Close;
+
+L_Close:
+ close;
+}
diff --git a/world/map/npc/042-2/morgan.txt b/world/map/npc/042-2/morgan.txt
new file mode 100644
index 00000000..3ea1a2e8
--- /dev/null
+++ b/world/map/npc/042-2/morgan.txt
@@ -0,0 +1,142 @@
+// Tut mage
+// Author: Wushin
+// Gains Access to Magic School
+// See 024-2 clean that shit up
+// Morgan, liana
+function|script|MorganState|,
+{
+ callfunc "ClearVariables";
+ set @morgan, ((TUTORIAL & NIBBLE_6_MASK) >> NIBBLE_6_SHIFT);
+ return;
+}
+function|script|SetMorganMask|,
+{
+ set TUTORIAL, (TUTORIAL & ~(NIBBLE_6_MASK) | (@morgan_tmp << NIBBLE_6_SHIFT));
+ set @morgan_tmp, 0;
+ return;
+}
+042-2,105,57,0|script|MorganDebug|355,
+{
+ mes "[Morgan Debug]";
+ mes "Reset?";
+ menu
+ "Yes.", L_Reset,
+ "No.", L_End;
+L_Reset:
+ set TUTORIAL, (TUTORIAL & ~(NIBBLE_6_MASK) | (0 << NIBBLE_6_SHIFT));
+ mes "Reset!";
+ goto L_End;
+
+L_End:
+ end;
+
+OnInit:
+ if (!debug)
+ disablenpc "MorganDebug";
+ end;
+}
+042-2,101,57,0|script|Morgan|355,
+{
+ callfunc "MorganState";
+ if (readparam(bInt) >= 5)
+ goto L_Learn;
+ goto L_NotMagic;
+
+L_Learn:
+ if (@morgan == 0)
+ goto L_NotSeen;
+ if (@morgan == 1)
+ goto L_Seen;
+ if (@morgan == 2)
+ goto L_Started;
+ if (@morgan == 3)
+ goto L_CastOnce;
+ if (@morgan == 4)
+ goto L_LearningDone;
+ goto L_Close;
+
+L_NotSeen:
+ set @morgan_tmp, 1;
+ callfunc "SetMorganMask";
+ mes "[Morgan]";
+ mes "\"Welcome to the Magic Insitute of Tulimshar!\"";
+ next;
+ mes "\"My name is Morgan, I'm the Dean of Wizardry.\"";
+ next;
+ mes "\"You appear to have the markings to use magic.\"";
+ next;
+ mes "\"Granted you are still to young to cast spells.\"";
+ next;
+ mes "\"But we can teach you to use simple magic devices.\"";
+ next;
+ mes "\"Would you like to learn some apprentice skills?\"";
+ menu
+ "Yes.", L_Start,
+ "Maybe later", L_Close;
+
+L_Seen:
+ mes "[Morgan]";
+ mes "\"Have you returned to learn some magic?\"";
+ menu
+ "Yes.", L_Start,
+ "Maybe later", L_Close;
+
+L_NotMagic:
+ mes "[Morgan]";
+ mes "\"Hrmm you don't appear to posses enough magical talent to teach.\"";
+ goto L_Close;
+
+L_Start:
+ set @morgan_tmp, 2;
+ callfunc "SetMorganMask";
+ mes "\"Great, lets begin your first lesson.\"";
+ next;
+ getitem 1171, 1;
+ mes "\"This is a wand, there are many like it but this one is now yours.\"";
+ next;
+ mes "\"Various wands and staffs are found throughout the land with many different strengths and weaknesses.\"";
+ next;
+ mes "\"To use the wand you need to have it equipped and speak the incantation to let it tap into your mana.\"";
+ next;
+ mes "\"As the power of your magic grows so will the spells you can cast.\"";
+ next;
+ mes "\"Lets start with a basic wand attack. " + getspellinvocation("wand") + "\"";
+ next;
+ mes "\"Equip the wand and lets try out that spell.\"";
+ next;
+ mes "\"Speak to me again once you've cast the spell.\"";
+ goto L_Close;
+
+L_Started:
+ mes "[Morgan]";
+ mes "\"Lets start with a basic wand attack. " + getspellinvocation("wand") + "\"";
+ next;
+ mes "\"Equip the wand and lets try out that spell.\"";
+ next;
+ mes "\"Speak to me again once you've cast the spell.\"";
+ goto L_Close;
+
+L_CastOnce:
+ mes "[Morgan]";
+ mes "\"Ok, good job! Looks like you have good mana flow.\"";
+ next;
+ mes "\"Onto the next lesson. Now that you have " + getspellinvocation("wand") + " cast,\"";
+ next;
+ mes "\"Each time you attack the wand will convert a bit of you mana into a magic bolt.\"";
+ next;
+ mes "\"After so many attacks, you will need to recast the invocation to stay attuned to the wand.\"";
+ next;
+ mes "\"(Logging out will also cancel any spell effects currently active in-game.).\"";
+ next;
+ set @morgan_tmp, 4;
+ callfunc "SetMorganMask";
+ goto L_Close;
+
+L_LearningDone:
+ mes "[Morgan]";
+ mes "\"I've taught you all I can for now. Come back later.\"";
+ goto L_Close;
+
+L_Close:
+ close;
+}
diff --git a/world/map/npc/042-2/sorfina.txt b/world/map/npc/042-2/sorfina.txt
index 841a667a..4301d124 100644
--- a/world/map/npc/042-2/sorfina.txt
+++ b/world/map/npc/042-2/sorfina.txt
@@ -1,7 +1,33 @@
// This file is part of the Tutorial
// Author: Jenalya
+042-2.gat,21,26,0|script|TutDebug|154,
+{
+ mes "[TutDebug]";
+ mes "Reset?";
+ menu
+ "Yes.",L_Reset,
+ "No.",L_End;
+
+L_Reset:
+ set TUT_var, 0;
+ set @tutorial_tmp, 0;
+ set TUTORIAL, (TUTORIAL & ~(NIBBLE_0_MASK) | (@tutorial_tmp << NIBBLE_0_SHIFT));
+ set TUTORIAL, TUTORIAL &~ $@SorfinaHasanBit;
+ set TUTORIAL, TUTORIAL &~ $@TanishaHasanBit;
+ set TUTORIAL, TUTORIAL &~ $@HasanCompleteBit;
+ set FLAGS, FLAGS &~ FLAG_TUTORIAL_DONE;
+ mes "Reset!";
+ goto L_End;
+
+L_End:
+ end;
-042-2.gat,28,26,0|script|Sorfina|154,4,4
+OnInit:
+ if(!debug)
+ disablenpc "TutDebug";
+ end;
+}
+042-2.gat,28,26,0|script|Sorfina|154,1,4
{
callfunc "TutorialState";
@@ -17,8 +43,8 @@ L_Heal:
goto L_Main;
L_Main:
- if (FLAGS & FLAG_TUTORIAL_DONE) goto L_Again;
if ((@tutorial == 11) && !(@sorfina_hasan)) goto L_Hasan;
+ if (FLAGS & FLAG_TUTORIAL_DONE) goto L_Again;
if (@tutorial >= 4) goto L_Again;
if (@tutorial == 3) goto L_Clothes;
if (@tutorial == 2) goto L_Chest;
@@ -66,7 +92,9 @@ L_Tut:
L_Carpet:
mes "[Sorfina]";
mes "\"Try to take a few steps and walk to that red carpet over there.";
- mes "Just use the arrow keys or click on the place you want to go to.\"";
+ mes "Just use the ###keyMoveUp; to move up, ###keyMoveDown; to move down, ";
+ mes " ###keyMoveLeft; to move left, ###keyMoveRight; to move right ";
+ mes " or click on the place you want to go to.\"";
set @tutorial_tmp, 1;
callfunc "SetTutorialMask";
goto L_Close;
@@ -75,18 +103,18 @@ L_Chest:
mes "[Sorfina]";
mes "\"In that chest there are some clothes you can take.\"";
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.\"";
+ mes "\"To interact with things in your environment or talk to NPCs you can either click on it or press ###keyTargetNPC; to focus and ###keyTalk; to talk/activate.\"";
next;
mes "\"Now get the clothes out of the chest.\"";
goto L_Close;
L_Naked:
mes "[Sorfina]";
- mes "\"Press F3 or click on the Inventory button in the bar at the upper right corner to open your bag.\"";
+ mes "\"Press ###keyWindowInventory; or click on the Inventory button in the bar at the upper right corner to open your bag.\"";
next;
- mes "\"Once we stop talking, click on the clothes and press the equip button.\"";
+ mes "\"Once we stop talking, double-click on the clothes to equip.\"";
next;
- mes "\"Talk to me again after you get dressed. You can either click on me, or press N to focus on me and T to talk.\"";
+ mes "\"Talk to me again after you get dressed. You can either click on me, or press ###keyTargetNPC; to focus on me and ###keyTalk; to talk.\"";
goto L_Close;
L_Clothes:
@@ -136,23 +164,25 @@ L_Explain:
L_Walk:
mes "[Sorfina]";
mes "\"You can use the arrow keys to walk around.";
- mes "Or just click on the place you want to go to.";
- mes "But this only works if that place is reachable and walkable.\"";
+ mes "Just use the ###keyMoveUp; to move up, ###keyMoveDown; to move down, ";
+ mes " ###keyMoveLeft; to move left, ###keyMoveRight; to move right ";
+ mes " or click on the place you want to go to.\"";
+ mes "This only works if that place is reachable and walkable.\"";
goto L_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.\"";
+ mes "Or you can press ###keyTargetNPC; to focus on the nearest person and then press ###keyTalk; to talk.\"";
next;
- mes "\"If you want to talk to other adventurers, press Enter to open your chat window.";
+ mes "\"If you want to talk to other adventurers, press ###keyChat; 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 "After pressing ###keyChat; 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.\"";
+ mes "\"Press ###keyWindowChat; to show and hide your chat window.\"";
goto L_Close;
L_Items:
@@ -171,16 +201,16 @@ L_Items:
mes "\"Your HitchHikers Towel will return you to your last set soul menhir or here if not set.\"";
mes "\"It can't be used constantly as the magic needs time to power the jump.\"";
next;
- mes "\"Press F3 to open your inventory.";
+ mes "\"Press ###keyWindowInventory; to open your inventory.";
mes "When placing your cursor over an item there, you can see a box with some information about that item.\"";
next;
- mes "\"To use or equip an item, select it by clicking on it.";
- mes "Then press Use or Equip.\"";
+ mes "\"To use or equip an item, select it by double-clicking on it.";
+ mes "Selecting the item then pressing Use or Equip also works.\"";
goto L_Close;
L_Shortcut:
mes "[Sorfina]";
- mes "\"Press F8 or click the Shortcut button in the bar at the upper right to open your shortcut window.\"";
+ mes "\"Press ###keyOutfitShortcut1; or click the Shortcut button in the bar at the upper right 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;
@@ -207,7 +237,7 @@ L_Hasan:
mes "[Sorfina]";
mes "\"Make yourself at home! Do you have any questions?\"";
menu
- "A guy named Hasan won't let me enter Tulimshar.",L_Next,
+ "A guy named Hasan is bullying people.",L_Next,
"Yes, could you explain again about...",L_Explain,
"No, thanks.",L_Close;
@@ -291,7 +321,7 @@ OnTouch:
close;
}
-042-2.gat,27,23,0|script|Chest#tutorial|111,
+042-2.gat,29,23,0|script|Chest#tutorial|111,
{
callfunc "TutorialState";
if (@tutorial > 2) goto L_Empty;
@@ -320,7 +350,7 @@ L_Empty:
close;
}
-042-2.gat,44,31,0|script|#DoorOut-@tutorial|45,0,0
+042-2.gat,44,31,0|script|#DoorOutTut1|45,0,0
{
end;
@@ -328,7 +358,7 @@ OnTouch:
callfunc "TutorialState";
if ((@tutorial < 4) && !(FLAGS & FLAG_TUTORIAL_DONE))
goto L_Block;
- warp "042-1.gat", 63, 49;
+ warp "042-1.gat", 51, 44;
end;
L_Block:
diff --git a/world/map/npc/042-2/stat_reset.txt b/world/map/npc/042-2/stat_reset.txt
new file mode 100644
index 00000000..c033fcb2
--- /dev/null
+++ b/world/map/npc/042-2/stat_reset.txt
@@ -0,0 +1,42 @@
+//
+
+042-2.gat,98,91,0|script|Jessie|159,
+{
+ if (BaseLevel >= 10)
+ goto L_Sorry;
+
+ mes "[Jessie]";
+ mes "\"I know a spell that will";
+ mes "reset status points on the youngings.";
+ next;
+ menu
+ "Reset my stats",L_Reset,
+ "Forget about it",L_Pass;
+
+L_Reset:
+ resetstatus;
+
+ mes "[Jessie]";
+ mes "\"There you are.";
+ mes "";
+ mes "Good as new!\"";
+ goto L_Close;
+
+L_Pass:
+ mes "[Jessie]";
+ mes "\"Very well then, see you.\"";
+ goto L_Close;
+
+L_Sorry:
+ mes "[Jessie]";
+ mes "\"My spell only works on the very young, sorry.\"";
+ next;
+ mes "\"You can always try Mailvox in the Noble Quarter.\"";
+ next;
+ mes "\"Head east through the docks, then south into North Tulimshar,";
+ mes "Then go north east into the Noble Quarter, sitting behind a stall in the east.\"";
+ goto L_Close;
+
+L_Close:
+ close;
+}
diff --git a/world/map/npc/042-2/tanisha.txt b/world/map/npc/042-2/tanisha.txt
index 482224f0..fb67989d 100644
--- a/world/map/npc/042-2/tanisha.txt
+++ b/world/map/npc/042-2/tanisha.txt
@@ -2,15 +2,15 @@
// Authors: Jenalya, alastrim
// Cleanup: o11c
-042-2.gat,37,90,0|script|Tanisha|114,
+042-2.gat,110,88,0|script|Tanisha|114,
{
- if (isin("042-2.gat", 30, 85, 36, 89))
+ if (isin("042-2.gat", 98, 84, 106, 89))
goto L_Fighting;
- if (FLAGS & FLAG_TUTORIAL_DONE) goto L_Tut_Done;
callfunc "TutorialState";
if ((@tutorial == 11) && !(@tanisha_hasan)) goto L_Hasan;
+ if (FLAGS & FLAG_TUTORIAL_DONE) goto L_Tut_Done;
if (@tutorial >= 8) goto L_Again;
if (@tutorial == 7) goto L_Stats;
if (@tutorial == 6) goto L_Fail;
@@ -42,8 +42,7 @@ L_Maggots:
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;
+ "I guess it's the least I can do.",L_Next1;
L_Next1:
mes "[Tanisha]";
@@ -51,7 +50,7 @@ L_Next1:
// 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)
+ if (getareausers("042-2.gat", 98, 84, 106, 89) >= $@Maggot_MaxHunters)
goto L_Crowded;
next;
goto L_Fight_Again;
@@ -60,14 +59,14 @@ 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 "\"Press A to focus on a monster. With ###keyTargetAttack; 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.\"";
+ mes "\"If you press the ###keyTarget;, 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.\"";
+ mes "\"Sometimes dead monsters leave some useful things. You can pick them up by pressing ###keyPickup; 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
@@ -87,13 +86,13 @@ L_ContinueFight:
callfunc "SetTutorialMask";
set @Maggot_Kills, 0;
set @time, 0;
- if (getareausers("042-2.gat", 30, 85, 36, 89) == 0)
+ if (getareausers("042-2.gat", 98, 84, 106, 89) == 0)
initnpctimer;
- warp "042-2.gat", 33, 87;
+ warp "042-2.gat", 101, 87;
goto L_Summon;
L_Summon:
- areamonster "042-2.gat", 30, 85, 36, 89, "", 1002, 1, "Tanisha::OnMaggotDeath";
+ areamonster "042-2.gat", 98, 84, 106, 89, "", 1002, 1, "Tanisha::OnMaggotDeath";
end;
L_Stats:
@@ -103,7 +102,13 @@ L_Stats:
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.\"";
+ mes "\"Press ###keyWindowStatus; 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;
+ mes "\"My Uncle sitting at the counter knows a spell to help the younglings reset their stats.\"";
+ next;
+ mes "\"He also knows of mages with even more powerful reset spells.\"";
+ next;
+ mes "\"Some strange wizard lurking around in the Tulimshar Noble Quarter.\"";
next;
goto L_StatsRe;
@@ -123,7 +128,12 @@ L_StatsRe:
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 "\"My Uncle sitting at the counter knows a spell to help the younglings reset their stats.\"";
+ next;
+ mes "\"He also knows of mages with even more powerful reset spells.\"";
+ next;
+ mes "\"Some strange wizard lurking around in the Tulimshar Noble Quarter.\"";
+ next;
mes "Tanisha looks at you with wide opened eyes.";
next;
mes "[Tanisha]";
@@ -153,6 +163,7 @@ L_Advice:
L_SetTutorial:
set @tutorial_tmp, 8;
callfunc "SetTutorialMask";
+ callfunc "TutorialCompleted";
goto L_Close;
L_Again:
@@ -172,14 +183,14 @@ L_Explain:
L_Fight:
mes "[Tanisha]";
- mes "\"Press A to focus on a monster. With X you can focus and attack.";
+ mes "\"Press ###keyTargetMonster; to focus on a monster. With ###keyTargetAttack; 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.\"";
+ mes "\"If you press the ###keyTarget; 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.\"";
+ mes "\"Sometimes dead monsters leave some useful things. You can pick them up with pressing ###keyPickup; 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.\"";
+ mes "\"If you feel exhausted from battle you can sit down by pressing ###keyBeingSit; to recover faster.\"";
goto L_Close;
L_Mob:
@@ -198,7 +209,7 @@ 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,
+ "A guy named Hasan is being mean.",L_Next3,
"Yes, could you explain again about...",L_Explain,
"No, thanks.",L_Close;
@@ -233,7 +244,7 @@ L_Crowded:
goto L_Close;
L_Sleep:
- warp "042-2.gat", 36, 90;
+ warp "042-2.gat", 101, 87;
mes "[Tanisha]";
mes "\"What are you doing in there?";
mes "Sleeping?";
@@ -241,7 +252,7 @@ L_Sleep:
set @Maggot_Kills, 0;
set @time, 0;
close2;
- if (getareausers("042-2.gat", 30, 85, 36, 89) == 0)
+ if (getareausers("042-2.gat", 98, 84, 106, 89) == 0)
goto L_CleanUp;
end;
@@ -259,7 +270,7 @@ L_Fail:
"No, I need a rest.", L_Close;
L_Next2:
- if (getareausers("042-2.gat", 30, 85, 36, 89) >= $@Maggot_MaxHunters)
+ if (getareausers("042-2.gat", 98, 84, 106, 89) >= $@Maggot_MaxHunters)
goto L_Crowded;
goto L_Fight_Again;
@@ -269,17 +280,17 @@ L_Fighting:
OnTimer1000:
setnpctimer 0;
- if (getareausers("042-2.gat", 30, 85, 36, 89) == 0)
+ if (getareausers("042-2.gat", 98, 84, 106, 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";
+ areatimer "042-2.gat", 98, 84, 106, 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";
+ areamonster "042-2.gat", 98, 84, 106, 89, "", 1002, 1, "Tanisha::OnMaggotDeath";
end;
OnTick:
@@ -301,17 +312,17 @@ OnMaggotDeath:
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))
+ if (isin("042-2.gat", 98, 84, 106, 89))
set @Maggot_Kills, @Maggot_Kills + 1;
if (@Maggot_Kills < 5)
goto L_Summon;
// else, complete
- warp "042-2.gat", 36, 90;
+ warp "042-2.gat", 110, 88;
set @tutorial_tmp, 7;
callfunc "SetTutorialMask";
set @Maggot_Kills, 0;
set @time, 0;
- if (getareausers("042-2.gat", 30, 85, 36, 89) == 0)
+ if (getareausers("042-2.gat", 98, 84, 106, 89) == 0)
goto L_CleanUp;
end;
@@ -321,6 +332,22 @@ L_Close:
OnInit:
set $@Maggot_MaxHunters, 4;
- areamonster "042-2.gat", 30, 85, 36, 89, "", 1002, 1, "Tanisha::OnMaggotDeath";
+ areamonster "042-2.gat", 98, 84, 106, 89, "", 1002, 1, "Tanisha::OnMaggotDeath";
end;
}
+042-2.gat,114,93,0|script|#DoorOutTut2|45,0,0
+{
+ end;
+
+OnTouch:
+ callfunc "TutorialState";
+ if (!(FLAGS & FLAG_TUTORIAL_DONE))
+ goto L_Block;
+ warp "042-1.gat", 63, 48;
+ end;
+
+L_Block:
+ message strcharinfo(0), "Tanisha: Please come here. I'd like some help!";
+ end;
+}
+