From 623f98ef8f4efa72d6ff7355517b0ace7235ef72 Mon Sep 17 00:00:00 2001 From: wushin Date: Mon, 23 Jun 2014 18:57:52 -0500 Subject: Starting Area Redux * Tutorial is a quick funnel * Exits are obvious and open * New Side Quests ** Valon's Beast Mastery ** Zegas's Barrels ** Magic Wand * Some Quests stay open after tutorial is done * House Maggot & Tame Scorpion added * Made Magic usable for lowbies with Wand --- world/map/npc/042-2/_import.txt | 5 ++ world/map/npc/042-2/_mobs.txt | 6 ++ world/map/npc/042-2/_warps.txt | 4 + world/map/npc/042-2/barrels.txt | 48 +++++++++++ world/map/npc/042-2/barrels_config.txt | 109 +++++++++++++++++++++++++ world/map/npc/042-2/magic_basement.txt | 21 +++++ world/map/npc/042-2/morgan.txt | 142 +++++++++++++++++++++++++++++++++ world/map/npc/042-2/sorfina.txt | 72 ++++++++++++----- world/map/npc/042-2/stat_reset.txt | 42 ++++++++++ world/map/npc/042-2/tanisha.txt | 85 +++++++++++++------- 10 files changed, 484 insertions(+), 50 deletions(-) create mode 100644 world/map/npc/042-2/barrels.txt create mode 100644 world/map/npc/042-2/barrels_config.txt create mode 100644 world/map/npc/042-2/magic_basement.txt create mode 100644 world/map/npc/042-2/morgan.txt create mode 100644 world/map/npc/042-2/stat_reset.txt (limited to 'world/map/npc/042-2') 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; +} + -- cgit v1.2.3-60-g2f50