summaryrefslogtreecommitdiff
path: root/world
diff options
context:
space:
mode:
Diffstat (limited to 'world')
-rw-r--r--world/map/npc/001-1/banker.txt2
-rw-r--r--world/map/npc/001-1/barber.txt2
-rw-r--r--world/map/npc/001-1/bernard.txt2
-rw-r--r--world/map/npc/001-1/bleacher.txt2
-rw-r--r--world/map/npc/001-1/children.txt67
-rw-r--r--world/map/npc/001-1/elanore.txt2
-rw-r--r--world/map/npc/001-1/entertainer.txt2
-rw-r--r--world/map/npc/001-1/luca.txt16
-rw-r--r--world/map/npc/001-1/merchant.txt2
-rw-r--r--world/map/npc/001-1/mikhail.txt2
-rw-r--r--world/map/npc/001-1/monster_guide.txt5
-rw-r--r--world/map/npc/001-1/rewards_master.txt2
-rw-r--r--world/map/npc/001-1/trader.txt2
-rw-r--r--world/map/npc/001-2/casino.txt10
-rw-r--r--world/map/npc/001-2/phaet.txt2
-rw-r--r--world/map/npc/001-2/shops.txt14
-rw-r--r--world/map/npc/001-2/troupe_leader.txt2
-rw-r--r--world/map/npc/002-1/nomads.txt6
-rw-r--r--world/map/npc/002-4/naem.txt8
-rw-r--r--world/map/npc/004-2/pirate_cave_exit.txt18
-rw-r--r--world/map/npc/005-1/npcs.txt15
-rw-r--r--world/map/npc/006-1/mika.txt2
-rw-r--r--world/map/npc/006-1/pachua.txt15
-rw-r--r--world/map/npc/006-2/npcs.txt87
-rw-r--r--world/map/npc/006-2/shops.txt5
-rw-r--r--world/map/npc/009-1/old_woman.txt11
-rw-r--r--world/map/npc/009-1/water_pump.txt2
-rw-r--r--world/map/npc/009-2/airlia.txt11
-rw-r--r--world/map/npc/009-2/alan.txt11
-rw-r--r--world/map/npc/009-2/nurse.txt24
-rw-r--r--world/map/npc/009-2/wyara.txt12
-rw-r--r--world/map/npc/009-3/sword.txt4
-rw-r--r--world/map/npc/009-3/warp.txt4
-rw-r--r--world/map/npc/009-4/torches.txt18
-rw-r--r--world/map/npc/010-2/chef.txt12
-rw-r--r--world/map/npc/010-2/loratay.txt105
-rw-r--r--world/map/npc/011-1/shops.txt4
-rw-r--r--world/map/npc/012-1/shops.txt1
-rw-r--r--world/map/npc/012-3/mana-seed.txt2
-rw-r--r--world/map/npc/013-3/barrier.txt6
-rw-r--r--world/map/npc/020-2/baktar.txt135
-rw-r--r--world/map/npc/021-1/bakery.txt2
-rw-r--r--world/map/npc/021-1/gate_guards.txt2
-rw-r--r--world/map/npc/021-1/hideandseek.txt20
-rw-r--r--world/map/npc/021-1/imec.txt2
-rw-r--r--world/map/npc/021-1/north_shops.txt25
-rw-r--r--world/map/npc/021-1/weellos.txt2
-rw-r--r--world/map/npc/021-1/workers.txt22
-rw-r--r--world/map/npc/021-2/bakery.txt21
-rw-r--r--world/map/npc/021-2/forge_shops.txt4
-rw-r--r--world/map/npc/021-2/government_building.txt11
-rw-r--r--world/map/npc/021-2/hotel_receptionist.txt12
-rw-r--r--world/map/npc/021-2/kylian.txt2
-rw-r--r--world/map/npc/021-2/manakins.txt47
-rw-r--r--world/map/npc/021-2/rebecca.txt11
-rw-r--r--world/map/npc/027-1/crypt.txt11
-rw-r--r--world/map/npc/027-1/golbenez.txt17
-rw-r--r--world/map/npc/027-2/alacrius.txt56
-rw-r--r--world/map/npc/027-2/alacrius2.txt115
-rw-r--r--world/map/npc/027-2/caretaker.txt19
-rw-r--r--world/map/npc/027-2/golbenez.txt8
-rw-r--r--world/map/npc/027-2/thurston.txt23
-rw-r--r--world/map/npc/027-3/casket_traps.txt80
-rw-r--r--world/map/npc/027-3/general_krukan_door.txt19
-rw-r--r--world/map/npc/027-3/locked_doors.txt128
-rw-r--r--world/map/npc/027-3/monsters.txt (renamed from world/map/npc/027-1/monsters.txt)20
-rw-r--r--world/map/npc/027-4/casket_traps.txt80
-rw-r--r--world/map/npc/027-4/general_razha_door.txt19
-rw-r--r--world/map/npc/027-4/monsters.txt72
-rw-r--r--world/map/npc/027-5/casket_traps.txt80
-rw-r--r--world/map/npc/027-5/general_terogan_door.txt19
-rw-r--r--world/map/npc/027-6/casket_traps.txt70
-rw-r--r--world/map/npc/027-6/general_krukan.txt231
-rw-r--r--world/map/npc/027-6/general_krukan_exitdoor.txt14
-rw-r--r--world/map/npc/027-7/general_razha.txt231
-rw-r--r--world/map/npc/027-7/general_razha_exitdoor.txt14
-rw-r--r--world/map/npc/027-8/general_terogan.txt304
-rw-r--r--world/map/npc/027-8/general_terogan_exitdoor.txt14
-rw-r--r--world/map/npc/030-3/orum_homunculus.txt3
-rw-r--r--world/map/npc/043-1/ryger.txt11
-rw-r--r--world/map/npc/068-1/stat_reset.txt (renamed from world/map/npc/002-2/rogue.txt)2
-rw-r--r--world/map/npc/068-1/tombstones.txt36
-rw-r--r--world/map/npc/068-1/vendors.txt0
-rw-r--r--world/map/npc/068-2/bank.txt (renamed from world/map/npc/021-2/bank.txt)2
-rw-r--r--world/map/npc/068-2/hetchel.txt (renamed from world/map/npc/021-1/hetchel.txt)2
-rw-r--r--world/map/npc/068-2/inya.txt (renamed from world/map/npc/021-2/inya.txt)2
-rw-r--r--world/map/npc/068-2/latoy.txt34
-rw-r--r--world/map/npc/069-2/wizards.txt60
-rwxr-xr-xworld/map/npc/functions/debug.txt10
-rw-r--r--world/map/npc/functions/undead_debug.txt106
90 files changed, 2088 insertions, 661 deletions
diff --git a/world/map/npc/001-1/banker.txt b/world/map/npc/001-1/banker.txt
index aee3e4ba..ddd1d4e3 100644
--- a/world/map/npc/001-1/banker.txt
+++ b/world/map/npc/001-1/banker.txt
@@ -1,6 +1,6 @@
//
-001-1.gat,57,52,0|script|Tybalt|107,
+001-1.gat,58,50,0|script|Tybalt|107,
{
callfunc "ClearVariables";
set @npcname$, "Tybalt";
diff --git a/world/map/npc/001-1/barber.txt b/world/map/npc/001-1/barber.txt
index 94525bd5..53d60778 100644
--- a/world/map/npc/001-1/barber.txt
+++ b/world/map/npc/001-1/barber.txt
@@ -1,6 +1,6 @@
//
-001-1.gat,53,38,0|script|Nicolas|100,
+001-1.gat,52,36,0|script|Nicolas|100,
{
mes "[Nicolas the Barber]";
mes "\"Do you need a barber?\"";
diff --git a/world/map/npc/001-1/bernard.txt b/world/map/npc/001-1/bernard.txt
index c152f673..67217bfa 100644
--- a/world/map/npc/001-1/bernard.txt
+++ b/world/map/npc/001-1/bernard.txt
@@ -1,6 +1,6 @@
// Variables used: nibble 0 of QUEST_SouthTulimshar
-001-1.gat,37,44,0|script|Bernard|117,
+001-1.gat,35,43,0|script|Bernard|117,
{
// This NPC previously used the variable TMW_Quest
callfunc "ClearVarTMW_Quest";
diff --git a/world/map/npc/001-1/bleacher.txt b/world/map/npc/001-1/bleacher.txt
index b43f0505..e6fada9c 100644
--- a/world/map/npc/001-1/bleacher.txt
+++ b/world/map/npc/001-1/bleacher.txt
@@ -1,6 +1,6 @@
//
-001-1.gat,27,53,0|script|Candide|156,
+001-1.gat,29,50,0|script|Candide|156,
{
mes "[Candide]";
mes "\"I've figured out how that volcanic ash bleaches cloth.";
diff --git a/world/map/npc/001-1/children.txt b/world/map/npc/001-1/children.txt
index 60477015..913f766b 100644
--- a/world/map/npc/001-1/children.txt
+++ b/world/map/npc/001-1/children.txt
@@ -1,8 +1,8 @@
-// Aisha and Nina
+// Aisha
001-1.gat,95,29,0|script|Aisha|108,
{
- set @TEMP,rand(9);
+ set @TEMP,rand(10);
if(@TEMP == 1) goto L_1;
if(@TEMP == 2) goto L_2;
if(@TEMP == 3) goto L_3;
@@ -11,6 +11,7 @@
if(@TEMP == 6) goto L_6;
if(@TEMP == 7) goto L_7;
if(@TEMP == 8) goto L_8;
+ if(@TEMP == 9) goto L_9;
goto L_1;
L_1:
@@ -53,58 +54,6 @@ L_8:
mes "\"That volcano was sooo scary! The earth was shaking and everything was breaking down... but now they have rebuilt everything.\"";
goto L_Close;
-L_Close:
- set @TEMP, 0;
- close;
-}
-
-001-1.gat,39,67,0|script|Nina|103,
-{
- mes "[Nina]";
- set @TEMP,rand(10);
- if(@TEMP == 0) goto L_1;
- if(@TEMP == 1) goto L_1;
- if(@TEMP == 2) goto L_2;
- if(@TEMP == 3) goto L_3;
- if(@TEMP == 4) goto L_4;
- if(@TEMP == 5) goto L_5;
- if(@TEMP == 6) goto L_6;
- if(@TEMP == 7) goto L_7;
- if(@TEMP == 8) goto L_8;
- goto L_9;
-
-L_1:
- mes "\"If I learned anything from school, Grenxen founded Tulimshar.\"";
- goto L_Close;
-
-L_2:
- mes "\"When I was picking rocks from the field, I saw a red scorpion.\"";
- goto L_Close;
-
-L_3:
- mes "\"Its polite to state your name before talking to anyone.\"";
- goto L_Close;
-
-L_4:
- mes "\"I have a Scorpion Doll!\"";
- goto L_Close;
-
-L_5:
- mes "\"I always take some spare Cactus Juice with me on the field. They are heavy, though.\"";
- goto L_Close;
-
-L_6:
- mes "\"When you are feeling bad, eating something can usually help you heal faster.\"";
- goto L_Close;
-
-L_7:
- mes "\"Grenxen is the Demon that founded Tulimshar.\"";
- goto L_Close;
-
-L_8:
- mes "\"That volcano eruption was scary; much of Tulimshar was destroyed. But the mayor had everything rebuilt quickly.\"";
- goto L_Close;
-
L_9:
mes "\"I know a very bad word. But I must not say it, because monsters will come and get me if I do!\"";
next;
@@ -113,7 +62,7 @@ L_9:
"Oh, you better keep it for yourself then.", L_Close;
L_tell:
- mes "[Nina]";
+ mes "[Aisha]";
mes "\"Yes, I heard my mother say it once. And she made me promise her to never say it. Never.\"";
next;
menu
@@ -122,17 +71,17 @@ L_tell:
"Goodbye!", L_Close;
L_keepword:
- mes "[Nina]";
+ mes "[Aisha]";
mes "\"No.\"";
goto L_Close;
L_giveword:
- mes "[Nina]";
- mes "Nina looks around as she hushes you to silence. After a few seconds, she whispers to you.";
+ mes "[Aisha]";
+ mes "Aisha looks around as she hushes you to silence. After a few seconds, she whispers to you.";
mes "\"I like you! So I will tell you the bad word. But you can't tell anyone else about it! The bad word is '" + getspellinvocation("aggravate") + "'.\"";
next;
- mes "[Nina]";
+ mes "[Aisha]";
mes "Terrified, she looks around once more.";
mes "\"But you mustn't tell anyone!\"";
goto L_Close;
diff --git a/world/map/npc/001-1/elanore.txt b/world/map/npc/001-1/elanore.txt
index 87ef060d..262f8aca 100644
--- a/world/map/npc/001-1/elanore.txt
+++ b/world/map/npc/001-1/elanore.txt
@@ -82,7 +82,7 @@ L_Heal4:
goto L_Heal_L;
L_Heal_L:
- set @TEMP,rand(4);
+ set @TEMP,rand(3);
if(@TEMP == 1) goto L_Heal_2;
if(@TEMP == 2) goto L_Heal_3;
if(@TEMP == 3) goto L_Heal_4;
diff --git a/world/map/npc/001-1/entertainer.txt b/world/map/npc/001-1/entertainer.txt
index f98b7d31..fea4f532 100644
--- a/world/map/npc/001-1/entertainer.txt
+++ b/world/map/npc/001-1/entertainer.txt
@@ -1,6 +1,6 @@
// Emote NPC allows for players to learn the emote skill
-001-1.gat,30,45,0|script|Entertainer|165,
+001-1.gat,30,43,0|script|Entertainer|165,
{
if (getskilllv(SKILL_EMOTE) > 0) goto L_Has;
diff --git a/world/map/npc/001-1/luca.txt b/world/map/npc/001-1/luca.txt
index 61d27cd4..84d9491b 100644
--- a/world/map/npc/001-1/luca.txt
+++ b/world/map/npc/001-1/luca.txt
@@ -60,12 +60,9 @@ L_Next:
menu
"Yeah!", L_teach0_follow,
"Certainly!", L_teach0_follow,
- "Wait... what do you mean?", L_CallExplain,
- "Please explain some more.", L_CallExplain,
+ "Wait... what do you mean?", L_Explain,
+ "Please explain some more.", L_Explain,
"No.", L_Nev;
-L_CallExplain:
- callsub S_explain;
- goto L_teach0_follow;
L_teach0_follow:
mes "[Luca the Hunter]";
@@ -138,7 +135,7 @@ L_wronganswer:
mes "\"No, that was wrong. I suppose you're not as experienced as I thought you'd be.\"";
goto L_Close;
-S_explain:
+L_Explain:
mes "[Luca the Hunter]";
mes "\"Alright, what do you want to know?\"";
next;
@@ -149,9 +146,7 @@ L_Explain_loop:
"What's skill focus?", L_explain_focus,
"What skills are there?", L_explain_skills,
"How do skills work?", L_explain_work,
- "Thanks, I think I got it!", L_Return;
-L_Return:
- return;
+ "Thanks, I think I got it!", L_Next;
L_explain_focus:
mes "[Luca the Hunter]";
@@ -292,8 +287,7 @@ L_MenuItems:
goto L_Close;
L_teachmore_explain:
- callsub S_explain;
- goto L_teachmore2;
+ goto L_Explain;
L_focus:
getunactivatedpoolskilllist;
diff --git a/world/map/npc/001-1/merchant.txt b/world/map/npc/001-1/merchant.txt
index 43a5da55..ea51d12e 100644
--- a/world/map/npc/001-1/merchant.txt
+++ b/world/map/npc/001-1/merchant.txt
@@ -1,3 +1,3 @@
//
-001-1.gat,39,52,0|shop|Neko|101,CactusDrink :-1,CactusPotion :-1,Knife :-1,SharpKnife :-1,Dagger :-1,SerfHat :-1,CottonShirt :-1,LeatherShirt :-1,CottonShorts :-1,LeatherShield :-1,CottonHeadband :-1,CottonBoots :-1
+001-1.gat,38,50,0|shop|Neko|101,CactusDrink :-1,CactusPotion :-1,Beer :-1,ChickenLeg :-2
diff --git a/world/map/npc/001-1/mikhail.txt b/world/map/npc/001-1/mikhail.txt
index b2b6d64d..63f29353 100644
--- a/world/map/npc/001-1/mikhail.txt
+++ b/world/map/npc/001-1/mikhail.txt
@@ -1,6 +1,6 @@
// Variables used: nibble 0 of QUEST_SouthTulimshar
-001-1.gat,50,46,0|script|Mikhail|120,
+001-1.gat,54,43,0|script|Mikhail|120,
{
// This NPC previously used the variable TMW_Quest
callfunc "ClearVarTMW_Quest";
diff --git a/world/map/npc/001-1/monster_guide.txt b/world/map/npc/001-1/monster_guide.txt
index d0313645..a46dfc28 100644
--- a/world/map/npc/001-1/monster_guide.txt
+++ b/world/map/npc/001-1/monster_guide.txt
@@ -1,8 +1,9 @@
//
-001-1.gat,48,52,0|script|Aidan|102,
+001-1.gat,49,51,0|script|Aidan|102,
{
- if(MPQUEST == 0) goto L_Register;
+ if (MPQUEST == 0)
+ goto L_Register;
mes "[Aidan the Monster Guide]";
mes "You currently have " +Mobpt+ " Monster Points. These points are acquired while killing monsters";
close;
diff --git a/world/map/npc/001-1/rewards_master.txt b/world/map/npc/001-1/rewards_master.txt
index 0e8fbe1f..1ae6b168 100644
--- a/world/map/npc/001-1/rewards_master.txt
+++ b/world/map/npc/001-1/rewards_master.txt
@@ -1,6 +1,6 @@
//
-001-1.gat,50,53,0|script|Ishi|106,
+001-1.gat,50,51,0|script|Ishi|106,
{
if (MPQUEST == 0) goto L_Register;
if (tvis == 0) set tvis, 1;
diff --git a/world/map/npc/001-1/trader.txt b/world/map/npc/001-1/trader.txt
index eaf95ffd..63108d51 100644
--- a/world/map/npc/001-1/trader.txt
+++ b/world/map/npc/001-1/trader.txt
@@ -3,7 +3,7 @@
// Updated by: TheKandiman
// Reviewed by: Wombat
-001-1.gat,57,33,0|script|Trader|115,
+001-1.gat,57,31,0|script|Trader|115,
{
set @Ironprice, 1000;
set @Sulphurprice, 1200;
diff --git a/world/map/npc/001-2/casino.txt b/world/map/npc/001-2/casino.txt
index e14decd6..1c9c61cf 100644
--- a/world/map/npc/001-2/casino.txt
+++ b/world/map/npc/001-2/casino.txt
@@ -15,32 +15,32 @@ L_End:
end;
}
-001-2.gat,134,23,0|script|Valdo|117,
+001-2.gat,39,32,0|script|Valdo|117,
{
mes "[Valdo the Worker]";
mes "\"Please let me work. I'm really in a hurry!\"";
close;
}
-001-2.gat,37,65,0|script|Slot1|400,
+001-2.gat,37,65,0|script|Slots#1|400,
{
callfunc "SlotMachine";
close;
}
-001-2.gat,39,65,0|script|Slot2|400,
+001-2.gat,39,65,0|script|Slots#2|400,
{
callfunc "SlotMachine";
close;
}
-001-2.gat,41,65,0|script|Slot3|400,
+001-2.gat,41,65,0|script|Slots#3|400,
{
callfunc "SlotMachine";
close;
}
-001-2.gat,32,67,0|shop|MoneyChanger|124,CasinoCoins :-1
+001-2.gat,102,27,0|shop|MoneyChanger|124,CasinoCoins :-1
001-2.gat,28,63,0|script|BlackJack|107,
{
diff --git a/world/map/npc/001-2/phaet.txt b/world/map/npc/001-2/phaet.txt
index ebeaa4a0..5711047e 100644
--- a/world/map/npc/001-2/phaet.txt
+++ b/world/map/npc/001-2/phaet.txt
@@ -1,6 +1,6 @@
//
-001-2.gat,24,23,0|script|Phaet|125,
+001-2.gat,132,25,0|script|Phaet|125,0,0,
{
mes "[Phaet the Royal Guard]";
mes "\"Hey, you seem tough enough! Would you like to prove your skills? I'll let you in the arena if you give me 50 gp. You can fight against other players there.\"";
diff --git a/world/map/npc/001-2/shops.txt b/world/map/npc/001-2/shops.txt
index 1857a5df..00db7c93 100644
--- a/world/map/npc/001-2/shops.txt
+++ b/world/map/npc/001-2/shops.txt
@@ -1,13 +1,3 @@
-//
+// Bartender
-001-2.gat,26,26,0|shop|InnKeeper|112,Beer :-1,Cake :-1,CherryCake :-1
-
-001-2.gat,103,26,0|script|Rebecca|118,
-{
- set @npcname$, "Rebecca the Inn Keeper";
- set @cost, 100;
- callfunc "Inn";
- set @npcname$, "";
- set @cost, 0;
- close;
-}
+001-2.gat,21,27,0|shop|Bartender#Casino|112,Beer :-1,Cake :-1,CherryCake :-1
diff --git a/world/map/npc/001-2/troupe_leader.txt b/world/map/npc/001-2/troupe_leader.txt
index f48cd51a..996e14e7 100644
--- a/world/map/npc/001-2/troupe_leader.txt
+++ b/world/map/npc/001-2/troupe_leader.txt
@@ -1,6 +1,6 @@
//
-001-2.gat,34,25,0|script|Troupe Leader|165,
+001-2.gat,34,23,0|script|Troupe Leader|165,
{
callfunc "ClearVariables";
diff --git a/world/map/npc/002-1/nomads.txt b/world/map/npc/002-1/nomads.txt
index 2d93ffe4..c701efbe 100644
--- a/world/map/npc/002-1/nomads.txt
+++ b/world/map/npc/002-1/nomads.txt
@@ -1,6 +1,6 @@
//
-002-1.gat,15,67,0|script|Samuel|132,
+002-1.gat,92,100,0|script|Samuel|132,
{
mes "[Samuel the Nomad]";
mes "\"This is really a nice place.\"";
@@ -8,9 +8,9 @@
close;
}
-002-1.gat,18,68,0|script|Elijah|128,
+002-1.gat,102,100,0|script|Elijah|128,
{
mes "[Elijah the Nomad]";
- mes "\"If I only had a tent...\"";
+ mes "\"It's nice to find a respite like this...\"";
close;
}
diff --git a/world/map/npc/002-4/naem.txt b/world/map/npc/002-4/naem.txt
index 398ef514..1d3b1d2c 100644
--- a/world/map/npc/002-4/naem.txt
+++ b/world/map/npc/002-4/naem.txt
@@ -132,14 +132,14 @@ L_Naem_Gloves:
mes "\"Hey, good job on getting that together! Take these gloves, they might prove useful in the underground palace.\"";
goto L_Close;
-L_Naem_TooMany:
+L_Naem_Complete:
mes "[Naem]";
- mes "\"You have too many items for me to give you a reward.\"";
+ mes "\"Yo-ho-ho, a miner's life for me!\"";
goto L_Close;
-L_Naem_Complete:
+L_Naem_TooMany:
mes "[Naem]";
- mes "\"Yo-ho-ho, a miner's life for me!\"";
+ mes "\"You have too many items for me to give you a reward.\"";
goto L_Close;
L_Close:
diff --git a/world/map/npc/004-2/pirate_cave_exit.txt b/world/map/npc/004-2/pirate_cave_exit.txt
new file mode 100644
index 00000000..42b2a6b5
--- /dev/null
+++ b/world/map/npc/004-2/pirate_cave_exit.txt
@@ -0,0 +1,18 @@
+// The Secret Pirate Cave Entrance
+
+004-2.gat,33,62,0|script|#piratecave1|45,1,1,
+{
+ mes "[Trapdoor]";
+ mes "\"Descend into the caves?\"";
+ next;
+ menu
+ "Yes.", L_PirateCave,
+ "Nevermind", L_Close;
+
+L_PirateCave:
+ warp "004-3",80,23;
+ goto L_Close;
+
+L_Close:
+ close;
+}
diff --git a/world/map/npc/005-1/npcs.txt b/world/map/npc/005-1/npcs.txt
index fda22da2..8189a4a4 100644
--- a/world/map/npc/005-1/npcs.txt
+++ b/world/map/npc/005-1/npcs.txt
@@ -1,14 +1,13 @@
//
-005-1.gat,69,76,0|shop|George#sandstorm|115,ShortBow :-1,Arrow :1,IronArrow :-1,Beer :-1,ChickenLeg :-2
-005-1.gat,66,75,0|script|Kieron|132,
-{
- mes "[Kieron]";
- mes "\"Be careful if you're going in that cave,";
- mes "it's packed full of monsters.\"";
- close;
-}
+//005-1.gat,66,75,0|script|Kieron|132,
+//{
+// mes "[Kieron]";
+// mes "\"Be careful if you're going in that cave,";
+// mes "it's packed full of monsters.\"";
+// close;
+//}
005-1.gat,91,23,0|script|William|131,
{
diff --git a/world/map/npc/006-1/mika.txt b/world/map/npc/006-1/mika.txt
index 2b5c7401..d7ba11bc 100644
--- a/world/map/npc/006-1/mika.txt
+++ b/world/map/npc/006-1/mika.txt
@@ -1,4 +1,4 @@
-006-1.gat,39,27,0|script|Mika|114,
+006-1.gat,39,22,0|script|Mika|114,
{
mes "[Mika]";
mes "\"My father told me about a man living in this desert who makes clothes out of snake skin.\"";
diff --git a/world/map/npc/006-1/pachua.txt b/world/map/npc/006-1/pachua.txt
index 9ed34c06..43681d84 100644
--- a/world/map/npc/006-1/pachua.txt
+++ b/world/map/npc/006-1/pachua.txt
@@ -1,14 +1,11 @@
-006-1.gat,23,100,0|script|Pachua|143,
+006-1.gat,24,113,0|script|Pachua|143,
{
- set @LEATHER_PATCH_PRICE, 300;
-// @wants_leather_patch is used as boolean
- set @wants_leather_patch, QUEST_Forestbow_state & NIBBLE_4_MASK;
-
- if ((gettime(5) >= $@xmas2011_start_day) && (gettime(5) < $@xmas2011_reward_start_day) && (gettime(6) == 12) && (gettime(7) == $@xmas2011_year))
- set @wants_leather_patch, @wants_leather_patch | (xmas11 & $@xmas11_talkedToChief);
+ setarray $@npc_loc, 24, 113, 4;
+ callfunc "PCtoNPCRange";
+ if (@npc_check)
+ goto L_Close;
- set $@xmas2011_start_day, 10;
- set $@xmas2011_reward_start_day, 25;
+ set @LEATHER_PATCH_PRICE, 300;
if (QUEST_MIRIAM_cheat != 0) goto L_warp_cheat;
if (QUEST_MIRIAM_start != 0) goto L_smoke;
diff --git a/world/map/npc/006-2/npcs.txt b/world/map/npc/006-2/npcs.txt
new file mode 100644
index 00000000..90d5b176
--- /dev/null
+++ b/world/map/npc/006-2/npcs.txt
@@ -0,0 +1,87 @@
+// Pachua's Tribe
+
+006-2.gat,49,25,0|script|Falkurn|178,
+{
+ mes "[Falkurn]";
+ mes "\"Greetings traveler, what wind brings you to our door?\"";
+ menu
+ "I'm looking for exotic goods.", L_Shops,
+ "I need some leatherwork done.", L_Pachua,
+ "Just Looking Around.", L_Close;
+
+L_Shops:
+ mes "\"My Wife, Ardra, tends the Kitchen see her for food and drink.\"";
+ mes "\"She can be found in the West Cave.\"";
+ next;
+ mes "\"Reathe trades many of our leather goods to exotic lands.\"";
+ mes "\"She always has the most interesting finds.\"";
+ mes "\"She can be found in the East Cave.\"";
+ goto L_Close;
+
+L_Pachua:
+ mes "\"Our Chief can be found by going through the southern most cave.\"";
+ mes "\"He can help you with any leatherwork you may need done.\"";
+ goto L_Close;
+
+L_Close:
+ close;
+}
+
+006-2.gat,80,25,0|script|Darug|178,
+{
+ mes "[Darug]";
+ mes "\"We are the all thats left of the natives that used to wander the plains.\"";
+ mes "\"Years of war between the various 'Civilized' nations drained the natural resources.\"";
+ next;
+ mes "\"The waters have begun to run dry.\"";
+ mes "\"All manner of beasts are getting more agressive.\"";
+ mes "\"The Mana has been poison by Dark Magic.\"";
+ next;
+ mes "\"Even now, I sense a evil presense nearby.\"";
+ mes "\"I can feel it lying deep underground.\"";
+ mes "\"Gnawing at the underbelly of Tonori.\"";
+ next;
+ mes "\"We believe it's one of the evils Nu'rem let loose to destroy The Mana\"";
+ mes "\"We have been searching, but have not been able to locate the source.\"";
+ mes "\"Maybe our scouts will return soon with the answers.\"";
+ close;
+}
+
+006-2.gat,34,64,0|script|Meluna|179,
+{
+ mes "[Meluna]";
+ mes "\"Greetings traveler, how blows the wind?\"";
+ goto L_Main;
+
+L_Main:
+ menu
+ "Um... What?", L_Explain,
+ "Gentle.", L_Heal,
+ "Strong.", L_Close;
+
+L_Explain:
+ mes "\"Ahh sorry, you are not familiar with our customs.\"";
+ mes "\"The Mana was made into the 4 main elements by The Gods; Jande made Fire, Nu'rem made Earth, Tal made Air, and, Di'tal made Water.\"";
+ mes "\"It was Tal that gives us our first and last breathe.\"";
+ next;
+ mes "\"When we ask you how 'blows the wind?'\"";
+ mes "\"We mean how are your feeling?\"";
+ next;
+ mes "\"We typically respond with a strength of wind; normally Gentle or Strong\"";
+ goto L_Main;
+
+L_Heal:
+ if (BaseLevel > 70)
+ goto L_NoHeal;
+ heal 1000,100;
+ goto L_Close;
+
+L_NoHeal:
+ mes "\"I already sense the power of the Gods carrying you.\"";
+ mes "\"Any wounds you have are beyond my power to fix.\"";
+ goto L_Close;
+
+L_Close:
+ mes "\"May Tal carry you on their back.\"";
+ close;
+}
diff --git a/world/map/npc/006-2/shops.txt b/world/map/npc/006-2/shops.txt
new file mode 100644
index 00000000..b7e8d85a
--- /dev/null
+++ b/world/map/npc/006-2/shops.txt
@@ -0,0 +1,5 @@
+// Exotic Trader
+// Toy Sabre - 10mil, Cap - 20mil, High Priest Crown - 30mil, Monster Skull Helmet - 30mil
+006-2.gat,81,36,0|shop|Reathe|179,ToySabre :10000000,Cap :20000000,HighPriestCrown :30000000,MonsterSkullHelmet :30000000
+
+006-2.gat,30,35,0|shop|Ardra|179,CactusDrink :-1,CactusPotion :-1,BottleOfWater :-1,RoastedMaggot :-1
diff --git a/world/map/npc/009-1/old_woman.txt b/world/map/npc/009-1/old_woman.txt
index 2d70cc6d..d8c063dc 100644
--- a/world/map/npc/009-1/old_woman.txt
+++ b/world/map/npc/009-1/old_woman.txt
@@ -86,15 +86,4 @@ L_Close:
S_Update_Mask:
set QUEST_Hurnscald, (QUEST_Hurnscald & ~(NIBBLE_3_MASK)) | (@inspector << NIBBLE_3_SHIFT);
return;
-
-OnPCDieEvent:
- if (countitem(E10_TOKEN_ID) < 1) end;
- delitem E10_TOKEN_ID, 1;
- getitem "DarkPetal", 1;
- message strcharinfo(0), "As you fall, the dark rose crumbles...";
- if ((Easter_2010_QuestState >> E10_STATE_ROSE_SHIFT) & E10_STATE_ROSE_MASK >= E10_STATE_ROSE_ROSE_USED) end;
- message strcharinfo(0), "There is a strange feeling pulling at you. A place... unfamiliar, yet unavoidable.";
- message strcharinfo(0), "But you do not move... the force is too distant, too weak, a shadow of the power that it might have once been.";
- set Easter_2010_QuestState, (Easter_2010_QuestState & ~(E10_STATE_ROSE_MASK << E10_STATE_ROSE_SHIFT)) | (E10_STATE_ROSE_ROSE_USED << E10_STATE_ROSE_SHIFT);
- end;
}
diff --git a/world/map/npc/009-1/water_pump.txt b/world/map/npc/009-1/water_pump.txt
index 8d7d5c8d..9f15355f 100644
--- a/world/map/npc/009-1/water_pump.txt
+++ b/world/map/npc/009-1/water_pump.txt
@@ -1,6 +1,6 @@
// Water pump. You can fill empty bottles here
-009-1.gat,76,33,0|script|Water Pump|203,
+009-1.gat,76,33,0|script|Water Pump|400,
{
callfunc "WaterBottle";
end;
diff --git a/world/map/npc/009-2/airlia.txt b/world/map/npc/009-2/airlia.txt
index b02627c8..3748269d 100644
--- a/world/map/npc/009-2/airlia.txt
+++ b/world/map/npc/009-2/airlia.txt
@@ -53,11 +53,12 @@ L_Caretaker:
menu
"Sorry, no.", L_Next,
"My what?", L_Caretaker_mount;
- //else ==
- menu
- "Sorry, no.", L_Next,
- "I have a letter from your father.", L_Caretaker_first_reward,
- "My what?", L_Caretaker_mount;
+ if (QUEST_Graveyard_Caretaker == @Q_STATUS_RECIEVED_FIRST_LETTER)
+ menu
+ "Sorry, no.", L_Next,
+ "I have a letter from your father.", L_Caretaker_first_reward,
+ "My what?", L_Caretaker_mount;
+ goto L_Next;
L_Next:
mes "[Airlia]";
diff --git a/world/map/npc/009-2/alan.txt b/world/map/npc/009-2/alan.txt
index 6d39e3e2..cf425d6a 100644
--- a/world/map/npc/009-2/alan.txt
+++ b/world/map/npc/009-2/alan.txt
@@ -98,11 +98,14 @@ L_State_2:
next;
if (@inspector == 1)
menu
- "Yes, I did. He said that the trees turned into dangerous monsters.", L_Foo,
+ "Yes, I did. He said that the trees turned into dangerous monsters.", L_Next,
"Have you seen anything strange recently that might be connected to the robberies?", L_NohMask_Answer;
- menu
- "Yes, I did. He said that the trees turned into dangerous monsters.", L_Foo;
-L_Foo:
+ if (@inspector != 1)
+ menu
+ "Yes, I did. He said that the trees turned into dangerous monsters.", L_Next1;
+ goto L_Next1;
+
+L_Next1:
mes "[Alan]";
mes "\"Oh, that's really bad news. Maybe you can do his job?";
mes "When you kill some of these tree monsters and bring me their wood I can take a look at them.";
diff --git a/world/map/npc/009-2/nurse.txt b/world/map/npc/009-2/nurse.txt
index 4a432db4..63ae6a67 100644
--- a/world/map/npc/009-2/nurse.txt
+++ b/world/map/npc/009-2/nurse.txt
@@ -335,9 +335,9 @@ L_choosePut:
if ( (@hlPut > @hlNeed) && (@vnPut <= @vnNeed) )
goto L_m_hl_l_vn;
if ( (@hlPut <= @hlNeed) && (@vnPut > @vnNeed) )
- goto L_l_hl_m_vn;
+ goto L_hl_m_vn;
if ( (@hlPut < @hlNeed) && (@vnPut < @vnNeed) )
- goto L_l_hl_l_vn;
+ goto L_hl_l_vn;
mes "You feel quite normal.";
mes "[Nurse]";
@@ -377,7 +377,7 @@ L_m_hl_l_vn:
next;
goto L_check_st;
-L_l_hl_m_vn:
+L_hl_m_vn:
// first poison for 10 minutes, player will die anyway
sc_start sc_poison, 1, 20;
mes "You feel a sting in your stomach and your heart starts pounding loudly.";
@@ -393,7 +393,7 @@ L_l_hl_m_vn:
goto L_Close;
// goto L_check_st;
-L_l_hl_l_vn:
+L_hl_l_vn:
//poison for 1 minute
sc_start sc_poison, 1, 20;
mes "The antidote seems to have no effect.";
@@ -401,30 +401,30 @@ L_l_hl_l_vn:
L_check_st:
if ( (@stPut < @stNeed) )
- goto L_l_st;
+ goto L_st;
if ( (@stPut > @stNeed) )
goto L_m_st;
if (@hl_vn_ok == 1)
- goto L_allcorrect;
+ goto L_AllCorrect;
mes "[Nurse]";
mes "\"The amount of the stabilizer seems alright, but we have to think again about the other ingredients.\"";
next;
- goto L_notallcorrect;
+ goto L_NotAllCorrect;
-L_l_st:
+L_st:
mes "[Nurse]";
mes "\"It looks like we used not enough of the stabilizer. The antidote will lose its effect after some time.\"";
next;
- goto L_notallcorrect;
+ goto L_NotAllCorrect;
L_m_st:
mes "[Nurse]";
mes "\"It looks like we used too much of the stabilizer. The antidote will turn into venom again after some time.\"";
next;
- goto L_notallcorrect;
+ goto L_NotAllCorrect;
-L_allcorrect:
+L_AllCorrect:
mes "You feel totally normal again.";
next;
mes "[Nurse]";
@@ -440,7 +440,7 @@ L_allcorrect:
callsub S_Update_Var;
goto L_Close;
-L_notallcorrect:
+L_NotAllCorrect:
mes "[Nurse]";
mes "\"It didn't work. You are a really brave person. Now you should rest and recover. I hope you won't give up now. Please come back later, so we can try it again.\"";
next;
diff --git a/world/map/npc/009-2/wyara.txt b/world/map/npc/009-2/wyara.txt
index da2b8dc5..cf1912fc 100644
--- a/world/map/npc/009-2/wyara.txt
+++ b/world/map/npc/009-2/wyara.txt
@@ -47,11 +47,13 @@ L_Main:
"Can you help me learn magic?", L_Magic,
"I would like to buy potions.", L_Shop,
"Bye!", L_Close;
- menu
- "What do you know about...", L_Question,
- "Can you help me learn magic?", L_Magic,
- "I would like to buy potions.", L_Shop,
- "Bye!", L_Close;
+ if (!(!@has_magic && (MAGIC_FLAGS & MFLAG_TOUCHED_MANASEED)))
+ menu
+ "What do you know about...", L_Question,
+ "Can you help me learn magic?", L_Magic,
+ "I would like to buy potions.", L_Shop,
+ "Bye!", L_Close;
+ goto L_Shop;
L_Shop:
mes "[Wyara the Witch]";
diff --git a/world/map/npc/009-3/sword.txt b/world/map/npc/009-3/sword.txt
index df4adeb4..f0517e96 100644
--- a/world/map/npc/009-3/sword.txt
+++ b/world/map/npc/009-3/sword.txt
@@ -126,7 +126,7 @@ L_L2_W11:
mes "\"Thou hast returned. That must mean that thy wish to learn the magic of war is still alive?\"";
next;
menu
- "No, I just wanted to say `hi'.", L_sayhi,
+ "No, I just wanted to say `hi'.", L_farewell,
"Yes, teach me more!", L_Next2;
L_Next2:
@@ -165,7 +165,7 @@ L_lacking_mobpoints:
mes "\"Thou lackest the monster points needed to prove thy worthiness. I shall not reveal more to thee until thou hast slain more monsters.\"";
close;
-L_sayhi:
+L_farewell:
mes "[Magic Sword]";
mes "\"Please leave me in peace.\"";
close;
diff --git a/world/map/npc/009-3/warp.txt b/world/map/npc/009-3/warp.txt
index db1146e8..bc828df4 100644
--- a/world/map/npc/009-3/warp.txt
+++ b/world/map/npc/009-3/warp.txt
@@ -8,7 +8,9 @@
L_Next:
if (Zeny < 150)
goto L_NotEnoughMoney;
- goto L_Pay;
+ if (Zeny >= 150)
+ goto L_Pay;
+ goto L_Exit;
L_Exit:
close;
diff --git a/world/map/npc/009-4/torches.txt b/world/map/npc/009-4/torches.txt
index 22d718af..f093bc10 100644
--- a/world/map/npc/009-4/torches.txt
+++ b/world/map/npc/009-4/torches.txt
@@ -156,13 +156,13 @@ L_Use_Red:
// T R o Y g B p
// ^ < < < < , X . > > > >
if (@TorchColor == 1)
- goto L_Wrong_Color;
+ goto L_WrongColor;
if (2 <= @TorchColor && @TorchColor <= 5)
goto L_Color_Dec;
if (@TorchColor == 6)
goto L_Color_Dec_Wrong;
if (@TorchColor == 7)
- goto L_Wrong_Color;
+ goto L_WrongColor;
if (@TorchColor == 8)
goto L_Color_Inc_Wrong;
if (9 <= @TorchColor && @TorchColor <= 12)
@@ -184,13 +184,13 @@ L_Use_Yellow:
if (1 <= @TorchColor && @TorchColor <= 4)
goto L_Color_Inc;
if (@TorchColor == 5)
- goto L_Wrong_Color;
+ goto L_WrongColor;
if (6 <= @TorchColor && @TorchColor <= 9)
goto L_Color_Dec;
if (@TorchColor == 10)
goto L_Color_Dec_Wrong;
if (@TorchColor == 11)
- goto L_Wrong_Color;
+ goto L_WrongColor;
if (@TorchColor == 12)
goto L_Color_Inc_Wrong;
@@ -212,13 +212,13 @@ L_Use_Blue:
if (@TorchColor == 2)
goto L_Color_Dec_Wrong;
if (@TorchColor == 3)
- goto L_Wrong_Color;
+ goto L_WrongColor;
if (@TorchColor == 4)
goto L_Color_Inc_Wrong;
if (5 <= @TorchColor && @TorchColor <= 8)
goto L_Color_Inc;
if (@TorchColor == 9)
- goto L_Wrong_Color;
+ goto L_WrongColor;
if (10 <= @TorchColor && @TorchColor <= 12)
goto L_Color_Dec;
@@ -241,13 +241,13 @@ L_Color_Dec_Wrong:
set @TorchColor, @TorchColor - 1;
if (@TorchColor == 0)
set @TorchColor, 12;
- goto L_Wrong_Color;
+ goto L_WrongColor;
L_Color_Inc_Wrong:
set @TorchColor, @TorchColor + 1;
if (@TorchColor == 13)
set @TorchColor, 1;
- goto L_Wrong_Color;
+ goto L_WrongColor;
L_Color_Inc:
set @TorchColor, @TorchColor + 1;
@@ -261,7 +261,7 @@ L_Show_Color:
mes "As your pour the powder into the flame you can see its tint transform to a " + @intensities$[@TorchIntensity] + " " + @colors$[@TorchColor] + ".";
goto L_Color_Loop;
-L_Wrong_Color:
+L_WrongColor:
callfunc "SetTorchColor";
set @TorchIntensity, @TorchIntensity + 1;
if (@TorchIntensity > 2)
diff --git a/world/map/npc/010-2/chef.txt b/world/map/npc/010-2/chef.txt
index 1ea64fef..0f1785d7 100644
--- a/world/map/npc/010-2/chef.txt
+++ b/world/map/npc/010-2/chef.txt
@@ -14,7 +14,7 @@
L_lace_chococake:
next;
menu
- "Sorry.", L_end,
+ "Sorry.", L_End,
"I need your help with a sick young girl!", L_Next;
L_Next:
@@ -27,7 +27,7 @@ L_Next:
L_lace_cupcake:
next;
menu
- "Sorry.", L_end,
+ "Sorry.", L_End,
"I need your help with a sick young girl!", L_Next1;
L_Next1:
@@ -54,9 +54,9 @@ L_Next2:
mes "\"Ah yes. We need to bind the smell in gingerbread. Bring me three pieces of gingerbread, one orange, and 500 GP for the other ingredients, and I will make you your cupcake.\"";
next;
menu
- "I'll go and get it.", L_end,
+ "I'll go and get it.", L_End,
"Here you are!", L_Next3,
- "Not now.", L_end;
+ "Not now.", L_End;
L_Next3:
if (countitem ("GingerBreadMan") < 3)
@@ -120,8 +120,8 @@ L_bringit:
mes "";
mes "\"Bring it here when you do.\"";
next;
- goto L_end;
+ goto L_End;
-L_end:
+L_End:
close;
}
diff --git a/world/map/npc/010-2/loratay.txt b/world/map/npc/010-2/loratay.txt
index f9467e40..3e4bde85 100644
--- a/world/map/npc/010-2/loratay.txt
+++ b/world/map/npc/010-2/loratay.txt
@@ -157,14 +157,18 @@ L_agostine_2:
if (countitem("BottleOfWater"))
menu
"(sneak out of the room)", L_end,
- "Are you alright?", L_Next,
+ "Are you alright?", L_NextMenu,
"Here, have a bottle of water...", L_give_water,
- "Can I help you?", L_Next;
+ "Can I help you?", L_NextMenu;
+ goto L_NextMenu;
- menu
- "(sneak out of the room)", L_end,
- "Are you alright?", L_Next,
- "Can I help you?", L_Next;
+L_NextMenu:
+ if (countitem("BottleOfWater") == 0)
+ menu
+ "(sneak out of the room)", L_end,
+ "Are you alright?", L_Next,
+ "Can I help you?", L_Next;
+ goto L_Next;
L_Next:
mes "[Lora Tay the Seamstress]";
@@ -368,7 +372,7 @@ L_proposal_retrieve_design:
mes "\"May you go retrieve the design from Agostine?\"";
next;
menu
- "Certainly I'll be back soon!", L_end,
+ "Certainly I'll be back soon!", L_Close,
"Actually I want something else...", L_main_menu;
L_proposal_bringing_design:
@@ -428,7 +432,7 @@ L_proposal_deliver_dress:
mes "[Lora Tay the Seamstress]";
mes "\"Please take the unfinished dress to him so he may finish the edges with the cloth.\"";
menu
- "I'm on my way.", L_end,
+ "I'm on my way.", L_Close,
"I have a request...", L_main_menu;
L_desert_hat:
@@ -865,62 +869,72 @@ S_pick_one_of_many_items:
"", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "";
- goto L_SUB_pick_choice_loop;
+ goto S_SUB_pick_choice_loop;
-L_SUB_pick_choice_loop:
+S_SUB_pick_choice_loop:
if (@i >= @items_nr)
- goto L_SUB_choice_init_done;
+ goto S_SUB_choice_init_done;
set @current, @items[@i];
set @current_name$, @item_names$[@i];
set @i, @i + 1;
if (countitem(@current) == 0)
- goto L_SUB_pick_choice_loop;
+ goto S_SUB_pick_choice_loop;
set @choice_v[@c], @current;
set @choice_n$[@c], @current_name$;
set @c, @c + 1;
- goto L_SUB_pick_choice_loop;
+ goto S_SUB_pick_choice_loop;
-L_SUB_choice_init_done:
+S_SUB_choice_init_done:
set @choice_v[@c], 0;
set @choice_n$[@c], @default_choice$;
set @c, @c + 1;
if (@c < 10)
menu
- @choice_n$[0], L_SUB_choice_join,
- @choice_n$[1], L_SUB_choice_join,
- @choice_n$[2], L_SUB_choice_join,
- @choice_n$[3], L_SUB_choice_join,
- @choice_n$[4], L_SUB_choice_join,
- @choice_n$[5], L_SUB_choice_join,
- @choice_n$[6], L_SUB_choice_join,
- @choice_n$[7], L_SUB_choice_join,
- @choice_n$[8], L_SUB_choice_join,
- @choice_n$[9], L_SUB_choice_join;
+ @choice_n$[0], L_MenuItems,
+ @choice_n$[1], L_MenuItems,
+ @choice_n$[2], L_MenuItems,
+ @choice_n$[3], L_MenuItems,
+ @choice_n$[4], L_MenuItems,
+ @choice_n$[5], L_MenuItems,
+ @choice_n$[6], L_MenuItems,
+ @choice_n$[7], L_MenuItems,
+ @choice_n$[8], L_MenuItems,
+ @choice_n$[9], L_MenuItems;
+ goto L_MenuItems;
+
+L_MenuItems:
+ if (@c < 10)
+ goto L_SUB_choice_join;
if (@c < 20)
menu
- @choice_n$[0], L_SUB_choice_join,
- @choice_n$[1], L_SUB_choice_join,
- @choice_n$[2], L_SUB_choice_join,
- @choice_n$[3], L_SUB_choice_join,
- @choice_n$[4], L_SUB_choice_join,
- @choice_n$[5], L_SUB_choice_join,
- @choice_n$[6], L_SUB_choice_join,
- @choice_n$[7], L_SUB_choice_join,
- @choice_n$[8], L_SUB_choice_join,
- @choice_n$[9], L_SUB_choice_join,
- @choice_n$[10], L_SUB_choice_join,
- @choice_n$[11], L_SUB_choice_join,
- @choice_n$[12], L_SUB_choice_join,
- @choice_n$[13], L_SUB_choice_join,
- @choice_n$[14], L_SUB_choice_join,
- @choice_n$[15], L_SUB_choice_join,
- @choice_n$[16], L_SUB_choice_join,
- @choice_n$[17], L_SUB_choice_join,
- @choice_n$[18], L_SUB_choice_join,
- @choice_n$[19], L_SUB_choice_join;
+ @choice_n$[0], L_MenuItems1,
+ @choice_n$[1], L_MenuItems1,
+ @choice_n$[2], L_MenuItems1,
+ @choice_n$[3], L_MenuItems1,
+ @choice_n$[4], L_MenuItems1,
+ @choice_n$[5], L_MenuItems1,
+ @choice_n$[6], L_MenuItems1,
+ @choice_n$[7], L_MenuItems1,
+ @choice_n$[8], L_MenuItems1,
+ @choice_n$[9], L_MenuItems1,
+ @choice_n$[10], L_MenuItems1,
+ @choice_n$[11], L_MenuItems1,
+ @choice_n$[12], L_MenuItems1,
+ @choice_n$[13], L_MenuItems1,
+ @choice_n$[14], L_MenuItems1,
+ @choice_n$[15], L_MenuItems1,
+ @choice_n$[16], L_MenuItems1,
+ @choice_n$[17], L_MenuItems1,
+ @choice_n$[18], L_MenuItems1,
+ @choice_n$[19], L_MenuItems1;
+ goto L_MenuItems1;
+
+L_MenuItems1:
+ if (@c < 20)
+ goto L_SUB_choice_join;
menu
@choice_n$[0], L_SUB_choice_join,
@@ -1115,4 +1129,7 @@ L_CleanSorcererRobe:
set @chosen_color, 0;
set @cotton_cloth_id, 0;
close;
+
+L_Close:
+ close;
}
diff --git a/world/map/npc/011-1/shops.txt b/world/map/npc/011-1/shops.txt
index 0c3032d2..2fd115b8 100644
--- a/world/map/npc/011-1/shops.txt
+++ b/world/map/npc/011-1/shops.txt
@@ -4,9 +4,5 @@
//# #
//#################################################################################
-// Exotic Trader
-// Toy Sabre - 10mil, Cap - 20mil, High Priest Crown - 30mil, Monster Skull Helmet - 30mil
-011-1.gat,109,38,0|shop|Exotic Trader|179,ToySabre :10000000,Cap :20000000,HighPriestCrown :30000000,MonsterSkullHelmet :30000000
-
// Shop
011-1.gat,80,33,0|shop|Fruit Store|400,GreenApple :-1,RedApple :-1,Orange :-1
diff --git a/world/map/npc/012-1/shops.txt b/world/map/npc/012-1/shops.txt
index 4a144212..a47e3274 100644
--- a/world/map/npc/012-1/shops.txt
+++ b/world/map/npc/012-1/shops.txt
@@ -12,6 +12,7 @@
"Can I trade this Rose Hat for a differently colored one?", L_RoseHat;
L_Shop:
+ close2;
shop "#FlowerShop";
L_RoseHat:
diff --git a/world/map/npc/012-3/mana-seed.txt b/world/map/npc/012-3/mana-seed.txt
index 2c2773ba..dcd2ead3 100644
--- a/world/map/npc/012-3/mana-seed.txt
+++ b/world/map/npc/012-3/mana-seed.txt
@@ -1,4 +1,4 @@
-012-3.gat,62,130,0|script|Mana Seed#MAGIC|166,
+012-3.gat,62,130,0|script|Forest Mana Seed#_M|166,
{
setarray @magic_exp_needed,
0, // level 0
diff --git a/world/map/npc/013-3/barrier.txt b/world/map/npc/013-3/barrier.txt
index 3b979f5d..40c2600c 100644
--- a/world/map/npc/013-3/barrier.txt
+++ b/world/map/npc/013-3/barrier.txt
@@ -7,18 +7,18 @@
set @state, ((QUEST_Hurnscald & NIBBLE_2_MASK) >> NIBBLE_2_SHIFT);
if (@state >= 2) goto L_End;
- if (@state == 1 && countitem("JackOSoul") >= 1) goto L_Has_Jack_O_Soul;
+ if (@state == 1 && countitem("Soul") >= 1) goto L_Has_Soul;
message strcharinfo(0), "A barrier around the opening pushes you back as you approach.";
warp "013-3.gat", 71, 25;
goto L_End;
-L_Has_Jack_O_Soul:
+L_Has_Soul:
message strcharinfo(0), "The barrier around the opening allows you passage.";
set @state, 2;
callsub S_Update_Mask;
- delitem "JackOSoul", 1;
+ delitem "Soul", 1;
goto L_End;
L_End:
diff --git a/world/map/npc/020-2/baktar.txt b/world/map/npc/020-2/baktar.txt
index d47a6fe5..9a54694b 100644
--- a/world/map/npc/020-2/baktar.txt
+++ b/world/map/npc/020-2/baktar.txt
@@ -47,10 +47,6 @@
set @Q_SHIFT2_BITS, NIBBLE_3_SHIFT;
set @Q_status2_bits, ((QUEST_Nivalis_state) & @Q_MASK2_BITS) >> @Q_SHIFT2_BITS;
- // if all bits are set, you brought him everything! Now we continue in Phase 2 of this npc.
- // this is not ready yet, so do not enable that stage
- // if(@Q_status == @Q_MASK) goto L_2_init;
-
set @BIT_KNOWHIM, 0;
set @BIT_DESERTHAT,1;
@@ -268,137 +264,12 @@ L_havealready:
mes "\"I already collected what you can offer me.\"";
close;
-S_Update_Var:
- set QUEST_Nivalis_state,
- (QUEST_Nivalis_state & ~(@Q_MASK)
- | (@Q_status << @Q_SHIFT));
- return;
-
-//# The following stage is completely cutoff the first.
-//# So there is no linking between the upper and lower part, except for one goto at the very beginning
-//
-
-L_2_init:
-
-//# NIBBLE3 a bitmasking nibble for stage 2 again
-//# bit 0 knows the name of the opponent
-//# bit 1 killed the ugly opponent
- set @BIT_KNOWS_NAME, 0;
- set @BIT_KILLED_HIM, 1;
-
- if (@Q_status2 == 1) goto L_2_talk1;
- if (@Q_status2 == 2) goto L_2_talk2;
- if (@Q_status2 == 3) goto L_2_talk3;
- // fall through @Q_status2==0:
- // need to thank for bringing all stuff.
- mes @npcname$;
- mes "\"Thanks a lot for bringing me all this nice stuff!\"";
- next;
- mes "\"That helps me a lot. You see over there is already another set I collected: There are some pieces of the Hurnscald town. That sign there has been stolen from the inn.\"";
- next;
- mes "\"But do not tell anyone, please! I really like collecting things. And that sign is one of the first things I organized.\"";
- next;
- mes "\"So thank you for bringing me that stuff for my desert collection\"";
- next;
- mes "\"Do you have an idea how to arrange that to make it cool looking for my admirers?\"";
- next;
- set @Q_status2, 1;
- callsub S_Update_Var2;
- close;
-
-L_2_talk1:
- mes @npcname$;
- mes "\"In my childhood I was called a packrat, because I collected old cans.\"";
- next;
- mes "\"But everybody does collect things right?\"";
- next;
- mes "\"So after I had collected way over 1000 cans, I started collecting snail-shells. Nice? Do you like that?\"";
- next;
- mes "\"Not many people like me. And I don't know why. It is nice to talk about such nice things. What did you collect in your childhood?\"";
- next;
- mes "He picks his nose";
- next;
- mes @npcname$;
- mes "\"Ok erm, talk to you later.\"";
- next;
- mes "\"Ok.\"";
- set @Q_status2, 2;
- callsub S_Update_Var2;
- close;
-
-L_2_talk2:
- mes @npcname$;
- mes "\"Could you do me a favor? This ugly guy, who always attacked me....\"";
- next;
- mes "\"*sob*\"";
- next;
- mes "\"I was always bullied by him. You know in early childhood we were very nice friends. We played some roleplaying. He was the captain, and I was the soldier.";
- next;
- mes "\"Or another day he was the chieftain and I was the redskin.\"";
- next;
- mes "\"But to tell you the truth, HE was ALWAYS the one who directed me.\"";
- next;
- mes "\"I DO NOT LIKE THAT!\"";
- next;
- mes "\"I WANT TO BE THE LEADER!\"";
- next;
- mes "\"STOP HIM DOING NASTY THINGS\"";
- next;
- mes "\"I WANT YOU TO KILL THAT BASTARD!!\"";
- set @Q_status2, 3;
- callsub S_Update_Var2;
- close;
-
-L_2_talk3:
- menu
- "Ok, I am a professional in doing such things", L_2_professional,
- "Hey do you really mean it? ", L_2_professional,
- "You calmed down again?", L_Close,
- "Oh a packrat! By the way, is that trash over there yours?", L_2_name,
- "Nevermind", L_Close;
-
L_Close:
- mes @npcname$;
- mes "\"Get out of my way, prank!\"";
close;
-L_2_professional:
- mes @npcname$;
- mes "\"What are you talking about?\"";
- goto L_2_talk3;
-
-L_2_name:
- mes @npcname$;
- mes "\"ONE DAY I WILL GET A HUGE REVENGE!\"";
- next;
- mes "\"AND I MEAN IT!\"";
- next;
- mes "\"You see I am a dangerous killer. Last week I killed five slimes and a pinkie!\"";
- next;
- mes "He takes out a piece of paper... mumbling";
- mes "\"Ok Scroticular first, and then ...\"";
- set @Q_status2, 4;
- set @Q_status2_bits, @Q_status2_bits | (1<<@BIT_KNOWS_NAME);
- callsub S_Update_Var2;
-
- mes @npcname$;
- mes "\"What is your name again?\"";
-
- menu
- "I am sorry for the joke... Please forgive me", L_Next,
- "They call me Mistakes. I am a professional killer as well. You heard about that business in the terranite cave?", L_Next;
-
-L_Next:
- mes @npcname$;
- mes "\"Alright, I see. Ok maybe I really need to calm down. Please leave me alone... I will try to calm down, ok?\"";
- close;
-
-S_Update_Var2:
- set QUEST_Nivalis_state,
- (QUEST_Nivalis_state & ~(@Q_MASK2)
- | (@Q_status2 << @Q_SHIFT2));
+S_Update_Var:
set QUEST_Nivalis_state,
- (QUEST_Nivalis_state & ~(@Q_MASK2_BITS)
- | (@Q_status2_bits << @Q_SHIFT2_BITS));
+ (QUEST_Nivalis_state & ~(@Q_MASK)
+ | (@Q_status << @Q_SHIFT));
return;
}
diff --git a/world/map/npc/021-1/bakery.txt b/world/map/npc/021-1/bakery.txt
index 2a4fb127..46337613 100644
--- a/world/map/npc/021-1/bakery.txt
+++ b/world/map/npc/021-1/bakery.txt
@@ -1,6 +1,6 @@
// Outside the bakery
-021-1.gat,105,104,0|shop|Ara|163,WhiteCake :-1,ChocolateCake :-1,OrangeCake :-1,AppleCake :-1,CherryCake :-1
+021-1.gat,103,103,0|shop|Ara|163,WhiteCake :-1,ChocolateCake :-1,OrangeCake :-1,AppleCake :-1,CherryCake :-1
021-1.gat,108,102,0|script|Itka|114,
{
diff --git a/world/map/npc/021-1/gate_guards.txt b/world/map/npc/021-1/gate_guards.txt
index 2cb97658..b26b5ec3 100644
--- a/world/map/npc/021-1/gate_guards.txt
+++ b/world/map/npc/021-1/gate_guards.txt
@@ -11,7 +11,7 @@
021-1.gat,110,23,0|script|Guard#port2|104,
{
mes "[Guard]";
- mes "\"I'm not quite sure why I'm here, since that bridge is out.\"";
+ mes "\"You wouldn't believe the refuse that comes in from the docks.\"";
close;
}
diff --git a/world/map/npc/021-1/hideandseek.txt b/world/map/npc/021-1/hideandseek.txt
index 9ca48bc2..44c628a1 100644
--- a/world/map/npc/021-1/hideandseek.txt
+++ b/world/map/npc/021-1/hideandseek.txt
@@ -56,7 +56,7 @@ L_Next:
L_Next1:
mes "[Ayasha]";
mes "\"Great! You can take my turn with searching. You need to find all five of my friends.";
- mes "They're hiding somewhere in this part of the city, you don't have to pass an archway to find them. But they're allowed to hide on the rooftops.\"";
+ mes "They're hiding somewhere in the city, you will have to explore to find them. They could be hiding anywhere.\"";
set QUEST_NorthTulimshar, QUEST_NorthTulimshar | $@hideandseekNT_started;
goto L_Close;
@@ -64,7 +64,7 @@ L_Next1:
L_Doing:
mes "[Ayasha]";
mes "\"You still need to find some of my friends. There are five of them.";
- mes "Remember, they're hiding somewhere in this part of the city, you don't have to pass an archway to find them. But it is allowed to hide on the buildings roof.\"";
+ mes "Remember, they're hiding somewhere in the city, you will have to explore to find them. They could be hiding anywhere.\"";
goto L_Close;
L_Reward:
@@ -93,7 +93,7 @@ L_Close:
close;
}
-021-1.gat,63,107,0|script|Latif|262,
+022-1.gat,112,23,0|script|Latif|262,
{
set @child_number, 1;
callfunc "XmasList";
@@ -146,7 +146,7 @@ L_Doing:
L_Done:
mes "[Latif]";
- mes "\"Inside that building over there is a workshop. My father works there and wants me to do that too when I'm grown up. But I don't want do that! I want to go on an adventure! Just like you.\"";
+ mes "\"Inside the building in the Northeastern market, there is a workshop. My father works there and wants me to do that too when I'm grown up. But I don't want do that! I want to go on an adventure! Just like you.\"";
goto L_Close;
L_Close:
@@ -155,7 +155,7 @@ L_Close:
close;
}
-021-1.gat,123,116,0|script|Charda|260,
+001-1.gat,39,33,0|script|Charda|260,
{
set @child_number, 2;
callfunc "XmasList";
@@ -170,7 +170,7 @@ L_Close:
mes "[Charda]";
mes "\"Hello. Psht, be careful. I'm playing hide and seek with Ayasha. You'll draw attention to my hiding place.\"";
next;
- mes "\"Do you want to go to the bazaar? It's west and then south from here. Ian is there, he helps all those adventurers that come here.\"";
+ mes "\"They will never find me in the bazaar. Ian is here, he helps all those adventurers that come here.\"";
goto L_Close;
L_Find:
@@ -261,7 +261,7 @@ L_Close:
close;
}
-021-1.gat,98,25,0|script|Rasin|263,
+023-1.gat,32,31,0|script|Rasin|263,
{
set @child_number, 4;
callfunc "XmasList";
@@ -274,7 +274,7 @@ L_Close:
if (@state > 0) goto L_Doing;
mes "[Rasin]";
- mes "\"The harbor is up north from here. There you can take a ferry to other places.";
+ mes "\"The harbor is to the East from here. There you can take a ferry to other places.";
mes "And now go away, I'm playing hide and seek and Ayasha shouldn't see me here. You'll draw her attention when you talk to me.\"";
goto L_Close;
@@ -302,7 +302,7 @@ L_Close:
close;
}
-021-1.gat,155,25,0|script|Ghada|265,
+068-1.gat,94,84,0|script|Ghada|265,
{
set @child_number, 5;
callfunc "XmasList";
@@ -314,7 +314,7 @@ L_Close:
if ((@state > 0) && !(QUEST_NorthTulimshar & $@hideandseekNT_found5)) goto L_Find;
if (@state > 0) goto L_Doing;
- mes "You see a girl standing behind the building. She has a look of intense concentration on her face.";
+ mes "You see a girl standing behind the a tree. She has a look of intense concentration on her face.";
menu
"Hi, what are you doing there?",L_Next,
"(Leave)",L_Close;
diff --git a/world/map/npc/021-1/imec.txt b/world/map/npc/021-1/imec.txt
index 7a5eb975..61e1fca7 100644
--- a/world/map/npc/021-1/imec.txt
+++ b/world/map/npc/021-1/imec.txt
@@ -13,7 +13,7 @@ OnInit:
end;
}
-021-1.gat,120,33,0|script|Imec|162,
+021-1.gat,120,31,0|script|Imec|162,
{
set @state, ((QUEST_NorthTulimshar & $@ImecShopNT_MASK) >> $@ImecShopNT_SHIFT);
set @money, 500;
diff --git a/world/map/npc/021-1/north_shops.txt b/world/map/npc/021-1/north_shops.txt
index 80e34433..81a05a20 100644
--- a/world/map/npc/021-1/north_shops.txt
+++ b/world/map/npc/021-1/north_shops.txt
@@ -3,7 +3,7 @@
// More high-end stuff to satisfy the richer people in Royal Tulimshar
// Some clothing
-021-1.gat,135,38,0|shop|Inar|108,SlingShot :-1,SlingBullet :-1,CottonShirt :-1,CottonShorts :-1,CottonBoots :-1,DesertShirt :-1,SilkRobe :-5,DesertHat :-4
+021-1.gat,135,36,0|shop|Inar|108,CottonShirt :-1,CottonShorts :-1,CottonBoots :-1,CottonHeadband :-1
021-1.gat,129,40,0|script|Well|400,
{
@@ -12,30 +12,9 @@
}
// An officer (for security)
-021-1.gat,128,36,0|script|Officer|150,
+021-1.gat,128,37,0|script|Officer|150,
{
mes "[Officer]";
mes "I'm here for extra security for this market.";
close;
}
-
-// A snobby store that won't sell to the player
-// takes part in quest given by 021-2/kylian.txt
-021-1.gat,138,29,0|script|Latoy|106,
-{
- set QUEST_NorthTulimshar, QUEST_NorthTulimshar | $@knowLatoyNT;
- set @kylian, ((QUEST_NorthTulimshar & $@businessmanNT_MASK) >> $@businessmanNT_SHIFT);
-
- mes "[Latoy]";
- mes "\"There's nothing here you could want or afford.\"";
- if (@kylian != 7)
- goto L_Close;
- next;
- mes "Maybe this is the kind of shop Kylian is looking for?";
- goto L_Close;
-
-L_Close:
- set @kylian, 0;
- close;
-}
-
diff --git a/world/map/npc/021-1/weellos.txt b/world/map/npc/021-1/weellos.txt
index 98565f9e..cb75bde1 100644
--- a/world/map/npc/021-1/weellos.txt
+++ b/world/map/npc/021-1/weellos.txt
@@ -9,7 +9,7 @@
if isin("021-1.gat", 130, 120, 140, 125) goto L_In;
mes "[Weellos]";
- mes "\"This is a very historic building. One of the oldest in the area.\"";
+ mes "\"This is a very historic building. One of the oldest in the area. It's been turned into a museum.\"";
goto L_BeforeClose;
// If the player is inside the fence with Weellos
diff --git a/world/map/npc/021-1/workers.txt b/world/map/npc/021-1/workers.txt
deleted file mode 100644
index cdba39b3..00000000
--- a/world/map/npc/021-1/workers.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-//
-
-021-1.gat,144,22,0|script|Construction Worker#1|155,
-{
- mes "[Construction worker]";
- mes "\"I can't let you beyond this gate. The area is closed for renovation.\"";
- close;
-}
-
-021-1.gat,156,97,0|script|Construction Worker#2|155,
-{
- mes "[Construction worker]";
- mes "\"East Tulimshar is closed for repairs.\"";
- close;
-}
-
-021-1.gat,156,44,0|script|Construction Worker#3|155,
-{
- mes "[Construction worker]";
- mes "\"East Tulimshar is closed for repairs.\"";
- close;
-}
diff --git a/world/map/npc/021-2/bakery.txt b/world/map/npc/021-2/bakery.txt
index 6415b498..a063811e 100644
--- a/world/map/npc/021-2/bakery.txt
+++ b/world/map/npc/021-2/bakery.txt
@@ -3,9 +3,6 @@
// The chef
021-2.gat,95,21,0|script|Riskim|148,
{
- goto L_Begin;
-
-L_Begin:
mes "[Riskim]";
mes "";
mes "\"Welcome to our bakery!\"";
@@ -42,9 +39,9 @@ L_Begin:
L_lace_chococake:
next;
menu
- "Thanks! Let me have a look around...", L_end,
+ "Thanks! Let me have a look around...", L_End,
"Can you put this potion into a Chocolate Cake?", L_Next,
- "Goodbye!", L_end;
+ "Goodbye!", L_End;
L_Next:
mes "[Riskim]";
@@ -60,9 +57,9 @@ L_Next:
mes "\"We'll need extra chocolate for that one. If you can give me ten pieces of chocolate and that potion, plus 400 GP, I will bake you a special Chocolate Cake that hides the taste.\"";
next;
menu
- "I will get them for you.", L_end,
+ "I will get them for you.", L_End,
"Here you are!", L_Continue,
- "Maybe later.", L_end;
+ "Maybe later.", L_End;
L_Continue:
if (countitem("ChocolateBar") < 10)
@@ -103,9 +100,9 @@ L_lacking_ingredients:
L_lace_cupcake:
next;
menu
- "Thanks! Let me have a look around...", L_end,
+ "Thanks! Let me have a look around...", L_End,
"Can you put this potion into an Orange Cupcake?", L_More,
- "Goodbye!", L_end;
+ "Goodbye!", L_End;
L_More:
mes "[Riskim]";
@@ -116,13 +113,13 @@ L_More:
mes "";
mes "\"Perhaps the Chef at Dimond's Cove can help you? We get all our cupcakes from him.\"";
next;
- goto L_end;
+ goto L_End;
-L_end:
+L_End:
close;
}
-// Server?
+// Server
021-2.gat,82,23,0|script|Sara|108,
{
mes "[Sara]";
diff --git a/world/map/npc/021-2/forge_shops.txt b/world/map/npc/021-2/forge_shops.txt
new file mode 100644
index 00000000..2ffa556b
--- /dev/null
+++ b/world/map/npc/021-2/forge_shops.txt
@@ -0,0 +1,4 @@
+// Forge Shops
+
+021-2.gat,77,134,0|shop|Gungnir|311,SlingShot :-1,SlingBullet :-1,ShortBow :-1,Arrow :1,IronArrow :3
+021-2.gat,71,133,0|shop|Mjolnir|377,Knife :-1,SharpKnife :-1,Dagger :-1,LeatherShirt :-2,LeatherShield :-2
diff --git a/world/map/npc/021-2/government_building.txt b/world/map/npc/021-2/government_building.txt
index e0a8796b..abf01ccb 100644
--- a/world/map/npc/021-2/government_building.txt
+++ b/world/map/npc/021-2/government_building.txt
@@ -6,9 +6,6 @@
mes "[Estard]";
mes "\"Hello what can I do for you?\"";
next;
- goto L_main;
-
-L_main:
if (getpartnerid2())
goto L_main_married;
@@ -61,9 +58,11 @@ L_get_rings:
if (Zeny < WEDDING_FEE)
menu
"Thanks anyways. I don't have enough with me.", L_Close;
- menu
- "I'll buy a pair.", L_get_rings_pay,
- "Thanks anyways.", L_Close;
+ if (Zeny >= WEDDING_FEE)
+ menu
+ "I'll buy a pair.", L_get_rings_pay,
+ "Thanks anyways.", L_Close;
+ goto L_get_rings_pay;
L_get_rings_pay:
callsub S_give_rings;
diff --git a/world/map/npc/021-2/hotel_receptionist.txt b/world/map/npc/021-2/hotel_receptionist.txt
deleted file mode 100644
index dac560c6..00000000
--- a/world/map/npc/021-2/hotel_receptionist.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-// Tulimshar's main workshop
-
-// The receptionist
-021-2.gat,22,63,0|script|Sonir|118,
-{
- mes "[Sonir]";
- mes "\"Welcome to The Wizards's Rest!\"";
- next;
- mes "[Sonir]";
- mes "\"We have limited housing on the second floor.\"";
- close;
-}
diff --git a/world/map/npc/021-2/kylian.txt b/world/map/npc/021-2/kylian.txt
index 15f0d36b..71dcb896 100644
--- a/world/map/npc/021-2/kylian.txt
+++ b/world/map/npc/021-2/kylian.txt
@@ -56,7 +56,7 @@ OnInit:
end;
}
-021-2.gat,32,92,0|script|Kylian|193,
+021-2.gat,89,55,0|script|Kylian|193,
{
set @state, ((QUEST_NorthTulimshar & $@businessmanNT_MASK) >> $@businessmanNT_SHIFT);
diff --git a/world/map/npc/021-2/manakins.txt b/world/map/npc/021-2/manakins.txt
new file mode 100644
index 00000000..a17603b7
--- /dev/null
+++ b/world/map/npc/021-2/manakins.txt
@@ -0,0 +1,47 @@
+// Display Manakins.
+
+// Forge
+021-2.gat,76,131,0|script|Terranite Armor#Female|401,
+{
+ mes "Terranite Armor Complete Set, made to order, inquire with Heathin";
+ close;
+}
+
+021-2.gat,81,131,0|script|Terranite Armor#Male|402,
+{
+ mes "Terranite Armor Complete Set, made to order, inquire with Heathin";
+ close;
+}
+
+021-2.gat,81,136,0|script|Terranite|403,
+{
+ mes "Ahhh! A Terranite! Wait it appears to just be a display model.";
+ close;
+}
+
+// Muesuem
+
+021-2.gat,71,161,0|script|Taplapian#Female|404,
+{
+ mes "A Female Talapian.";
+ close;
+}
+
+021-2.gat,77,161,0|script|Taplapian#Male|405,
+{
+ mes "A Male Talapian.";
+ close;
+}
+
+021-2.gat,83,161,0|script|Gispian#Female|406,
+{
+ mes "A Female Gispian.";
+ close;
+}
+
+021-2.gat,89,161,0|script|Gispian#Male|407,
+{
+ mes "A Male Gispian.";
+ close;
+}
+
diff --git a/world/map/npc/021-2/rebecca.txt b/world/map/npc/021-2/rebecca.txt
new file mode 100644
index 00000000..90ad16e9
--- /dev/null
+++ b/world/map/npc/021-2/rebecca.txt
@@ -0,0 +1,11 @@
+//
+
+021-2.gat,26,54,0|script|Rebecca|118,
+{
+ set @npcname$, "Rebecca the Inn Keeper";
+ set @cost, 100;
+ callfunc "Inn";
+ set @npcname$, "";
+ set @cost, 0;
+ close;
+}
diff --git a/world/map/npc/027-1/crypt.txt b/world/map/npc/027-1/crypt.txt
new file mode 100644
index 00000000..37b1cecf
--- /dev/null
+++ b/world/map/npc/027-1/crypt.txt
@@ -0,0 +1,11 @@
+027-1.gat,28,67,0|script|#CryptEntrance|45,0,0
+{
+ if (BaseLevel < 60)
+ goto L_Weak;
+ warp "027-2.gat", 112, 110;
+ end;
+
+L_Weak:
+ message strcharinfo(0), "Come back when you're a bit more experienced.";
+ end;
+}
diff --git a/world/map/npc/027-1/golbenez.txt b/world/map/npc/027-1/golbenez.txt
index 35980b2f..b32b862c 100644
--- a/world/map/npc/027-1/golbenez.txt
+++ b/world/map/npc/027-1/golbenez.txt
@@ -36,21 +36,4 @@ L_Weak:
next;
mes "\"Come back when you're a bit more experienced.\"";
close;
-
-// Golbenez resets the graveyard monsters when no players are present
-// He's such an evil guy!
-OnInit:
- if (debug >= 2) end;
- initnpctimer;
- end;
-
-OnTimer10000:
- if (getareausers("027-1.gat", 0, 0, 149, 119, 1) == 0)
- killmonsterall "027-1.gat";
-
- setnpctimer 0;
- end;
}
-
-
-
diff --git a/world/map/npc/027-2/alacrius.txt b/world/map/npc/027-2/alacrius.txt
index d8b2b513..8c4b3802 100644
--- a/world/map/npc/027-2/alacrius.txt
+++ b/world/map/npc/027-2/alacrius.txt
@@ -1,43 +1,13 @@
-//Starts the reaper quest
-//(incomplete, use alacrius2.txt instead)
-//To enable: sed 's_^// __' -i npc/027-2/alacrius.txt
-
-//027-2.gat,107,29,0|script|Alacrius|313,
-//{
-// // if started, go to started
-// // if fail go to failed
-// // if complete go to complete
-// // if cooldown go to cooldown
-
-// // start quest section
-// mes "Hi, want to fight the reaper?";
-// menu
-// "Let's go!",L_START,
-// "No, thank you.",-;
-// close;
-
-// L_START:
-// monster "027-4.gat",40,55,"Reaper Quest",1067,1,"Reaper::OnDead";
-// enablenpc "#gatecontrol";
-// enablenpc "#closedgate";
-// disablenpc "#opengate";
-// // Open doors to reaper level
-// warp "027-3.gat",41,70;
-// initnpctimer;
-// close;
-
-// // 5 min mark for testing purposes, up it when finished.
-// OnTimer300000:
-// mapwarp "027-3.gat", "027-2.gat",104,41;
-// mapwarp "027-4.gat", "027-2.gat",104,41;
-// killmonsterall "027-4.gat";
-// end;
-// OnTimer301000:
-// npctalk "You have failed the mission.";
-// end;
-
-// // cooldown before the quest can be restarted
-// OnTimer360000:
-// // set quest var
-// end;
-// }
+// Author: wushin
+//Starts Crypt Quest
+
+027-2.gat,122,105,0|script|Alacrius|313,
+{
+ mes "[Alacrius]";
+ mes "\"Hello, I'm Alacrius. \"";
+ next;
+ mes "\"A very long time ago, I figured a way to cheat death and the limits of time and space. You may think it is evil, but I did it because of true love... \"";
+ next;
+ mes "\"The reaper kidnapped my beloved wife, and took her to the underworld. I had to find a way to stop him, and as time went by, I became what you can see now... But if you dare to cheat death, time and space you'll have to pay a high price... \"";
+ close;
+}
diff --git a/world/map/npc/027-2/alacrius2.txt b/world/map/npc/027-2/alacrius2.txt
deleted file mode 100644
index 94607b2d..00000000
--- a/world/map/npc/027-2/alacrius2.txt
+++ /dev/null
@@ -1,115 +0,0 @@
-//Starts the reaper quest
-//To enable: sed 's_^// __' -i npc/027-2/alacrius2.txt
-
-// 027-2.gat,107,29,0|script|Alacrius|313,
-// {
-// if ($@FIGHT_ALACRIUS_STATUS != 0) goto L_Enjoy;
-
-
-// mes "[Alacrius]";
-// mes "\"Hello, I'm Alacrius. \"";
-// next;
-// mes "[Alacrius]";
-// mes "\"A very long time ago, I figured a way to cheat death and the limits of time and space. You may think it is evil, but I did it because of true love... \"";
-// next;
-// mes "[Alacrius]";
-// mes "\"The reaper kidnapped my beloved wife, and took her to the underworld. I had to find a way to stop him, and as time went by, I became what you can see now... But if you dare to cheat death, time and space you'll have to pay a high price... \"";
-// next;
-// mes "[Alacrius]";
-// mes "\"Being away from time and space doesn't allow me to try to save my beloved wife... I need your help. Do you think you have what it takes to handle the most powerful monsters over the world of Mana? \"";
-// next;
-// menu
-// "Let's go!",L_PLAY_OK,
-// "No, thank you.",-;
-// close;
-
-// L_PLAY_OK:
-
-// if ($@FIGHT_ALACRIUS_STATUS != 0)
-// goto L_AlreadyStarted;
-// set $@FIGHT_ALACRIUS_STATUS, 1;
-// set $@MO_REAPER, 0;
-// startnpctimer;
-// set @PRIZE, 1;
-
-// goto L_Exit;
-
-// L_Enjoy:
-// if ($@MO_REAPER == 1) goto L_AllDead;
-// mes "[Alacrius]";
-// mes "\"...Please hurry up, the time is running...\"";
-// goto L_Exit;
-
-// L_AlreadyStarted:
-// mes "[Alacrius]";
-// mes "\"The Reaper is alive.\"";
-// goto L_Exit;
-
-// L_Exit:
-// close;
-// end;
-
-
-// // Time to fight
-// OnTimer10000:
-
-// monster "027-2.gat",0,0,"Reaper Quest",1111,1,"Alacrius::OnDeadReaper";
-// end;
-
-// OnDeadReaper:
-// set $@MO_REAPER, $@MO_REAPER + 1;
-// killmonster "027-2.gat","All";
-// end;
-
-// OnDeadLost:
-// set $@MO_LOST, $@MO_LOST + 1;
-// end;
-
-
-// OnTimer120000:
-
-// set $@MO_REAPER,0;
-// set $@FIGHT_ALACRIUS_STATUS, 0;
-// killmonster "027-2.gat","All";
-// stopnpctimer;
-// setnpctimer 0;
-// set @PRIZE, 0;
-// npctalk "Oh my beloved wife, you could not be rescued! I will have to purge my mistakes again...";
-// npctalk "Please, help my beloved wife!!";
-
-// end;
-
-// OnDead:
-// end;
-
-
-// L_AllDead:
-// if(@PRIZE == 0)
-// goto L_NOHERO;
-
-// getinventorylist;
-// if (@inventorylist_count == 100)
-// goto L_TooMany;
-// getitem "CasinoCoins", 1;
-
-// mes "[Alacrius]";
-// mes "Thank you very much, you saved my love!! Here you are, a prize according to the dangers you've been exposed to.";
-// set @PRIZE , 0;
-// set $@MO_REAPER,0;
-// close;
-// end;
-
-// L_TooMany:
-// mes "[Alacrius]";
-// mes "You have no room for the reward.";
-// close;
-
-// L_NOHERO:
-// mes "[Alacrius]";
-// mes "Sorry, but you didn't save my love... Try it again when you're ready...";
-// close;
-// end;
-// OnInit:
-// initnpctimer;
-// stopnpctimer;
-// }
diff --git a/world/map/npc/027-2/caretaker.txt b/world/map/npc/027-2/caretaker.txt
index bd28a0a5..05c887cd 100644
--- a/world/map/npc/027-2/caretaker.txt
+++ b/world/map/npc/027-2/caretaker.txt
@@ -55,15 +55,12 @@ L_Favor:
L_Receive:
set QUEST_Graveyard_Caretaker, 2;
mes "You receive the letter and put it in a special place so it doesn't get lost in your inventory.";
- if (@menu == 2)
- goto L_Location;
- close;
-
-L_Location:
next;
- goto L_Location_Real;
+ if (@menu != 2)
+ close;
+ goto L_Location;
-L_Location_Real:
+L_Location:
mes "[Caretaker]";
mes "\"Her name is Airlia. She works at the town hall in Hurnscald. Thank you for your help.\"";
close;
@@ -75,7 +72,7 @@ L_Has_Letter:
menu
"Not yet.", L_Close,
"I'll get there when I get there.", L_Close,
- "Where did you say I could find her?", L_Location_Real;
+ "Where did you say I could find her?", L_Location;
L_Delivered_Letter:
mes "[Caretaker]";
@@ -106,6 +103,9 @@ L_Give_New_Letter_Real:
mes "\"Thank you.\"";
close;
+L_Close:
+ close;
+
OnTimer3000:
monster "027-2.gat", 29, 21, "Caretaker's Wife", 1044, 1, "Caretaker::OnWifeDeath";
stopnpctimer;
@@ -122,7 +122,4 @@ OnWifeDeath:
gmcommand "@ban +5mn " + strcharinfo(0);
initnpctimer;
end;
-
-L_Close:
- close;
}
diff --git a/world/map/npc/027-2/golbenez.txt b/world/map/npc/027-2/golbenez.txt
index 082b7a7d..9d7bdb3a 100644
--- a/world/map/npc/027-2/golbenez.txt
+++ b/world/map/npc/027-2/golbenez.txt
@@ -296,17 +296,17 @@ L_Soul:
goto L_Soul_Try;
L_Soul_Try:
- if (countitem("JackOSoul") < 1)
+ if (countitem("Soul") < 1)
menu
"I'll go and get one.",L_Close;
menu
- "What about this Jack O Soul?",L_TryThisSoul,
+ "What about this Soul?",L_TryThisSoul,
"I'll go and try to find a soul.",L_Close;
L_TryThisSoul:
- if (countitem("JackOSoul") < 1)
+ if (countitem("Soul") < 1)
goto L_Betray;
- delitem "JackOSoul", 1;
+ delitem "Soul", 1;
set @soul, rand(50);
if (@soul == 0)
goto L_Soul_Success;
diff --git a/world/map/npc/027-2/thurston.txt b/world/map/npc/027-2/thurston.txt
new file mode 100644
index 00000000..0778c7ec
--- /dev/null
+++ b/world/map/npc/027-2/thurston.txt
@@ -0,0 +1,23 @@
+// Vampire Bat Wings Daily
+
+027-2.gat,100,105,0|script|Thurston|302,
+{
+ set @dq_level, 60;
+ set @dq_cost, 45;
+ set @dq_count, 20;
+ set @dq_name$, "VampireBatWing";
+ set @dq_friendly_name$, "Vampire Bat Wing";
+ set @dq_money, 4000;
+ set @dq_exp, 1000;
+
+ callfunc "DailyQuest";
+
+ set @dq_level, 0;
+ set @dq_cost, 0;
+ set @dq_count, 0;
+ set @dq_name$, "";
+ set @dq_friendly_name$, "";
+ set @dq_money, 0;
+ set @dq_exp, 0;
+ close;
+}
diff --git a/world/map/npc/027-3/casket_traps.txt b/world/map/npc/027-3/casket_traps.txt
new file mode 100644
index 00000000..7b8a1e70
--- /dev/null
+++ b/world/map/npc/027-3/casket_traps.txt
@@ -0,0 +1,80 @@
+027-3.gat,32,96,0|script|#casket1|35,1,1
+{
+ end;
+
+OnTouch:
+ percentheal -10, 0;
+ specialeffect 301;
+ specialeffect 302;
+ end;
+}
+027-3.gat,38,86,0|script|#casket2|35,1,1
+{
+ end;
+
+OnTouch:
+ percentheal -10, 0;
+ specialeffect 301;
+ specialeffect 302;
+ end;
+}
+027-3.gat,46,76,0|script|#casket3|35,1,1
+{
+ end;
+
+OnTouch:
+ percentheal -10, 0;
+ specialeffect 301;
+ specialeffect 302;
+ end;
+}
+027-3.gat,38,57,0|script|#casket4|35,1,1
+{
+ end;
+
+OnTouch:
+ percentheal -10, 0;
+ specialeffect 301;
+ specialeffect 302;
+ end;
+}
+027-3.gat,22,44,0|script|#casket5|35,1,1
+{
+ end;
+
+OnTouch:
+ percentheal -10, 0;
+ specialeffect 301;
+ specialeffect 302;
+ end;
+}
+027-3.gat,48,43,0|script|#casket6|35,1,1
+{
+ end;
+
+OnTouch:
+ percentheal -10, 0;
+ specialeffect 301;
+ specialeffect 302;
+ end;
+}
+027-3.gat,86,30,0|script|#casket7|35,1,1
+{
+ end;
+
+OnTouch:
+ percentheal -10, 0;
+ specialeffect 301;
+ specialeffect 302;
+ end;
+}
+027-3.gat,108,45,0|script|#casket8|35,1,1
+{
+ end;
+
+OnTouch:
+ percentheal -10, 0;
+ specialeffect 301;
+ specialeffect 302;
+ end;
+}
diff --git a/world/map/npc/027-3/general_krukan_door.txt b/world/map/npc/027-3/general_krukan_door.txt
new file mode 100644
index 00000000..86a6342f
--- /dev/null
+++ b/world/map/npc/027-3/general_krukan_door.txt
@@ -0,0 +1,19 @@
+// Mini-Boss
+// General Krukun
+
+027-3.gat,82,88,0|script|#GeneralDoor1|35,1,0
+{
+ if ( (countitem("CryptKey") < 10) && ($@CRYPT_FIGHT1 != 0) )
+ goto L_NoKeys;
+
+ delitem "CryptKey", 10;
+ warp "027-6.gat",39,60;
+ goto L_Close;
+
+L_NoKeys:
+ message strcharinfo(0), "This door is locked.";
+ end;
+
+L_Close:
+ close;
+}
diff --git a/world/map/npc/027-3/locked_doors.txt b/world/map/npc/027-3/locked_doors.txt
new file mode 100644
index 00000000..b2ec8779
--- /dev/null
+++ b/world/map/npc/027-3/locked_doors.txt
@@ -0,0 +1,128 @@
+// Locked Doors
+
+027-3.gat,22,29,0|script|#CLockDoor1|35,0,0
+{
+ if (countitem("CryptKey") < 5)
+ goto L_NoKeys;
+ mes "Open the Locked Door?";
+ menu
+ "Yes.", L_Open,
+ "No.", L_Close;
+
+L_Open:
+ delitem "CryptKey", 5;
+ warp "027-3.gat",22,26;
+ goto L_Close;
+
+L_NoKeys:
+ message strcharinfo(0), "This door is locked.";
+ end;
+
+L_Close:
+ close;
+}
+
+027-3.gat,22,27,0|script|#CInsideDoor1|35,0,0
+{
+ mes "Open the Door?";
+ menu
+ "Yes.", L_Open,
+ "No.", L_Close;
+
+L_Open:
+ warp "027-3.gat",22,30;
+ message strcharinfo(0), "This door slams shut and locks itself behind you.";
+ goto L_Close;
+
+L_Close:
+ close;
+}
+
+027-3.gat,37,29,0|script|#CLockDoor2|35,0,0
+{
+ if (countitem("CryptKey") < 5)
+ goto L_NoKeys;
+ mes "Open the Locked Door?";
+ menu
+ "Yes.", L_Open,
+ "No.", L_Close;
+
+L_Open:
+ delitem "CryptKey", 5;
+ warp "027-3.gat",37,26;
+ goto L_Close;
+
+L_NoKeys:
+ message strcharinfo(0), "This door is locked.";
+ end;
+
+L_Close:
+ close;
+}
+
+027-3.gat,37,27,0|script|#CInsideDoor2|35,0,0
+{
+ mes "Open the Door?";
+ menu
+ "Yes.", L_Open,
+ "No.", L_Close;
+
+L_Open:
+ warp "027-3.gat",37,30;
+ message strcharinfo(0), "This door slams shut and locks itself behind you.";
+ goto L_Close;
+
+L_Close:
+ close;
+}
+
+027-3.gat,128,29,0|script|#CLockDoor3|35,0,0
+{
+ if (countitem("CryptKey") < 5)
+ goto L_NoKeys;
+ mes "Open the Locked Door?";
+ menu
+ "Yes.", L_Open,
+ "No.", L_Close;
+
+L_Open:
+ delitem "CryptKey", 5;
+ warp "027-3.gat",128,26;
+ goto L_Close;
+
+L_NoKeys:
+ message strcharinfo(0), "This door is locked.";
+ end;
+
+L_Close:
+ close;
+}
+
+027-3.gat,128,27,0|script|#CInsideDoor3|35,0,0
+{
+ mes "Open the Door?";
+ menu
+ "Yes.", L_Open,
+ "No.", L_Close;
+
+L_Open:
+ warp "027-3.gat",128,30;
+ message strcharinfo(0), "This door slams shut and locks itself behind you.";
+ goto L_Close;
+
+L_Close:
+ close;
+}
+
+027-3.gat,22,22,0|script|Crypt#1|35,0,0
+{
+ // Coords X: 117,104,110,118;
+ // Coords Y: 53, 87, 53,87;
+ end;
+}
+027-3.gat,35,22,0|script|Crypt#2|35,0,0
+{
+ // Coords X: 105,118,118,122;
+ // Coords Y: 58, 77, 72, 58
+ end;
+}
diff --git a/world/map/npc/027-1/monsters.txt b/world/map/npc/027-3/monsters.txt
index b4dedad4..7aaa7fd5 100644
--- a/world/map/npc/027-1/monsters.txt
+++ b/world/map/npc/027-3/monsters.txt
@@ -1,28 +1,28 @@
-// 027-1 Graveyard zombies and fallens
+// 027-3 Graveyard zombies and fallens
// they need to be in an extra file because of the crying child quest
-027-1.gat,71,41,31,22|monster|Zombie|1036,2,300000,120000,specialMob027-1::On1036
-027-1.gat,37,41,33,22|monster|Zombie|1036,2,200000,10000,specialMob027-1::On1036
-027-1.gat,37,65,33,22|monster|Zombie|1036,3,140000,30000,specialMob027-1::On1036
-027-1.gat,37,65,33,22|monster|Fallen|1045,3,120000,30000,specialMob027-1::On1045
+027-3.gat,21,76,51,100|monster|Zombie|1036,2,300000,120000,specialMob027-3::On1036
+027-3.gat,21,30,51,63|monster|Zombie|1036,2,200000,10000,specialMob027-3::On1036
+027-3.gat,67,29,129,64|monster|Zombie|1036,3,140000,30000,specialMob027-3::On1036
+027-3.gat,101,65,128,93|monster|Fallen|1045,3,120000,30000,specialMob027-3::On1045
-027-1.gat,0,0,0|script|specialMob027-1|-1,
+027-3.gat,0,0,0|script|specialMob027-3|-1,
{
end;
On1036:
set @mobID, 1036;
- callsub L_MOBCOUNT_ZOMBIES;
+ callsub S_MOBCOUNT_ZOMBIES;
callfunc "MobPoints";
end;
On1045:
set @mobID, 1045;
- callsub L_MOBCOUNT_FALLENS;
+ callsub S_MOBCOUNT_FALLENS;
callfunc "MobPoints";
end;
-L_MOBCOUNT_ZOMBIES:
+S_MOBCOUNT_ZOMBIES:
set @Graveyard_Inn_MASK, NIBBLE_2_MASK;
set @Graveyard_Inn_SHIFT, NIBBLE_2_SHIFT;
@@ -41,7 +41,7 @@ L_MOBCOUNT_ZOMBIES:
callsub S_Update_Mask;
return;
-L_MOBCOUNT_FALLENS:
+S_MOBCOUNT_FALLENS:
set @Graveyard_Inn_MASK, NIBBLE_2_MASK;
set @Graveyard_Inn_SHIFT, NIBBLE_2_SHIFT;
diff --git a/world/map/npc/027-4/casket_traps.txt b/world/map/npc/027-4/casket_traps.txt
new file mode 100644
index 00000000..350fe347
--- /dev/null
+++ b/world/map/npc/027-4/casket_traps.txt
@@ -0,0 +1,80 @@
+027-4.gat,60,23,0|script|#casket9|35,1,1
+{
+ end;
+
+OnTouch:
+ percentheal -10, 0;
+ specialeffect 301;
+ specialeffect 302;
+ end;
+}
+027-4.gat,42,23,0|script|#casket10|35,1,1
+{
+ end;
+
+OnTouch:
+ percentheal -10, 0;
+ specialeffect 301;
+ specialeffect 302;
+ end;
+}
+027-4.gat,42,47,0|script|#casket11|35,1,1
+{
+ end;
+
+OnTouch:
+ percentheal -10, 0;
+ specialeffect 301;
+ specialeffect 302;
+ end;
+}
+027-4.gat,90,47,0|script|#casket12|35,1,1
+{
+ end;
+
+OnTouch:
+ percentheal -10, 0;
+ specialeffect 301;
+ specialeffect 302;
+ end;
+}
+027-4.gat,101,48,0|script|#casket13|35,1,1
+{
+ end;
+
+OnTouch:
+ percentheal -10, 0;
+ specialeffect 301;
+ specialeffect 302;
+ end;
+}
+027-4.gat,115,17,0|script|#casket14|35,1,1
+{
+ end;
+
+OnTouch:
+ percentheal -10, 0;
+ specialeffect 301;
+ specialeffect 302;
+ end;
+}
+027-4.gat,99,76,0|script|#casket15|35,1,1
+{
+ end;
+
+OnTouch:
+ percentheal -10, 0;
+ specialeffect 301;
+ specialeffect 302;
+ end;
+}
+027-4.gat,22,23,0|script|#casket16|35,1,1
+{
+ end;
+
+OnTouch:
+ percentheal -10, 0;
+ specialeffect 301;
+ specialeffect 302;
+ end;
+}
diff --git a/world/map/npc/027-4/general_razha_door.txt b/world/map/npc/027-4/general_razha_door.txt
new file mode 100644
index 00000000..f1729837
--- /dev/null
+++ b/world/map/npc/027-4/general_razha_door.txt
@@ -0,0 +1,19 @@
+// Mini-Boss
+// General Razha
+
+027-4.gat,73,76,0|script|#GeneralDoor2|35,1,0
+{
+ if ( (countitem("CryptKey") < 10) && ($@CRYPT_FIGHT2 != 0) )
+ goto L_NoKeys;
+
+ delitem "CryptKey", 10;
+ warp "027-7.gat",39,60;
+ goto L_Close;
+
+L_NoKeys:
+ message strcharinfo(0), "This door is locked.";
+ end;
+
+L_Close:
+ close;
+}
diff --git a/world/map/npc/027-4/monsters.txt b/world/map/npc/027-4/monsters.txt
new file mode 100644
index 00000000..adc89a88
--- /dev/null
+++ b/world/map/npc/027-4/monsters.txt
@@ -0,0 +1,72 @@
+// 027-4 Graveyard zombies and fallens
+// they need to be in an extra file because of the crying child quest
+
+027-4.gat,39,84,38,22|monster|Fallen|1045,3,60000,8000,Mob027-4::On1045
+027-4.gat,27,57,15,22|monster|Zombie|1036,2,60000,8000,Mob027-4::On1036
+027-4.gat,108,77,39,14|monster|Fallen|1045,3,60000,8000,Mob027-4::On1045
+027-4.gat,61,37,38,30|monster|Zombie|1036,2,60000,8000,Mob027-4::On1036
+027-4.gat,101,36,38,30|monster|Zombie|1036,2,60000,8000,Mob027-4::On1036
+
+027-4.gat,0,0,0|script|specialMob027-4|-1,
+{
+ end;
+
+On1036:
+ set @mobID, 1036;
+ callsub S_MOBCOUNT_ZOMBIES;
+ callfunc "MobPoints";
+ end;
+
+On1045:
+ set @mobID, 1045;
+ callsub S_MOBCOUNT_FALLENS;
+ callfunc "MobPoints";
+ end;
+
+S_MOBCOUNT_ZOMBIES:
+
+ set @Graveyard_Inn_MASK, NIBBLE_2_MASK;
+ set @Graveyard_Inn_SHIFT, NIBBLE_2_SHIFT;
+
+ set @state, ((QUEST_Graveyard_Inn & @Graveyard_Inn_MASK) >> @Graveyard_Inn_SHIFT);
+
+ if (@state != 1)
+ goto L_Return;
+ set @ring, @ring + 1;
+ if (@ring < 10)
+ goto L_Return;
+ if (rand(8) != 0)
+ goto L_Return;
+ message strcharinfo(0), "You found a ring hidden in the zombie's rotten rags. Maybe this is what Aldred was looking for...";
+ set @state, 2;
+ callsub S_Update_Mask;
+ return;
+
+S_MOBCOUNT_FALLENS:
+
+ set @Graveyard_Inn_MASK, NIBBLE_2_MASK;
+ set @Graveyard_Inn_SHIFT, NIBBLE_2_SHIFT;
+
+ set @state, ((QUEST_Graveyard_Inn & @Graveyard_Inn_MASK) >> @Graveyard_Inn_SHIFT);
+
+ if (@state != 1)
+ goto L_Return;
+ set @ring, @ring + 1;
+ if (@ring < 10)
+ goto L_Return;
+ if (rand(8) != 0)
+ goto L_Return;
+ message strcharinfo(0), "You found a ring inside the fallen's broken helmet. Maybe this is what Aldred was looking for...";
+ set @state, 2;
+ callsub S_Update_Mask;
+ return;
+
+L_Return:
+ return;
+
+S_Update_Mask:
+ set QUEST_Graveyard_Inn,
+ (QUEST_Graveyard_Inn & ~(@Graveyard_Inn_MASK))
+ | (@state << @Graveyard_Inn_SHIFT);
+ return;
+}
diff --git a/world/map/npc/027-5/casket_traps.txt b/world/map/npc/027-5/casket_traps.txt
new file mode 100644
index 00000000..33d3ae56
--- /dev/null
+++ b/world/map/npc/027-5/casket_traps.txt
@@ -0,0 +1,80 @@
+027-5.gat,60,34,0|script|#casket17|35,1,1
+{
+ end;
+
+OnTouch:
+ percentheal -10, 0;
+ specialeffect 301;
+ specialeffect 302;
+ end;
+}
+027-5.gat,34,50,0|script|#casket18|35,1,1
+{
+ end;
+
+OnTouch:
+ percentheal -10, 0;
+ specialeffect 301;
+ specialeffect 302;
+ end;
+}
+027-5.gat,49,76,0|script|#casket19|35,1,1
+{
+ end;
+
+OnTouch:
+ percentheal -10, 0;
+ specialeffect 301;
+ specialeffect 302;
+ end;
+}
+027-5.gat,60,89,0|script|#casket20|35,1,1
+{
+ end;
+
+OnTouch:
+ percentheal -10, 0;
+ specialeffect 301;
+ specialeffect 302;
+ end;
+}
+027-5.gat,90,90,0|script|#casket21|35,1,1
+{
+ end;
+
+OnTouch:
+ percentheal -10, 0;
+ specialeffect 301;
+ specialeffect 302;
+ end;
+}
+027-5.gat,92,76,0|script|#casket22|35,1,1
+{
+ end;
+
+OnTouch:
+ percentheal -10, 0;
+ specialeffect 301;
+ specialeffect 302;
+ end;
+}
+027-5.gat,117,61,0|script|#casket23|35,1,1
+{
+ end;
+
+OnTouch:
+ percentheal -10, 0;
+ specialeffect 301;
+ specialeffect 302;
+ end;
+}
+027-5.gat,94,48,0|script|#casket24|35,1,1
+{
+ end;
+
+OnTouch:
+ percentheal -10, 0;
+ specialeffect 301;
+ specialeffect 302;
+ end;
+}
diff --git a/world/map/npc/027-5/general_terogan_door.txt b/world/map/npc/027-5/general_terogan_door.txt
new file mode 100644
index 00000000..306ace35
--- /dev/null
+++ b/world/map/npc/027-5/general_terogan_door.txt
@@ -0,0 +1,19 @@
+// Mini-Boss
+// General Terogan
+
+027-5.gat,70,25,0|script|#GeneralDoor3|35,1,0
+{
+ if ( (countitem("CryptKey") < 10) && ($@CRYPT_FIGHT3 != 0) )
+ goto L_NoKeys;
+
+ delitem "CryptKey", 10;
+ warp "027-8.gat",39,60;
+ goto L_Close;
+
+L_NoKeys:
+ message strcharinfo(0), "This door is locked.";
+ end;
+
+L_Close:
+ close;
+}
diff --git a/world/map/npc/027-6/casket_traps.txt b/world/map/npc/027-6/casket_traps.txt
new file mode 100644
index 00000000..004fb9a7
--- /dev/null
+++ b/world/map/npc/027-6/casket_traps.txt
@@ -0,0 +1,70 @@
+027-6.gat,32,39,0|script|#casket25|35,1,1
+{
+ end;
+
+OnTouch:
+ percentheal -10, 0;
+ specialeffect 301;
+ specialeffect 302;
+ end;
+}
+027-6.gat,27,48,0|script|#casket26|35,1,1
+{
+ end;
+
+OnTouch:
+ percentheal -10, 0;
+ specialeffect 301;
+ specialeffect 302;
+ end;
+}
+027-6.gat,52,50,0|script|#casket27|35,1,1
+{
+ end;
+
+OnTouch:
+ percentheal -10, 0;
+ specialeffect 301;
+ specialeffect 302;
+ end;
+}
+027-6.gat,45,48,0|script|#casket28|35,1,1
+{
+ end;
+
+OnTouch:
+ percentheal -10, 0;
+ specialeffect 301;
+ specialeffect 302;
+ end;
+}
+027-6.gat,47,30,0|script|#casket29|35,1,1
+{
+ end;
+
+OnTouch:
+ percentheal -10, 0;
+ specialeffect 301;
+ specialeffect 302;
+ end;
+}
+027-6.gat,33,31,0|script|#casket30|35,1,1
+{
+ end;
+
+OnTouch:
+ percentheal -10, 0;
+ specialeffect 301;
+ specialeffect 302;
+ end;
+}
+027-6.gat,52,40,0|script|#casket31|35,1,1
+{
+ end;
+
+OnTouch:
+ percentheal -10, 0;
+ specialeffect 301;
+ specialeffect 302;
+ end;
+}
diff --git a/world/map/npc/027-6/general_krukan.txt b/world/map/npc/027-6/general_krukan.txt
new file mode 100644
index 00000000..67213b49
--- /dev/null
+++ b/world/map/npc/027-6/general_krukan.txt
@@ -0,0 +1,231 @@
+// author: Jenalya, wushin
+// Based off Cindy Fight
+// General Krukan Fight
+
+027-6.gat,39,25,0|script|General Krukan|400,
+{
+ if ($@CRYPT_FIGHT1 != 0)
+ end;
+
+ set @KRUKAN_SOUL_REQ, 1;
+ set @KRUKAN_SKULL_REQ, 5;
+ set @KRUKAN_DARK_CRYSTAL_REQ, 5;
+ set @KRUKAN_BONE_REQ, 5;
+ set @minlevel, 60;
+
+ mes "[Tome]";
+ mes "The Tome is open to a page about a summon ritual that can be performed in this chamber.";
+ next;
+ goto L_TomeMain;
+
+L_TomeMain:
+ mes "What do you want to do?";
+ menu
+ "Read reagent List.", L_SummonReagents,
+ "Perform Ritual.", L_Ritual,
+ "Nothing.", L_Close;
+
+L_SummonReagents:
+ mes "Says we need " + @KRUKAN_SOUL_REQ + " Souls, " + @KRUKAN_SKULL_REQ + " Diseased Hearts, " + @KRUKAN_DARK_CRYSTAL_REQ + " Undead Eyes, and " + @KRUKAN_BONE_REQ + " Undead Ears to perform the ritual.";
+ next;
+ goto L_TomeMain;
+
+L_MissingReagents:
+ mes "It appears we are missing something, lets check the reagent list again.";
+ next;
+ goto L_SummonReagents;
+
+L_Ritual:
+ if (BaseLevel < @minlevel)
+ goto L_ToWeak;
+ if ( (countitem("Soul") < @KRUKAN_SOUL_REQ)
+ || (countitem("Skull") < @KRUKAN_SKULL_REQ)
+ || (countitem("DarkCrystal") < @KRUKAN_DARK_CRYSTAL_REQ)
+ || (countitem("Bone") < @KRUKAN_BONE_REQ) )
+ goto L_MissingReagents;
+ delitem "Soul", @KRUKAN_SOUL_REQ;
+ delitem "Skull", @KRUKAN_SKULL_REQ;
+ delitem "DarkCrystal", @KRUKAN_DARK_CRYSTAL_REQ;
+ delitem "Bone", @KRUKAN_BONE_REQ;
+ mes "As you perform the ritual you can feel the energy amass.";
+ next;
+ mes "A cold shiver runs down your spine as you feel something manifesting out of the void.";
+ if ($@CRYPT_FIGHT1 != 0)
+ goto L_Close;
+
+ // initialize fight
+ set $@CRYPT_FIGHT1, 1;
+ set $@CRYPT_FIGHT1_WAVE, 0;
+ set $@CRYPT_FIGHT1_SUMMONS_COUNT, 2;
+ set $@CRYPT_FIGHT1_PLAYER_COUNT, getmapusers("027-6.gat");
+ areamonster "027-6.gat", 0, 0, 79, 84, "", 1043, 1, "General Krukan::OnPetDeath";
+ areamonster "027-6.gat", 0, 0, 79, 84, "", 1044, 1, "General Krukan::OnPetDeath";
+
+ initnpctimer;
+ goto L_Announce;
+
+L_ToWeak:
+ mes "You try to perform the ritual but nothing happens. You don't seem experienced enough.";
+ goto L_Close;
+
+L_Close:
+ set @bonus, 0;
+ set @minlevel, 0;
+ set @KRUKAN_SOUL_REQ, 0;
+ set @KRUKAN_SKULL_REQ, 0;
+ set @KRUKAN_DARK_CRYSTAL_REQ, 0;
+ set @KRUKAN_BONE_REQ, 0;
+ close;
+
+// Fight logic attached to npc
+OnTimer5000:
+ setnpctimer 0;
+ if ($@CRYPT_FIGHT1 != 0)
+ goto L_CryptLogic;
+ goto L_Return_1;
+
+L_Return_1:
+ set $@CRYPT_FIGHT1_PLAYER_COUNT, 0;
+ areatimer "027-6.gat", 0, 0, 79, 84, 10, "General Krukan::OnTick";
+ end;
+
+L_CryptLogic:
+ set $@CRYPT_FIGHT1_ROUND_PEN, $@CRYPT_FIGHT1_PLAYER_COUNT;
+ if ($@CRYPT_FIGHT1_ROUND_PEN > 60)
+ set $@CRYPT_FIGHT1_ROUND_PEN, 60;
+ if ($@CRYPT_FIGHT1_PLAYER_COUNT <= 0)
+ goto L_CleanUpLosers;
+ set $@CRYPT_FIGHT1_SUMMONS_ROUND_TIMER, $@CRYPT_FIGHT1_SUMMONS_ROUND_TIMER + 5; // Advance 5 seconds
+ if (mobcount("027-6.gat", "General Krukan::OnPetDeath") < 0)
+ goto L_NextWave;
+ if ($@CRYPT_FIGHT1_SUMMONS_ROUND_TIMER + $@CRYPT_FIGHT1_ROUND_PEN >= 120)
+ goto L_NextWave;
+ goto L_Return_1;
+
+L_NextWave:
+ set $@CRYPT_FIGHT1_SUMMONS_ROUND_TIMER, 0;
+ set $@CRYPT_FIGHT1_WAVE, $@CRYPT_FIGHT1_WAVE + 1;
+ if ( ($@CRYPT_FIGHT1_WAVE > 10) && ($@CRYPT_FIGHT1_SUMMONS_COUNT == 0) )
+ goto L_CleanUp;
+ if ( ($@CRYPT_FIGHT1_WAVE > 10) && ($@CRYPT_FIGHT1_WAVE < 22) )
+ goto L_Return_1;
+ if ($@CRYPT_FIGHT1_WAVE > 22)
+ goto L_SummonNuke;
+ if ($@CRYPT_FIGHT1_WAVE < 5)
+ goto L_WeakSummons;
+ if ( ($@CRYPT_FIGHT1_WAVE < 10) && ($@CRYPT_FIGHT1_WAVE >= 5) )
+ goto L_StrongSummons;
+ if ($@CRYPT_FIGHT1_WAVE == 10)
+ goto L_BossSummons;
+ goto L_SummonNuke;
+
+L_SummonNuke:
+ set $@CRYPT_FIGHT1_SUMMONS_COUNT, $@CRYPT_FIGHT1_SUMMONS_COUNT + $@CRYPT_FIGHT1_WAVE*2 + $@CRYPT_FIGHT1_PLAYER_COUNT*4;
+ areamonster "027-6.gat", 0, 0, 79, 84, "", 1043, $@CRYPT_FIGHT1_WAVE*2 + $@CRYPT_FIGHT1_PLAYER_COUNT*4, "General Krukan::OnPetDeath";
+ goto L_Announce;
+
+L_WeakSummons:
+ set $@CRYPT_FIGHT1_SUMMONS_NUMBER, (5 + (1 * $@CRYPT_FIGHT1_WAVE) + (2 * $@CRYPT_FIGHT1_PLAYER_COUNT))/2;
+ set $@CRYPT_FIGHT1_SUMMONS_COUNT, $@CRYPT_FIGHT1_SUMMONS_COUNT + ($@CRYPT_FIGHT1_SUMMONS_NUMBER/2) + ($@CRYPT_FIGHT1_SUMMONS_NUMBER/2);
+
+ areamonster "027-6.gat", 0, 0, 79, 84, "", 1043, ($@CRYPT_FIGHT1_SUMMONS_NUMBER/2), "General Krukan::OnPetDeath";
+ areamonster "027-6.gat", 0, 0, 79, 84, "", 1044, ($@CRYPT_FIGHT1_SUMMONS_NUMBER/2), "General Krukan::OnPetDeath";
+ goto L_Announce;
+
+L_StrongSummons:
+ set $@CRYPT_FIGHT1_SUMMONS_NUMBER, (5 + (1 * $@CRYPT_FIGHT1_WAVE) + (2 * $@CRYPT_FIGHT1_PLAYER_COUNT))/2;
+ set $@CRYPT_FIGHT1_SUMMONS_COUNT, $@CRYPT_FIGHT1_SUMMONS_COUNT + ($@CRYPT_FIGHT1_SUMMONS_NUMBER/2) + ($@CRYPT_FIGHT1_SUMMONS_NUMBER/2);
+
+ areamonster "027-6.gat", 0, 0, 79, 84, "", 1036, ($@CRYPT_FIGHT1_SUMMONS_NUMBER/2), "General Krukan::OnPetDeath";
+ areamonster "027-6.gat", 0, 0, 79, 84, "", 1045, ($@CRYPT_FIGHT1_SUMMONS_NUMBER/2), "General Krukan::OnPetDeath";
+ goto L_Announce;
+
+L_BossSummons:
+ set $@CRYPT_FIGHT1_SUMMONS_NUMBER, (5 + (1 * $@CRYPT_FIGHT1_WAVE) + (2 * $@CRYPT_FIGHT1_PLAYER_COUNT))/2;
+ set $@CRYPT_FIGHT1_SUMMONS_COUNT, $@CRYPT_FIGHT1_SUMMONS_COUNT + ($@CRYPT_FIGHT1_SUMMONS_NUMBER/2) + ($@CRYPT_FIGHT1_SUMMONS_NUMBER/2);
+ areamonster "027-6.gat", 0, 0, 79, 84, "", 1036, ($@CRYPT_FIGHT1_SUMMONS_NUMBER/2), "General Krukan::OnPetDeath";
+ areamonster "027-6.gat", 0, 0, 79, 84, "", 1045, ($@CRYPT_FIGHT1_SUMMONS_NUMBER/2), "General Krukan::OnPetDeath";
+ areamonster "027-6.gat", 0, 0, 79, 84, "", 1127, 1, "General Krukan::OnPetDeath";
+ set $@CRYPT_FIGHT1_SUMMONS_COUNT, $@CRYPT_FIGHT1_SUMMONS_COUNT + 1;
+ goto L_Announce;
+
+L_Announce:
+ set $@msg$, $@CRYPT_FIGHT1_MESSAGES$[$@CRYPT_FIGHT1_WAVE];
+ if ($@msg$ == "")
+ goto L_Return_1;
+ mapannounce "027-6.gat", $@msg$, 0;
+ mapannounce "027-3.gat", $@msg$, 0;
+ set $@msg$, "";
+ goto L_Return_1;
+
+// Called on each player once every 5 seconds
+OnTick:
+ if (isdead()) end;
+ set $@CRYPT_FIGHT1_PLAYER_COUNT, $@CRYPT_FIGHT1_PLAYER_COUNT + 1;
+ end;
+
+OnPetDeath:
+ set $@CRYPT_FIGHT1_SUMMONS_COUNT, $@CRYPT_FIGHT1_SUMMONS_COUNT - 1;
+ end;
+
+L_CleanUpLosers:
+ set $@CRYPT_FIGHT1, 0;
+ set $@CRYPT_FIGHT1_PLAYER_COUNT, 0;
+ set $@CRYPT_FIGHT1_WAVE, 0;
+ set $@CRYPT_FIGHT1_SUMMONS_ROUND_TIMER, 0;
+ set $@CRYPT_FIGHT1_SUMMONS_COUNT, 0;
+ set $@CRYPT_FIGHT1_ROUND_PEN, 0;
+ set $@CRYPT_FIGHT1_SUMMONS_NUMBER, 0;
+ killmonster "027-6.gat", "General Krukan::OnPetDeath";
+ stopnpctimer;
+ setnpctimer 0;
+ end;
+
+L_CleanUp:
+ areatimer "027-6.gat", 0, 0, 79, 84, 10, "General Krukan::OnReward";
+ set $@CRYPT_FIGHT1, 0;
+ set $@CRYPT_FIGHT1_PLAYER_COUNT, 0;
+ set $@CRYPT_FIGHT1_WAVE, 0;
+ set $@CRYPT_FIGHT1_SUMMONS_ROUND_TIMER, 0;
+ set $@CRYPT_FIGHT1_SUMMONS_COUNT, 0;
+ set $@CRYPT_FIGHT1_ROUND_PEN, 0;
+ set $@CRYPT_FIGHT1_SUMMONS_NUMBER, 0;
+ killmonster "027-6.gat", "General Krukan::OnPetDeath";
+ stopnpctimer;
+ setnpctimer 0;
+ end;
+
+OnReward:
+ if (isdead()) end;
+ set @bonus, (BaseLevel/4);
+ set DailyQuestBonus, DailyQuestBonus + @bonus;
+ message strcharinfo(0), "You feel a temporary rush of power and zest for action. " + @bonus + " daily bonus gained." ;
+ set BOSS_POINTS, BOSS_POINTS + 25;
+ message strcharinfo(0), "You gain 20 Boss Points giving you a total of " + BOSS_POINTS + ".";
+ goto L_End;
+
+L_End:
+ set @bonus, 0;
+ set @minlevel, 0;
+ set @KRUKAN_SOUL_REQ, 0;
+ set @KRUKAN_SKULL_REQ, 0;
+ set @KRUKAN_DARK_CRYSTAL_REQ, 0;
+ set @KRUKAN_BONE_REQ, 0;
+ end;
+
+OnInit:
+ setarray $@CRYPT_FIGHT1_MESSAGES$,
+ "General Krukan : Haha, Thank you mortal. You have released me from my prison. To show my graditude you can die swiftly at my hands and become part of my undead army. MUhahahahaha! Minions, Dispose of these Adventurers!",
+ "General Krukan : Ha, Looks like your tougher then I thought.",
+ "General Krukan : and here I thought I wasn't going to enjoy this.",
+ "General Krukan : More of them are coming!",
+ "General Krukan : Minions! Kill them already!",
+ "General Krukan : *facepalm* I knew I should have hired better help.",
+ "General Krukan : Well at least you will make a good addition to my army.",
+ "General Krukan : To the Abyss with you already!",
+ "General Krukan : How about you try a different approach and kill them already!",
+ "General Krukan : Minions! Last chance or it's back to being part of an ossuary for you!",
+ "General Krukan : Looks like if you want something done right you have to do it yourself.",
+ "General Krukan : Charge!.";
+ end;
+}
diff --git a/world/map/npc/027-6/general_krukan_exitdoor.txt b/world/map/npc/027-6/general_krukan_exitdoor.txt
new file mode 100644
index 00000000..dee6e896
--- /dev/null
+++ b/world/map/npc/027-6/general_krukan_exitdoor.txt
@@ -0,0 +1,14 @@
+// Mini-Boss
+// General Krukan exit
+
+027-6.gat,38,61,0|script|#GeneralExit1|35,6,0
+{
+ if ($@CRYPT_FIGHT1 == 1)
+ goto L_Block;
+ warp "027-3.gat",82,89;
+ end;
+
+L_Block:
+ message strcharinfo(0), "A force field seems to be blocking you from exiting.";
+ end;
+}
diff --git a/world/map/npc/027-7/general_razha.txt b/world/map/npc/027-7/general_razha.txt
new file mode 100644
index 00000000..ddd66d84
--- /dev/null
+++ b/world/map/npc/027-7/general_razha.txt
@@ -0,0 +1,231 @@
+// author: Jenalya, wushin
+// Based off Cindy Fight
+// General Razha Fight
+
+027-7.gat,39,25,0|script|General Razha|400,
+{
+ if ($@CRYPT_FIGHT2 != 0)
+ end;
+
+ set @RAZHA_SOUL_REQ, 3;
+ set @RAZHA_ROTTEN_RAGS_REQ, 5;
+ set @RAZHA_UNDEAD_EYE_REQ, 5;
+ set @RAZHA_UNDEAD_EAR_REQ, 5;
+ set @minlevel, 70;
+
+ mes "[Tome]";
+ mes "The Tome is open to a page about a summon ritual that can be performed in this chamber.";
+ next;
+ goto L_TomeMain;
+
+L_TomeMain:
+ mes "What do you want to do?";
+ menu
+ "Read reagent List.", L_SummonReagents,
+ "Perform Ritual.", L_Ritual,
+ "Nothing.", L_Close;
+
+L_SummonReagents:
+ mes "Says we need " + @RAZHA_SOUL_REQ + " Souls, " + @RAZHA_ROTTEN_RAGS_REQ + " Diseased Hearts, " + @RAZHA_UNDEAD_EYE_REQ + " Undead Eyes, and " + @RAZHA_UNDEAD_EAR_REQ + " Undead Ears to perform the ritual.";
+ next;
+ goto L_TomeMain;
+
+L_MissingReagents:
+ mes "It appears we are missing something, lets check the reagent list again.";
+ next;
+ goto L_SummonReagents;
+
+L_Ritual:
+ if (BaseLevel < @minlevel)
+ goto L_ToWeak;
+ if ( (countitem("Soul") < @RAZHA_SOUL_REQ)
+ || (countitem("RottenRags") < @RAZHA_ROTTEN_RAGS_REQ)
+ || (countitem("UndeadEye") < @RAZHA_UNDEAD_EYE_REQ)
+ || (countitem("UndeadEar") < @RAZHA_UNDEAD_EAR_REQ) )
+ goto L_MissingReagents;
+ delitem "Soul", @RAZHA_SOUL_REQ;
+ delitem "RottenRags", @RAZHA_ROTTEN_RAGS_REQ;
+ delitem "UndeadEye", @RAZHA_UNDEAD_EYE_REQ;
+ delitem "UndeadEar", @RAZHA_UNDEAD_EAR_REQ;
+ mes "As you perform the ritual you can feel the energy amass.";
+ next;
+ mes "A cold shiver runs down your spine as you feel something manifesting out of the void.";
+ if ($@CRYPT_FIGHT2 != 0)
+ goto L_Close;
+
+ // initialize fight
+ set $@CRYPT_FIGHT2, 1;
+ set $@CRYPT_FIGHT2_WAVE, 0;
+ set $@CRYPT_FIGHT2_SUMMONS_COUNT, 2;
+ set $@CRYPT_FIGHT2_PLAYER_COUNT, getmapusers("027-7.gat");
+ areamonster "027-7.gat", 0, 0, 79, 84, "", 1036, 1, "General Razha::OnPetDeath";
+ areamonster "027-7.gat", 0, 0, 79, 84, "", 1124, 1, "General Razha::OnPetDeath";
+
+ initnpctimer;
+ goto L_Announce;
+
+L_ToWeak:
+ mes "You try to perform the ritual but nothing happens. You don't seem experienced enough.";
+ goto L_Close;
+
+L_Close:
+ set @bonus, 0;
+ set @minlevel, 0;
+ set @RAZHA_SOUL_REQ, 0;
+ set @RAZHA_ROTTEN_RAGS_REQ, 0;
+ set @RAZHA_UNDEAD_EYE_REQ, 0;
+ set @RAZHA_UNDEAD_EAR_REQ, 0;
+ close;
+
+// Fight logic attached to npc
+OnTimer5000:
+ setnpctimer 0;
+ if ($@CRYPT_FIGHT2 != 0)
+ goto L_CryptLogic;
+ goto L_Return_1;
+
+L_Return_1:
+ set $@CRYPT_FIGHT2_PLAYER_COUNT, 0;
+ areatimer "027-7.gat", 0, 0, 79, 84, 10, "General Razha::OnTick";
+ end;
+
+L_CryptLogic:
+ set $@CRYPT_FIGHT2_ROUND_PEN, $@CRYPT_FIGHT2_PLAYER_COUNT;
+ if ($@CRYPT_FIGHT2_ROUND_PEN > 60)
+ set $@CRYPT_FIGHT2_ROUND_PEN, 60;
+ if ($@CRYPT_FIGHT2_PLAYER_COUNT <= 0)
+ goto L_CleanUpLosers;
+ set $@CRYPT_FIGHT2_SUMMONS_ROUND_TIMER, $@CRYPT_FIGHT2_SUMMONS_ROUND_TIMER + 5; // Advance 5 seconds
+ if (mobcount("027-7.gat", "General Razha::OnPetDeath") < 0)
+ goto L_NextWave;
+ if ($@CRYPT_FIGHT2_SUMMONS_ROUND_TIMER + $@CRYPT_FIGHT2_ROUND_PEN >= 120)
+ goto L_NextWave;
+ goto L_Return_1;
+
+L_NextWave:
+ set $@CRYPT_FIGHT2_SUMMONS_ROUND_TIMER, 0;
+ set $@CRYPT_FIGHT2_WAVE, $@CRYPT_FIGHT2_WAVE + 1;
+ if ( ($@CRYPT_FIGHT2_WAVE > 10) && ($@CRYPT_FIGHT2_SUMMONS_COUNT == 0) )
+ goto L_CleanUp;
+ if ( ($@CRYPT_FIGHT2_WAVE > 10) && ($@CRYPT_FIGHT2_WAVE < 22) )
+ goto L_Return_1;
+ if ($@CRYPT_FIGHT2_WAVE > 22)
+ goto L_SummonNuke;
+ if ($@CRYPT_FIGHT2_WAVE < 5)
+ goto L_WeakSummons;
+ if ( ($@CRYPT_FIGHT2_WAVE < 10) && ($@CRYPT_FIGHT2_WAVE >= 5) )
+ goto L_StrongSummons;
+ if ($@CRYPT_FIGHT2_WAVE == 10)
+ goto L_BossSummons;
+ goto L_SummonNuke;
+
+L_SummonNuke:
+ set $@CRYPT_FIGHT2_SUMMONS_COUNT, $@CRYPT_FIGHT2_SUMMONS_COUNT + $@CRYPT_FIGHT2_WAVE*2 + $@CRYPT_FIGHT2_PLAYER_COUNT*4;
+ areamonster "027-7.gat", 0, 0, 79, 84, "", 1036, $@CRYPT_FIGHT2_WAVE*2 + $@CRYPT_FIGHT2_PLAYER_COUNT*4, "General Razha::OnPetDeath";
+ goto L_Announce;
+
+L_WeakSummons:
+ set $@CRYPT_FIGHT2_SUMMONS_NUMBER, (5 + (1 * $@CRYPT_FIGHT2_WAVE) + (2 * $@CRYPT_FIGHT2_PLAYER_COUNT))/2;
+ set $@CRYPT_FIGHT2_SUMMONS_COUNT, $@CRYPT_FIGHT2_SUMMONS_COUNT + ($@CRYPT_FIGHT2_SUMMONS_NUMBER/2) + ($@CRYPT_FIGHT2_SUMMONS_NUMBER/2);
+
+ areamonster "027-7.gat", 0, 0, 79, 84, "", 1036, ($@CRYPT_FIGHT2_SUMMONS_NUMBER/2), "General Razha::OnPetDeath";
+ areamonster "027-7.gat", 0, 0, 79, 84, "", 1045, ($@CRYPT_FIGHT2_SUMMONS_NUMBER/2), "General Razha::OnPetDeath";
+ goto L_Announce;
+
+L_StrongSummons:
+ set $@CRYPT_FIGHT2_SUMMONS_NUMBER, (5 + (1 * $@CRYPT_FIGHT2_WAVE) + (2 * $@CRYPT_FIGHT2_PLAYER_COUNT))/2;
+ set $@CRYPT_FIGHT2_SUMMONS_COUNT, $@CRYPT_FIGHT2_SUMMONS_COUNT + ($@CRYPT_FIGHT2_SUMMONS_NUMBER/2) + ($@CRYPT_FIGHT2_SUMMONS_NUMBER/2);
+
+ areamonster "027-7.gat", 0, 0, 79, 84, "", 1036, ($@CRYPT_FIGHT2_SUMMONS_NUMBER/2), "General Razha::OnPetDeath";
+ areamonster "027-7.gat", 0, 0, 79, 84, "", 1124, ($@CRYPT_FIGHT2_SUMMONS_NUMBER/2), "General Razha::OnPetDeath";
+ goto L_Announce;
+
+L_BossSummons:
+ set $@CRYPT_FIGHT2_SUMMONS_NUMBER, (5 + (1 * $@CRYPT_FIGHT2_WAVE) + (2 * $@CRYPT_FIGHT2_PLAYER_COUNT))/2;
+ set $@CRYPT_FIGHT2_SUMMONS_COUNT, $@CRYPT_FIGHT2_SUMMONS_COUNT + ($@CRYPT_FIGHT2_SUMMONS_NUMBER/2) + ($@CRYPT_FIGHT2_SUMMONS_NUMBER/2);
+ areamonster "027-7.gat", 0, 0, 79, 84, "", 1036, ($@CRYPT_FIGHT2_SUMMONS_NUMBER/2), "General Razha::OnPetDeath";
+ areamonster "027-7.gat", 0, 0, 79, 84, "", 1124, ($@CRYPT_FIGHT2_SUMMONS_NUMBER/2), "General Razha::OnPetDeath";
+ areamonster "027-7.gat", 0, 0, 79, 84, "", 1128, 1, "General Razha::OnPetDeath";
+ set $@CRYPT_FIGHT2_SUMMONS_COUNT, $@CRYPT_FIGHT2_SUMMONS_COUNT + 1;
+ goto L_Announce;
+
+L_Announce:
+ set $@msg$, $@CRYPT_FIGHT2_MESSAGES$[$@CRYPT_FIGHT2_WAVE];
+ if ($@msg$ == "")
+ goto L_Return_1;
+ mapannounce "027-7.gat", $@msg$, 0;
+ mapannounce "027-4.gat", $@msg$, 0;
+ set $@msg$, "";
+ goto L_Return_1;
+
+// Called on each player once every 5 seconds
+OnTick:
+ if (isdead()) end;
+ set $@CRYPT_FIGHT2_PLAYER_COUNT, $@CRYPT_FIGHT2_PLAYER_COUNT + 1;
+ end;
+
+OnPetDeath:
+ set $@CRYPT_FIGHT2_SUMMONS_COUNT, $@CRYPT_FIGHT2_SUMMONS_COUNT - 1;
+ end;
+
+L_CleanUpLosers:
+ set $@CRYPT_FIGHT2, 0;
+ set $@CRYPT_FIGHT2_PLAYER_COUNT, 0;
+ set $@CRYPT_FIGHT2_WAVE, 0;
+ set $@CRYPT_FIGHT2_SUMMONS_ROUND_TIMER, 0;
+ set $@CRYPT_FIGHT2_SUMMONS_COUNT, 0;
+ set $@CRYPT_FIGHT2_ROUND_PEN, 0;
+ set $@CRYPT_FIGHT2_SUMMONS_NUMBER, 0;
+ killmonster "027-7.gat", "General Razha::OnPetDeath";
+ stopnpctimer;
+ setnpctimer 0;
+ end;
+
+L_CleanUp:
+ areatimer "027-7.gat", 0, 0, 79, 84, 10, "General Razha::OnReward";
+ set $@CRYPT_FIGHT2, 0;
+ set $@CRYPT_FIGHT2_PLAYER_COUNT, 0;
+ set $@CRYPT_FIGHT2_WAVE, 0;
+ set $@CRYPT_FIGHT2_SUMMONS_ROUND_TIMER, 0;
+ set $@CRYPT_FIGHT2_SUMMONS_COUNT, 0;
+ set $@CRYPT_FIGHT2_ROUND_PEN, 0;
+ set $@CRYPT_FIGHT2_SUMMONS_NUMBER, 0;
+ killmonster "027-7.gat", "General Razha::OnPetDeath";
+ stopnpctimer;
+ setnpctimer 0;
+ end;
+
+OnReward:
+ if (isdead()) end;
+ set @bonus, (BaseLevel/2);
+ set DailyQuestBonus, DailyQuestBonus + @bonus;
+ message strcharinfo(0), "You feel a temporary rush of power and zest for action. " + @bonus + " daily bonus gained." ;
+ set BOSS_POINTS, BOSS_POINTS + 50;
+ message strcharinfo(0), "You gain 50 Boss Points giving you a total of " + BOSS_POINTS + ".";
+ goto L_End;
+
+L_End:
+ set @bonus, 0;
+ set @minlevel, 0;
+ set @RAZHA_SOUL_REQ, 0;
+ set @RAZHA_ROTTEN_RAGS_REQ, 0;
+ set @RAZHA_UNDEAD_EYE_REQ, 0;
+ set @RAZHA_UNDEAD_EAR_REQ, 0;
+ end;
+
+OnInit:
+ setarray $@CRYPT_FIGHT2_MESSAGES$,
+ "General Razha : Haha, Thank you mortal. You have released me from my prison. To show my graditude you can die swiftly at my hands and become part of my undead army. MUhahahahaha! Minions, Dispose of these Adventurers!",
+ "General Razha : Ha, Looks like your tougher then I thought.",
+ "General Razha : and here I thought I wasn't going to enjoy this.",
+ "General Razha : More of them are coming!",
+ "General Razha : Minions! Kill them already!",
+ "General Razha : *facepalm* I knew I should have hired better help.",
+ "General Razha : Well at least you will make a good addition to my army.",
+ "General Razha : To the Abyss with you already!",
+ "General Razha : How about you try a different approach and kill them already!",
+ "General Razha : Minions! Last chance or it's back to being part of an ossuary for you!",
+ "General Razha : Looks like if you want something done right you have to do it yourself.",
+ "General Razha : Charge!.";
+ end;
+}
diff --git a/world/map/npc/027-7/general_razha_exitdoor.txt b/world/map/npc/027-7/general_razha_exitdoor.txt
new file mode 100644
index 00000000..97468895
--- /dev/null
+++ b/world/map/npc/027-7/general_razha_exitdoor.txt
@@ -0,0 +1,14 @@
+// Mini-Boss
+// General Razha
+
+027-7.gat,36,61,0|script|#GeneralExit2|35,6,0
+{
+ if ($@CRYPT_FIGHT2 != 0)
+ goto L_Block;
+ warp "027-4.gat",73,77;
+ end;
+
+L_Block:
+ message strcharinfo(0), "A force field seems to be blocking you from exiting.";
+ end;
+}
diff --git a/world/map/npc/027-8/general_terogan.txt b/world/map/npc/027-8/general_terogan.txt
new file mode 100644
index 00000000..3edc2db6
--- /dev/null
+++ b/world/map/npc/027-8/general_terogan.txt
@@ -0,0 +1,304 @@
+// author: Jenalya, wushin
+// Based off Cindy Fight
+// General Terogan Fight
+
+027-8.gat,39,24,0|script|General Terogan#Main|400,
+{
+ if ($@CRYPT_FIGHT3 != 0)
+ end;
+
+ set @TEROGAN_SOUL_REQ, 5;
+ set @TEROGAN_DISEASED_HEART_REQ, 5;
+ set @TEROGAN_UNDEAD_EYE_REQ, 5;
+ set @TEROGAN_UNDEAD_EAR_REQ, 5;
+ set @minlevel, 80;
+
+ mes "[Tome]";
+ mes "The Tome is open to a page about a summon ritual that can be performed in this chamber.";
+ next;
+ goto L_TomeMain;
+
+L_TomeMain:
+ mes "What do you want to do?";
+ menu
+ "Read reagent List.", L_SummonReagents,
+ "Assign myself left.", L_SummonLeft,
+ "Assign myself right.", L_SummonRight,
+ "Perform Ritual.", L_RitualMenu,
+ "Nothing.", L_Close;
+
+L_SummonReagents:
+ mes "Says we need " + @TEROGAN_SOUL_REQ + " Souls, " + @TEROGAN_DISEASED_HEART_REQ + " Diseased Hearts, " + @TEROGAN_UNDEAD_EYE_REQ + " Undead Eyes, and " + @TEROGAN_UNDEAD_EAR_REQ + " Undead Ears to perform the ritual. You will also need help, as the summon states both rooms need at least 1 occupant during the ritual.";
+ next;
+ goto L_TomeMain;
+
+L_MissingReagents:
+ mes "It appears we are missing something, lets check the reagent list again.";
+ next;
+ goto L_SummonReagents;
+
+L_SummonLeft:
+ warp "027-8", 27, 43;
+ goto L_Close;
+
+L_SummonRight:
+ warp "027-8", 51, 43;
+ goto L_Close;
+
+L_RitualMenu:
+ mes "Which side do you want to be on?";
+ menu
+ "Left.", L_RitualLeft,
+ "Right.", L_RitualRight;
+
+L_RitualLeft:
+ if (BaseLevel < @minlevel)
+ goto L_ToWeak;
+ if ( (countitem("Soul") < @TEROGAN_SOUL_REQ)
+ || (countitem("DiseasedHeart") < @TEROGAN_DISEASED_HEART_REQ)
+ || (countitem("UndeadEye") < @TEROGAN_UNDEAD_EYE_REQ)
+ || (countitem("UndeadEar") < @TEROGAN_UNDEAD_EAR_REQ) )
+ goto L_MissingReagents;
+ if (getareausers("027-8", 43, 39, 58, 60) == 0)
+ goto L_NeedOther;
+ delitem "Soul", @TEROGAN_SOUL_REQ;
+ delitem "DiseasedHeart", @TEROGAN_DISEASED_HEART_REQ;
+ delitem "UndeadEye", @TEROGAN_UNDEAD_EYE_REQ;
+ delitem "UndeadEar", @TEROGAN_UNDEAD_EAR_REQ;
+ mes "As you perform the ritual you can feel the energy amass.";
+ next;
+ mes "A cold shiver runs down your spine as you feel something manifesting out of the void.";
+ if ($@CRYPT_FIGHT3 != 0)
+ goto L_Close;
+
+ // initialize fight
+ set $@CRYPT_FIGHT3, 1;
+ set $@CRYPT_FIGHT3_WAVE, 0;
+ set $@CRYPT_FIGHT3_SUMMONS_COUNT, 2;
+ set $@CRYPT_FIGHT3_PLAYER_COUNT, getmapusers("027-8.gat");
+ areamonster "027-8.gat", 43, 39, 58, 60, "", 1124, 1, "General Terogan#Main::OnPetDeath";
+ areamonster "027-8.gat", 20, 39, 35, 60, "", 1075, 1, "General Terogan#Main::OnPetDeath";
+
+ initnpctimer;
+ warp "027-8", 27, 43;
+ goto L_Announce;
+
+L_RitualRight:
+ if (BaseLevel < @minlevel)
+ goto L_ToWeak;
+ if ( (countitem("Soul") < @TEROGAN_SOUL_REQ)
+ || (countitem("RottenRags") < @TEROGAN_DISEASED_HEART_REQ)
+ || (countitem("UndeadEye") < @TEROGAN_UNDEAD_EYE_REQ)
+ || (countitem("UndeadEar") < @TEROGAN_UNDEAD_EAR_REQ) )
+ goto L_MissingReagents;
+ if (getareausers("027-8", 20, 39, 35, 60) == 0)
+ goto L_NeedOther;
+ delitem "Soul", @TEROGAN_SOUL_REQ;
+ delitem "RottenRags", @TEROGAN_DISEASED_HEART_REQ;
+ delitem "UndeadEye", @TEROGAN_UNDEAD_EYE_REQ;
+ delitem "UndeadEar", @TEROGAN_UNDEAD_EAR_REQ;
+ mes "As you perform the ritual you can feel the energy amass.";
+ next;
+ mes "A cold shiver runs down your spine as you feel something manifesting out of the void.";
+ warp "027-8", 51, 43;
+ if ($@CRYPT_FIGHT3 != 0)
+ goto L_Close;
+
+ // initialize fight
+ set $@CRYPT_FIGHT3, 1;
+ set $@CRYPT_FIGHT3_WAVE, 0;
+ set $@CRYPT_FIGHT3_SUMMONS_COUNT, 2;
+ set $@CRYPT_FIGHT3_PLAYER_COUNT, getmapusers("027-8.gat");
+ areamonster "027-8.gat", 43, 39, 58, 60, "", 1124, 1, "General Terogan#Main::OnPetDeath";
+ areamonster "027-8.gat", 20, 39, 35, 60, "", 1075, 1, "General Terogan#Main::OnPetDeath";
+
+ initnpctimer;
+ goto L_Announce;
+
+L_NeedOther:
+ mes "You need at least one other person in the the other chamber to start.";
+ goto L_TomeMain;
+
+L_ToWeak:
+ mes "You try to perform the ritual but nothing happens. You don't seem experienced enough.";
+ goto L_Close;
+
+L_Close:
+ set @bonus, 0;
+ set @minlevel, 0;
+ set @TEROGAN_SOUL_REQ, 0;
+ set @TEROGAN_DISEASED_HEART_REQ, 0;
+ set @TEROGAN_UNDEAD_EYE_REQ, 0;
+ set @TEROGAN_UNDEAD_EAR_REQ, 0;
+ close;
+
+// Fight logic attached to npc
+OnTimer5000:
+ setnpctimer 0;
+ if ($@CRYPT_FIGHT3 != 0)
+ goto L_CryptLogic;
+ goto L_Return_1;
+
+L_Return_1:
+ set $@CRYPT_FIGHT3_PLAYER_COUNT, 0;
+ areatimer "027-8.gat", 0, 0, 79, 84, 10, "General Terogan#Main::OnTick";
+ end;
+
+L_CryptLogic:
+ set $@CRYPT_FIGHT3_ROUND_PEN, $@CRYPT_FIGHT3_PLAYER_COUNT;
+ if ($@CRYPT_FIGHT3_ROUND_PEN > 60)
+ set $@CRYPT_FIGHT3_ROUND_PEN, 60;
+ if ($@CRYPT_FIGHT3_PLAYER_COUNT <= 0)
+ goto L_CleanUpLosers;
+ set $@CRYPT_FIGHT3_SUMMONS_ROUND_TIMER, $@CRYPT_FIGHT3_SUMMONS_ROUND_TIMER + 5; // Advance 5 seconds
+ if (mobcount("027-8.gat", "General Terogan#Main::OnPetDeath") < 0)
+ goto L_NextWave;
+ if ($@CRYPT_FIGHT3_SUMMONS_ROUND_TIMER + $@CRYPT_FIGHT3_ROUND_PEN >= 120)
+ goto L_NextWave;
+ goto L_Return_1;
+
+L_NextWave:
+ set $@CRYPT_FIGHT3_SUMMONS_ROUND_TIMER, 0;
+ set $@CRYPT_FIGHT3_WAVE, $@CRYPT_FIGHT3_WAVE + 1;
+ if ( ($@CRYPT_FIGHT3_WAVE > 10) && ($@CRYPT_FIGHT3_SUMMONS_COUNT == 0) )
+ goto L_CleanUp;
+ if ( ($@CRYPT_FIGHT3_WAVE > 10) && ($@CRYPT_FIGHT3_WAVE < 22) )
+ goto L_Return_1;
+ if ($@CRYPT_FIGHT3_WAVE > 22)
+ goto L_SummonNuke;
+ if ($@CRYPT_FIGHT3_WAVE < 5)
+ goto L_WeakSummons;
+ if ( ($@CRYPT_FIGHT3_WAVE < 10) && ($@CRYPT_FIGHT3_WAVE >= 5) )
+ goto L_StrongSummons;
+ if ($@CRYPT_FIGHT3_WAVE == 10)
+ goto L_BossSummons;
+ goto L_SummonNuke;
+
+L_SummonNuke:
+ set $@CRYPT_FIGHT3_SUMMONS_COUNT, $@CRYPT_FIGHT3_SUMMONS_COUNT + $@CRYPT_FIGHT3_WAVE*2 + $@CRYPT_FIGHT3_PLAYER_COUNT*4;
+ areamonster "027-8.gat", 0, 0, 79, 84, "", 1124, $@CRYPT_FIGHT3_WAVE*2 + $@CRYPT_FIGHT3_PLAYER_COUNT*4, "General Terogan#Main::OnPetDeath";
+ goto L_Announce;
+
+L_WeakSummons:
+ set $@CRYPT_FIGHT3_SUMMONS_NUMBER, (5 + (1 * $@CRYPT_FIGHT3_WAVE) + (2 * $@CRYPT_FIGHT3_PLAYER_COUNT))/2;
+ set $@CRYPT_FIGHT3_SUMMONS_COUNT, $@CRYPT_FIGHT3_SUMMONS_COUNT + ($@CRYPT_FIGHT3_SUMMONS_NUMBER/2) + ($@CRYPT_FIGHT3_SUMMONS_NUMBER/2);
+
+ areamonster "027-8.gat", 43, 39, 58, 60, "", 1124, ($@CRYPT_FIGHT3_SUMMONS_NUMBER/2), "General Terogan#Main::OnPetDeath";
+ areamonster "027-8.gat", 20, 39, 35, 60, "", 1074, ($@CRYPT_FIGHT3_SUMMONS_NUMBER/2), "General Terogan#Main::OnPetDeath";
+ goto L_Announce;
+
+L_StrongSummons:
+ set $@CRYPT_FIGHT3_SUMMONS_NUMBER, (5 + (1 * $@CRYPT_FIGHT3_WAVE) + (2 * $@CRYPT_FIGHT3_PLAYER_COUNT))/2;
+ set $@CRYPT_FIGHT3_SUMMONS_COUNT, $@CRYPT_FIGHT3_SUMMONS_COUNT + ($@CRYPT_FIGHT3_SUMMONS_NUMBER/2) + ($@CRYPT_FIGHT3_SUMMONS_NUMBER/2);
+
+ areamonster "027-8.gat", 43, 39, 58, 60, "", 1124, ($@CRYPT_FIGHT3_SUMMONS_NUMBER/2), "General Terogan#Main::OnPetDeath";
+ areamonster "027-8.gat", 20, 39, 35, 60, "", 1075, ($@CRYPT_FIGHT3_SUMMONS_NUMBER/2), "General Terogan#Main::OnPetDeath";
+ goto L_Announce;
+
+L_BossSummons:
+ set $@CRYPT_FIGHT3_SUMMONS_NUMBER, (5 + (1 * $@CRYPT_FIGHT3_WAVE) + (2 * $@CRYPT_FIGHT3_PLAYER_COUNT))/2;
+ set $@CRYPT_FIGHT3_SUMMONS_COUNT, $@CRYPT_FIGHT3_SUMMONS_COUNT + $@CRYPT_FIGHT3_SUMMONS_NUMBER;
+ areamonster "027-8.gat", 43, 39, 58, 60, "", 1124, ($@CRYPT_FIGHT3_SUMMONS_NUMBER/2), "General Terogan#Main::OnPetDeath";
+ areamonster "027-8.gat", 20, 39, 35, 60, "", 1075, ($@CRYPT_FIGHT3_SUMMONS_NUMBER/2), "General Terogan#Main::OnPetDeath";
+ areamonster "027-8.gat", 43, 39, 58, 60, "", 1129, 1, "General Terogan#Main::OnPetDeath";
+ areamonster "027-8.gat", 20, 39, 35, 60, "", 1129, 1, "General Terogan#Main::OnPetDeath";
+ set $@CRYPT_FIGHT3_SUMMONS_COUNT, $@CRYPT_FIGHT3_SUMMONS_COUNT + 2;
+ goto L_Announce;
+
+L_Announce:
+ set $@msg$, $@CRYPT_FIGHT3_MESSAGES$[$@CRYPT_FIGHT3_WAVE];
+ if ($@msg$ == "")
+ goto L_Return_1;
+ mapannounce "027-8.gat", $@msg$, 0;
+ mapannounce "027-5.gat", $@msg$, 0;
+ set $@msg$, "";
+ goto L_Return_1;
+
+// Called on each player once every 5 seconds
+OnTick:
+ if (isdead())
+ end;
+ set $@CRYPT_FIGHT3_PLAYER_COUNT, $@CRYPT_FIGHT3_PLAYER_COUNT + 1;
+ end;
+
+OnPetDeath:
+ set $@CRYPT_FIGHT3_SUMMONS_COUNT, $@CRYPT_FIGHT3_SUMMONS_COUNT - 1;
+ end;
+
+L_CleanUpLosers:
+ set $@CRYPT_FIGHT3, 0;
+ set $@CRYPT_FIGHT3_PLAYER_COUNT, 0;
+ set $@CRYPT_FIGHT3_WAVE, 0;
+ set $@CRYPT_FIGHT3_SUMMONS_ROUND_TIMER, 0;
+ set $@CRYPT_FIGHT3_SUMMONS_COUNT, 0;
+ set $@CRYPT_FIGHT3_ROUND_PEN, 0;
+ set $@CRYPT_FIGHT3_SUMMONS_NUMBER, 0;
+ killmonster "027-8.gat", "General Terogan#Main::OnPetDeath";
+ stopnpctimer;
+ setnpctimer 0;
+ end;
+
+L_CleanUp:
+ areatimer "027-8.gat", 0, 0, 79, 84, 10, "General Terogan#Main::OnReward";
+ set $@CRYPT_FIGHT3, 0;
+ set $@CRYPT_FIGHT3_PLAYER_COUNT, 0;
+ set $@CRYPT_FIGHT3_WAVE, 0;
+ set $@CRYPT_FIGHT3_SUMMONS_ROUND_TIMER, 0;
+ set $@CRYPT_FIGHT3_SUMMONS_COUNT, 0;
+ set $@CRYPT_FIGHT3_ROUND_PEN, 0;
+ set $@CRYPT_FIGHT3_SUMMONS_NUMBER, 0;
+ killmonster "027-8.gat", "General Terogan#Main::OnPetDeath";
+ stopnpctimer;
+ setnpctimer 0;
+ end;
+
+OnReward:
+ if (isdead())
+ end;
+ set @bonus, (BaseLevel/2);
+ set DailyQuestBonus, DailyQuestBonus + @bonus;
+ message strcharinfo(0), "You feel a temporary rush of power and zest for action. " + @bonus + " daily bonus gained." ;
+ set BOSS_POINTS, BOSS_POINTS + 75;
+ message strcharinfo(0), "You gain 75 Boss Points giving you a total of " + BOSS_POINTS + ".";
+ goto L_End;
+
+L_End:
+ set @bonus, 0;
+ set @minlevel, 0;
+ set @TEROGAN_SOUL_REQ, 0;
+ set @TEROGAN_DISEASED_HEART_REQ, 0;
+ set @TEROGAN_UNDEAD_EYE_REQ, 0;
+ set @TEROGAN_UNDEAD_EAR_REQ, 0;
+ end;
+
+OnInit:
+ setarray $@CRYPT_FIGHT3_MESSAGES$,
+ "General Terogan : Haha, Thank you mortal. You have released me from my prison. To show my graditude you can die swiftly at my hands and become part of my undead army. MUhahahahaha! Minions, Dispose of these Adventurers!",
+ "General Terogan : Ha, Looks like your tougher then I thought.",
+ "General Terogan : and here I thought I wasn't going to enjoy this.",
+ "General Terogan : More of them are coming!",
+ "General Terogan : Minions! Kill them already!",
+ "General Terogan : *facepalm* I knew I should have hired better help.",
+ "General Terogan : Well at least you will make a good addition to my army.",
+ "General Terogan : To the Abyss with you already!",
+ "General Terogan : How about you try a different approach and kill them already!",
+ "General Terogan : Minions! Last chance or it's back to being part of an ossuary for you!",
+ "General Terogan : Looks like if you want something done right you have to do it yourself.",
+ "General Terogan : Charge!.";
+ end;
+}
+
+027-8.gat,27,41,0|script|General Terogan#Exit1|400,
+{
+ if ($@CRYPT_FIGHT3 != 0)
+ end;
+ warp "027-8", 38, 29;
+ end;
+}
+027-8.gat,51,41,0|script|General Terogan#Exit2|400,
+{
+ if ($@CRYPT_FIGHT3 != 0)
+ end;
+ warp "027-8", 38, 29;
+ end;
+}
diff --git a/world/map/npc/027-8/general_terogan_exitdoor.txt b/world/map/npc/027-8/general_terogan_exitdoor.txt
new file mode 100644
index 00000000..3be3bdb1
--- /dev/null
+++ b/world/map/npc/027-8/general_terogan_exitdoor.txt
@@ -0,0 +1,14 @@
+// Mini-Boss
+// General Krukun
+
+027-8.gat,38,61,0|script|#GeneralExit3|35,3,0
+{
+ if ($@CRYPT_FIGHT3 != 0)
+ goto L_Block;
+ warp "027-5.gat",70,26;
+ end;
+
+L_Block:
+ message strcharinfo(0), "A force field seems to be blocking you from exiting.";
+ end;
+}
diff --git a/world/map/npc/030-3/orum_homunculus.txt b/world/map/npc/030-3/orum_homunculus.txt
index 0aaaebf0..85e825a9 100644
--- a/world/map/npc/030-3/orum_homunculus.txt
+++ b/world/map/npc/030-3/orum_homunculus.txt
@@ -260,7 +260,8 @@ L_SantasList:
goto L_NotComplete;
mes "\"Take the altered list to Elijas.\"";
menu
- "I don't know, this sounds kind of naughty.",L_Foo;
+ "I don't know, this sounds kind of naughty.", L_Foo;
+
L_Foo:
mes "\"Do my bidding or I'll have no more words with you.\"";
goto L_Close;
diff --git a/world/map/npc/043-1/ryger.txt b/world/map/npc/043-1/ryger.txt
new file mode 100644
index 00000000..f3178538
--- /dev/null
+++ b/world/map/npc/043-1/ryger.txt
@@ -0,0 +1,11 @@
+// Sandstorm mine guard
+
+043-1.gat,88,60,0|script|Ryger|123,
+{
+ mes "[Ryger]";
+ mes "\"I'm watching this mine to make sure the monsters don't harm the miners.\"";
+ goto L_Close;
+
+L_Close:
+ close;
+}
diff --git a/world/map/npc/002-2/rogue.txt b/world/map/npc/068-1/stat_reset.txt
index d7b8c5af..fe54f379 100644
--- a/world/map/npc/002-2/rogue.txt
+++ b/world/map/npc/068-1/stat_reset.txt
@@ -1,6 +1,6 @@
//
-002-2.gat,25,28,0|script|Malivox|103,
+068-1.gat,79,94,0|script|Malivox|103,
{
// if (ResetA_charstate == 1) goto L_Multiple;
diff --git a/world/map/npc/068-1/tombstones.txt b/world/map/npc/068-1/tombstones.txt
new file mode 100644
index 00000000..424e0317
--- /dev/null
+++ b/world/map/npc/068-1/tombstones.txt
@@ -0,0 +1,36 @@
+// Tombstones in Noble memorial
+
+068-1.gat,91,48,0|script|Tombstone#1|400,{
+
+ mes "~ wushin ~";
+ mes "Tonori swallowed him whole.";
+ close;
+}
+
+068-1.gat,92,48,0|script|Tombstone#2|400,{
+
+ mes "~ Nard ~";
+ mes "Crushed by a loom.";
+ close;
+}
+
+068-1.gat,93,48,0|script|Tombstone#3|400,{
+
+ mes "~ tux9th ~";
+ mes "Eaten by bugs.";
+ close;
+}
+
+068-1.gat,94,48,0|script|Tombstone#4|400,{
+
+ mes "~ o11c ~";
+ mes "He asked for it. So they gave it to him.";
+ close;
+}
+
+068-1.gat,95,48,0|script|Tombstone#5|400,{
+
+ mes "~ " + strcharinfo(0) + " ~";
+ mes "The tombstone is blank and the grave freshly dug.";
+ close;
+}
diff --git a/world/map/npc/068-1/vendors.txt b/world/map/npc/068-1/vendors.txt
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/world/map/npc/068-1/vendors.txt
diff --git a/world/map/npc/021-2/bank.txt b/world/map/npc/068-2/bank.txt
index a1fbd3c1..70011c70 100644
--- a/world/map/npc/021-2/bank.txt
+++ b/world/map/npc/068-2/bank.txt
@@ -1,5 +1,5 @@
// Another banker
-021-2.gat,69,135,0|script|Hydusun|149,
+068-2.gat,29,83,0|script|Hydusun|149,
{
set @npcname$, "Hydusun";
callfunc "Banker";
diff --git a/world/map/npc/021-1/hetchel.txt b/world/map/npc/068-2/hetchel.txt
index ab44b747..87c3d5af 100644
--- a/world/map/npc/021-1/hetchel.txt
+++ b/world/map/npc/068-2/hetchel.txt
@@ -17,7 +17,7 @@
// @SHEET_ZENY : Money to pay per sheet: A sixth of 10000-2*500-6000
// @SheetCount Number of sheets to buy (variable).
-021-1.gat,120,39,0|script|Hetchel|376,
+068-2.gat,62,83,0|script|Hetchel|376,
{
set @SHEET_COCOONS_NR, 25;
set @SHEET_ZENY, 500;
diff --git a/world/map/npc/021-2/inya.txt b/world/map/npc/068-2/inya.txt
index c448681d..b4fdad2c 100644
--- a/world/map/npc/021-2/inya.txt
+++ b/world/map/npc/068-2/inya.txt
@@ -1,7 +1,7 @@
//Gemstones: Diamond (white) , Ruby (red), Emerald (green), Sapphire (blue), Topaz (yellow), Amethyst (purple)
//The power of the gems is important to future balance of these rings. Are they related to stats, tiers of power, schools of magic?
-021-2.gat,80,134,0|script|Inya|106,
+068-2.gat,29,56,0|script|Inya|106,
{
mes "[Inya]";
mes "\"I am Inya, a jeweler of fine rings. If you have a Simple Ring and a gem, I can make a nice ring for you for 1,000,000 gold pieces.\"";
diff --git a/world/map/npc/068-2/latoy.txt b/world/map/npc/068-2/latoy.txt
new file mode 100644
index 00000000..b1dca208
--- /dev/null
+++ b/world/map/npc/068-2/latoy.txt
@@ -0,0 +1,34 @@
+// A snobby store that won't sell to the player
+// takes part in quest given by 021-2/kylian.txt
+
+// Shop: DesertShirt :-1,SilkRobe :-5,SerfHat :-1,DesertHat :-4
+068-2.gat,92,83,0|shop|#LatoyShop|127,DesertShirt :-1,SilkRobe :-5,SerfHat :-1,DesertHat :-4
+
+068-2.gat,92,83,0|script|Latoy|106,
+{
+ set QUEST_NorthTulimshar, QUEST_NorthTulimshar | $@knowLatoyNT;
+ set @kylian, ((QUEST_NorthTulimshar & $@businessmanNT_MASK) >> $@businessmanNT_SHIFT);
+
+ mes "[Latoy]";
+ mes "\"Is there something I can help you with?\"";
+ if (@kylian != 7)
+ goto L_Shop;
+ next;
+ mes "Maybe this is the kind of shop Kylian is looking for?";
+ goto L_Shop;
+
+L_Shop:
+ mes "[Latoy]";
+ mes "\"How would you like to browse my wares?\"";
+ menu
+ "Yes.", L_LatoyShop,
+ "No.", L_Close;
+
+L_LatoyShop:
+ close2;
+ shop "#LatoyShop";
+
+L_Close:
+ set @kylian, 0;
+ close;
+}
diff --git a/world/map/npc/069-2/wizards.txt b/world/map/npc/069-2/wizards.txt
new file mode 100644
index 00000000..f1df5ef4
--- /dev/null
+++ b/world/map/npc/069-2/wizards.txt
@@ -0,0 +1,60 @@
+// Council of Ruling Wizards Room
+
+// manaseed
+069-2.gat,106,82,0|script|Desert Mana Seed#_M|166,
+{
+ end;
+}
+
+//
+069-2.gat,101,85,0|script|Wizard#1|355,
+{
+ end;
+}
+
+//
+069-2.gat,94,87,0|script|Wizard#2|356,
+{
+ end;
+}
+
+//
+069-2.gat,94,93,0|script|Wizard#3|357,
+{
+ end;
+}
+
+//
+069-2.gat,101,95,0|script|Wizard#4|358,
+{
+ end;
+}
+
+//
+069-2.gat,112,85,0|script|Wizard#5|359,
+{
+ end;
+}
+
+//
+069-2.gat,119,87,0|script|Wizard#6|360,
+{
+ end;
+}
+
+//
+069-2.gat,119,93,0|script|Wizard#7|361,
+{
+ end;
+}
+
+//
+069-2.gat,112,95,0|script|Wizard#8|362,
+{
+ end;
+}
+//
+069-2.gat,106,90,0|script|Arch-Wizard#9|354,
+{
+ end;
+}
diff --git a/world/map/npc/functions/debug.txt b/world/map/npc/functions/debug.txt
index e1c9e6c8..9918cbaf 100755
--- a/world/map/npc/functions/debug.txt
+++ b/world/map/npc/functions/debug.txt
@@ -965,3 +965,13 @@ OnInit:
disablenpc "Debug4";
end;
}
+
+027-2.gat,125,103,0|script|Debug5|154,
+{
+ callfunc "Debug";
+ end;
+OnInit:
+ if (!debug)
+ disablenpc "Debug5";
+ end;
+}
diff --git a/world/map/npc/functions/undead_debug.txt b/world/map/npc/functions/undead_debug.txt
new file mode 100644
index 00000000..4f01a78c
--- /dev/null
+++ b/world/map/npc/functions/undead_debug.txt
@@ -0,0 +1,106 @@
+// Debug Crypts Battle
+
+function|script|UndeadDebug|,
+{
+ goto L_Main;
+
+L_Main:
+ if (@undeaddebug == 3)
+ goto L_UndeadDebugThree;
+ if (@undeaddebug == 4)
+ goto L_UndeadDebugFour;
+ if (@undeaddebug == 5)
+ goto L_UndeadDebugFive;
+ goto L_Close;
+
+L_UndeadDebugThree:
+ mes "Reset your self to the various states.";
+ mes "Options Limited to Time and Place.";
+ menu
+ "Get Ritual Items.", L_KrukanItems,
+ "Nevermind.", L_Close;
+
+L_UndeadDebugFour:
+ mes "Reset your self to the various states.";
+ mes "Options Limited to Time and Place.";
+ menu
+ "Get Ritual Items.", L_RazhaItems,
+ "Nevermind.", L_Close;
+
+L_UndeadDebugFive:
+ mes "Reset your self to the various states.";
+ mes "Options Limited to Time and Place.";
+ menu
+ "Get Ritual Items.", L_TeroganItems,
+ "Nevermind.", L_Close;
+
+L_InventoryNoSpace:
+ mes "\"Drop some weight then come back.\"";
+ goto L_Close;
+
+L_KrukanItems:
+ if ((checkweight("Soul", 1) == 0)
+ || (checkweight("Skull", 5) == 0)
+ || (checkweight("DarkCrystal", 5) == 0)
+ || (checkweight("Bone", 5) == 0)
+ || (@inventorylist_count == 100))
+ goto L_InventoryNoSpace;
+ getitem "Soul", 1;
+ getitem "Skull", 5;
+ getitem "DarkCrystal", 5;
+ getitem "Bone", 5;
+ goto L_Main;
+
+L_RazhaItems:
+ if ((checkweight("Soul", 3) == 0)
+ || (checkweight("RottenRags", 5) == 0)
+ || (checkweight("UndeadEye", 5) == 0)
+ || (checkweight("UndeadEar", 5) == 0)
+ || (@inventorylist_count == 100))
+ goto L_InventoryNoSpace;
+ getitem "Soul", 3;
+ getitem "RottenRags", 5;
+ getitem "UndeadEye", 5;
+ getitem "UndeadEar", 5;
+ goto L_Main;
+
+L_TeroganItems:
+ if ((checkweight("Soul", 5) == 0)
+ || (checkweight("DiseasedHeart", 5) == 0)
+ || (checkweight("UndeadEye", 5) == 0)
+ || (checkweight("UndeadEar", 5) == 0)
+ || (@inventorylist_count == 100))
+ goto L_InventoryNoSpace;
+ getitem "Soul", 5;
+ getitem "DiseasedHeart", 5;
+ getitem "UndeadEye", 5;
+ getitem "UndeadEar", 5;
+ goto L_Main;
+
+L_Close:
+ close;
+}
+
+// Debug for Krukan
+027-3.gat,84,89,0|script|UndeadDebug3|155,
+{
+ set @undeaddebug, 3;
+ callfunc "UndeadDebug";
+ end;
+}
+
+// Debug for Razha
+027-4.gat,76,79,0|script|UndeadDebug4|155,
+{
+ set @undeaddebug, 4;
+ callfunc "UndeadDebug";
+ end;
+}
+
+// Debug for Terogan
+027-5.gat,72,26,0|script|UndeadDebug5|155,
+{
+ set @undeaddebug, 5;
+ callfunc "UndeadDebug";
+ end;
+}