summaryrefslogtreecommitdiff
path: root/world/map/npc/002-4
diff options
context:
space:
mode:
Diffstat (limited to 'world/map/npc/002-4')
-rw-r--r--world/map/npc/002-4/_import.txt9
-rw-r--r--world/map/npc/002-4/_mobs.txt56
-rw-r--r--world/map/npc/002-4/_warps.txt4
-rw-r--r--world/map/npc/002-4/chest.txt51
-rw-r--r--world/map/npc/002-4/mine_triggerone.txt67
-rw-r--r--world/map/npc/002-4/mine_triggerthree.txt67
-rw-r--r--world/map/npc/002-4/mine_triggertwo.txt70
-rw-r--r--world/map/npc/002-4/miners.txt78
-rw-r--r--world/map/npc/002-4/naem.txt152
-rw-r--r--world/map/npc/002-4/underground_palace_barrier.txt22
10 files changed, 408 insertions, 168 deletions
diff --git a/world/map/npc/002-4/_import.txt b/world/map/npc/002-4/_import.txt
index 4758cedf..09530371 100644
--- a/world/map/npc/002-4/_import.txt
+++ b/world/map/npc/002-4/_import.txt
@@ -1,7 +1,10 @@
-// Map 002-4: Deep Desert Mines
+// Map 002-4: Desert Mines
// This file is generated automatically. All manually changes will be removed when running the Converter.
map: 002-4.gat
npc: npc/002-4/_mobs.txt
npc: npc/002-4/_warps.txt
-npc: npc/002-4/chest.txt
-npc: npc/002-4/miners.txt
+npc: npc/002-4/mine_triggerone.txt
+npc: npc/002-4/mine_triggerthree.txt
+npc: npc/002-4/mine_triggertwo.txt
+npc: npc/002-4/naem.txt
+npc: npc/002-4/underground_palace_barrier.txt
diff --git a/world/map/npc/002-4/_mobs.txt b/world/map/npc/002-4/_mobs.txt
index 0f275e9f..0fd06e51 100644
--- a/world/map/npc/002-4/_mobs.txt
+++ b/world/map/npc/002-4/_mobs.txt
@@ -1,31 +1,24 @@
// This file is generated automatically. All manually changes will be removed when running the Converter.
-// Deep Desert Mines mobs
-
-002-4.gat,37,89,12,7|monster|IceGoblin|1058,3,100000,30000,Mob002-4::On1058
-002-4.gat,33,76,3,11|monster|CaveMaggot|1056,3,100000,30000,Mob002-4::On1056
-002-4.gat,40,68,7,5|monster|AngryScorpion|1057,3,100000,30000,Mob002-4::On1057
-002-4.gat,40,38,18,5|monster|Archant|1060,3,100000,30000,Mob002-4::On1060
-002-4.gat,62,71,3,7|monster|IceGoblin|1058,3,100000,30000,Mob002-4::On1058
-002-4.gat,56,97,2,5|monster|Archant|1060,1,100000,30000,Mob002-4::On1060
-002-4.gat,68,100,12,2|monster|YellowSlime|1007,4,100000,30000,Mob002-4::On1007
-002-4.gat,92,80,1,5|monster|Archant|1060,1,100000,30000,Mob002-4::On1060
-002-4.gat,89,94,1,5|monster|Archant|1060,1,100000,30000,Mob002-4::On1060
-002-4.gat,74,78,1,5|monster|Archant|1060,2,100000,30000,Mob002-4::On1060
-002-4.gat,94,71,2,6|monster|Archant|1060,1,100000,30000,Mob002-4::On1060
-002-4.gat,91,64,8,2|monster|YellowSlime|1007,1,100000,30000,Mob002-4::On1007
-002-4.gat,74,35,1,5|monster|Archant|1060,1,100000,30000,Mob002-4::On1060
-002-4.gat,84,33,1,5|monster|Archant|1060,1,100000,30000,Mob002-4::On1060
-002-4.gat,84,46,1,5|monster|Archant|1060,1,100000,30000,Mob002-4::On1060
-002-4.gat,99,38,1,5|monster|Archant|1060,1,100000,30000,Mob002-4::On1060
-002-4.gat,93,39,8,2|monster|YellowSlime|1007,2,100000,30000,Mob002-4::On1007
-
-
-002-4.gat,0,0,0|script|Mob002-4|-1,{
-On1007:
- set @mobID, 1007;
- callfunc "MobPoints";
- end;
-
+// Desert Mines mobs
+
+002-4.gat,39,37,15,11|monster|CaveMaggot|1056,5,100000,30000,Mob002-4::On1056
+002-4.gat,91,41,17,20|monster|AngryFireGoblin|1108,3,100000,30000,Mob002-4::On1108
+002-4.gat,71,35,25,17|monster|CaveMaggot|1056,4,100000,30000,Mob002-4::On1056
+002-4.gat,69,100,8,5|monster|AngryFireGoblin|1108,2,100000,30000,Mob002-4::On1108
+002-4.gat,68,57,26,24|monster|AngryScorpion|1057,5,100000,30000,Mob002-4::On1057
+002-4.gat,49,58,4,15|monster|AngryScorpion|1057,5,100000,30000,Mob002-4::On1057
+002-4.gat,38,76,15,22|monster|AngryScorpion|1057,4,100000,30000,Mob002-4::On1057
+002-4.gat,58,78,6,17|monster|CaveMaggot|1056,4,100000,30000,Mob002-4::On1056
+002-4.gat,89,68,11,32|monster|AngryScorpion|1057,4,100000,30000,Mob002-4::On1057
+002-4.gat,84,93,19,17|monster|CaveMaggot|1056,4,100000,30000,Mob002-4::On1056
+002-4.gat,72,77,21,14|monster|AngryFireGoblin|1108,3,100000,30000,Mob002-4::On1108
+002-4.gat,67,91,11,12|monster|AngryScorpion|1057,4,100000,30000,Mob002-4::On1057
+002-4.gat,58,95,6,13|monster|CaveMaggot|1056,4,100000,30000,Mob002-4::On1056
+002-4.gat,63,100,2,5|monster|AngryScorpion|1057,3,100000,30000,Mob002-4::On1057
+
+
+002-4.gat,0,0,0|script|Mob002-4|-1,
+{
On1056:
set @mobID, 1056;
callfunc "MobPoints";
@@ -36,13 +29,8 @@ On1057:
callfunc "MobPoints";
end;
-On1058:
- set @mobID, 1058;
- callfunc "MobPoints";
- end;
-
-On1060:
- set @mobID, 1060;
+On1108:
+ set @mobID, 1108;
callfunc "MobPoints";
end;
diff --git a/world/map/npc/002-4/_warps.txt b/world/map/npc/002-4/_warps.txt
index 4d4af370..072d2ba2 100644
--- a/world/map/npc/002-4/_warps.txt
+++ b/world/map/npc/002-4/_warps.txt
@@ -1,4 +1,4 @@
// This file is generated automatically. All manually changes will be removed when running the Converter.
-// Deep Desert Mines warps
+// Desert Mines warps
-002-4.gat,34,99|warp|To First Level|-1,-1,002-3.gat,68,99
+002-4.gat,37,29|warp|To Mining camp|-1,-1,002-3.gat,82,30
diff --git a/world/map/npc/002-4/chest.txt b/world/map/npc/002-4/chest.txt
deleted file mode 100644
index 61b59109..00000000
--- a/world/map/npc/002-4/chest.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-// Variables used: nibble 4 and 5 of QUEST_SouthTulimshar
-
-002-4.gat,93,37,0|script|Treasure|111,{
-
- // This NPC previously used the variable TMW_Quest
- callfunc "ClearVarTMW_Quest";
-
- set @state, ((QUEST_SouthTulimshar & BYTE_2_MASK) >> BYTE_2_SHIFT);
-
- if (@state >= 26) goto L_Finished;
-
- mes "There is a chest here.";
- mes "Do you want to try to open it?";
- next;
- menu
- "Yes.", L_Yes,
- "No.", L_Close;
-
-L_Yes:
- if (countitem("TreasureKey") < 3)
- goto L_Not_Enough;
- getinventorylist;
- if (@inventorylist_count == 100 && countitem("TreasureKey") > 3)
- goto L_TooMany;
- mes "You opened the chest and found a short bow!";
- delitem "TreasureKey", 3;
- getitem "ShortBow", 1;
- set @state, 26;
- callsub S_Update_Var;
- goto L_Close;
-
-L_Not_Enough:
- mes "It seems that you do not have the right key for this chest yet...";
- goto L_Close;
-
-L_Finished:
- mes "You have already opened this chest.";
- goto L_Close;
-
-L_TooMany:
- mes "You do not have enough room to loot this chest. Maybe you should try again later.";
- goto L_Close;
-
-L_Close:
- set @state, 0;
- close;
-
-S_Update_Var:
- set QUEST_SouthTulimshar, (QUEST_SouthTulimshar & ~(BYTE_2_MASK) | (@state << BYTE_2_SHIFT));
- return;
-}
diff --git a/world/map/npc/002-4/mine_triggerone.txt b/world/map/npc/002-4/mine_triggerone.txt
new file mode 100644
index 00000000..6d7e8e13
--- /dev/null
+++ b/world/map/npc/002-4/mine_triggerone.txt
@@ -0,0 +1,67 @@
+//Sandstorm mine trigger 1 Trigger 002-4 35,43 (127)
+// Variables used: nibble 4 and 5 of QUEST_SouthTulimshar
+
+002-4.gat,30,47,0|script|Button|400,0,0,
+{
+ // This NPC previously used the variable TMW_Quest
+ callfunc "ClearVarTMW_Quest";
+
+ set @state, ((QUEST_SouthTulimshar & BYTE_2_MASK) >> BYTE_2_SHIFT);
+
+ if (@state == 24) goto L_Trigger_Wrong_1;
+ if (@state == 23) goto L_Trigger_Wrong_1;
+ if (@state == 22) goto L_Trigger_1;
+
+ mes "There is a large button on the ground. A key hole appears on the button.";
+ goto L_Close;
+
+L_Trigger_Wrong_1:
+ mes "There is a large button on the ground. A key hole appears on the button.";
+ menu
+ "Put the key in, turn right.", L_Right_Wrong_1,
+ "Put the key in, turn left.", L_Left_Wrong_1,
+ "Do nothing.", L_Nothing_1;
+
+L_Right_Wrong_1:
+ set @state, 22;
+ callsub S_Update_Var;
+ mes "You turn the key right.";
+ goto L_Close;
+
+L_Left_Wrong_1:
+ set @state, 22;
+ callsub S_Update_Var;
+ mes "You turn the key left.";
+ goto L_Close;
+
+L_Trigger_1:
+ mes "There is a large button on the ground. A key hole appears on the button.";
+ menu
+ "Put the key in, turn right.", L_Right_1,
+ "Put the key in, turn left.", L_Left_1,
+ "Do nothing.", L_Nothing_1;
+
+L_Right_1:
+ set @state, 23;
+ callsub S_Update_Var;
+ mes "You turn the key right. A clicking sound echoes throughout the mine.";
+ goto L_Close;
+
+L_Left_1:
+ set @state, 22;
+ callsub S_Update_Var;
+ mes "You turn the key left.";
+ goto L_Close;
+
+L_Nothing_1:
+ mes "You leave the button alone.";
+ goto L_Close;
+
+L_Close:
+ set @state, 0;
+ close;
+
+S_Update_Var:
+ set QUEST_SouthTulimshar, (QUEST_SouthTulimshar & ~(BYTE_2_MASK) | (@state << BYTE_2_SHIFT));
+ return;
+}
diff --git a/world/map/npc/002-4/mine_triggerthree.txt b/world/map/npc/002-4/mine_triggerthree.txt
new file mode 100644
index 00000000..015928f1
--- /dev/null
+++ b/world/map/npc/002-4/mine_triggerthree.txt
@@ -0,0 +1,67 @@
+//Sandstorm mine trigger 3 Trigger 002-4 98,42 (127)
+// Variables used: nibble 4 and 5 of QUEST_SouthTulimshar
+
+002-4.gat,91,99,0|script|Button|400,0,0,
+{
+ // This NPC previously used the variable TMW_Quest
+ callfunc "ClearVarTMW_Quest";
+
+ set @state, ((QUEST_SouthTulimshar & BYTE_2_MASK) >> BYTE_2_SHIFT);
+
+ if (@state == 24) goto L_Trigger_Wrong_3;
+ if (@state == 23) goto L_Trigger_3;
+ if (@state == 22) goto L_Trigger_Wrong_3;
+
+ mes "There is a large button on the ground. A key hole appears on the button.";
+ goto L_Close;
+
+L_Trigger_Wrong_3:
+ mes "There is a large button on the ground. A key hole appears on the button.";
+ menu
+ "Put the key in, turn right.", L_Right_Wrong_3,
+ "Put the key in, turn left.", L_Left_Wrong_3,
+ "Do nothing.", L_Nothing_3;
+
+L_Right_Wrong_3:
+ set @state, 22;
+ callsub S_Update_Var;
+ mes "You turn the key right.";
+ goto L_Close;
+
+L_Left_Wrong_3:
+ set @state, 22;
+ callsub S_Update_Var;
+ mes "You turn the key left.";
+ goto L_Close;
+
+L_Trigger_3:
+ mes "There is a large button on the ground. A key hole appears on the button.";
+ menu
+ "Put the key in, turn right.", L_Right_3,
+ "Put the key in, turn left.", L_Left_3,
+ "Do nothing.", L_Nothing_3;
+
+L_Right_3:
+ set @state, 22;
+ callsub S_Update_Var;
+ mes "You turn the key right.";
+ goto L_Close;
+
+L_Left_3:
+ set @state, 24;
+ callsub S_Update_Var;
+ mes "You turn the key left. A clicking sound echoes throughout the mine.";
+ goto L_Close;
+
+L_Nothing_3:
+ mes "You leave the button alone.";
+ goto L_Close;
+
+L_Close:
+ set @state, 0;
+ close;
+
+S_Update_Var:
+ set QUEST_SouthTulimshar, (QUEST_SouthTulimshar & ~(BYTE_2_MASK) | (@state << BYTE_2_SHIFT));
+ return;
+}
diff --git a/world/map/npc/002-4/mine_triggertwo.txt b/world/map/npc/002-4/mine_triggertwo.txt
new file mode 100644
index 00000000..4af6ad7e
--- /dev/null
+++ b/world/map/npc/002-4/mine_triggertwo.txt
@@ -0,0 +1,70 @@
+//Sandstorm mine trigger
+// Variables used:
+// - nibble 4 and 5 of QUEST_SouthTulimshar
+// - in FLAGS, FLAG_OPENED_UNDERGROUND
+
+002-4.gat,100,37,0|script|Button|400,0,0,
+{
+ // This NPC previously used the variable TMW_Quest
+ callfunc "ClearVarTMW_Quest";
+
+ set @state, ((QUEST_SouthTulimshar & BYTE_2_MASK) >> BYTE_2_SHIFT);
+
+ if (@state == 24) goto L_Trigger_2;
+ if (@state == 23) goto L_Trigger_Wrong_2;
+ if (@state == 22) goto L_Trigger_Wrong_2;
+
+ mes "There is a large button on the ground. A key hole appears on the button.";
+ goto L_Close;
+
+L_Trigger_Wrong_2:
+ mes "There is a large button on the ground. A key hole appears on the button.";
+ menu
+ "Put the key in, turn right.", L_Right_Wrong_2,
+ "Put the key in, turn left.", L_Left_Wrong_2,
+ "Do nothing.", L_Nothing_2;
+
+L_Right_Wrong_2:
+ set @state, 22;
+ callsub S_Update_Var;
+ mes "You turn the key right.";
+ goto L_Close;
+
+L_Left_Wrong_2:
+ set @state, 22;
+ callsub S_Update_Var;
+ mes "You turn the key left.";
+ goto L_Close;
+
+L_Trigger_2:
+ mes "There is a large button on the ground. A key hole appears on the button.";
+ menu
+ "Put the key in, turn right.", L_Right_2,
+ "Put the key in, turn left.", L_Left_2,
+ "Do nothing.", L_Nothing_2;
+
+L_Right_2:
+ set @state, 22;
+ callsub S_Update_Var;
+ mes "You turn the key right.";
+ goto L_Close;
+
+L_Left_2:
+ set @state, 25;
+ callsub S_Update_Var;
+ set FLAGS, FLAGS | FLAG_OPENED_UNDERGROUND;
+ mes "You turn the key left. A clicking sound echoes throughout the mine, followed by a loud thump.";
+ goto L_Close;
+
+L_Nothing_2:
+ mes "You leave the button alone.";
+ goto L_Close;
+
+L_Close:
+ set @state, 0;
+ close;
+
+S_Update_Var:
+ set QUEST_SouthTulimshar, (QUEST_SouthTulimshar & ~(BYTE_2_MASK) | (@state << BYTE_2_SHIFT));
+ return;
+}
diff --git a/world/map/npc/002-4/miners.txt b/world/map/npc/002-4/miners.txt
deleted file mode 100644
index 3fa17e35..00000000
--- a/world/map/npc/002-4/miners.txt
+++ /dev/null
@@ -1,78 +0,0 @@
-// Variables used: nibble 4 and 5 of QUEST_SouthTulimshar
-
-002-4.gat,32,94,6|script|Sema|340,{
-
- // This NPC previously used the variable TMW_Quest
- callfunc "ClearVarTMW_Quest";
-
- set @state, ((QUEST_SouthTulimshar & BYTE_2_MASK) >> BYTE_2_SHIFT);
-
- if (@state >= 28) goto L_Sema_Done;
- if (@state == 27) goto L_Sema_Happy;
- if (@state == 26) goto L_Sema_GCM;
-
- mes "[Sema the Miner]";
- mes "\"Hello adventurer. I do not know exactly where, but somewhere in this cave there is a chest. And wouldn't you know it! The archants have eaten all the spare keys for the chest. Go and do what you must do.\"";
- goto L_Close;
-
-L_Sema_GCM:
- mes "[Sema the Miner]";
- mes "\"I saw a giant cave maggot eat one of the other miners and it might eat me! Can you kill it?\"";
- menu
- "Yes.", L_Sema_Yes,
- "No.", L_Sema_No;
-
-L_Sema_No:
- mes "[Sema the Miner]";
- mes "\"Ahh! I am very scared now!\"";
- goto L_Close;
-
-L_Sema_Yes:
- set @state, 27;
- callsub S_Update_Var;
- monster "002-4.gat", 70, 90, "", 1059, 1;
- mes "[Sema the Miner]";
- mes "\"Good luck. To prove you killed it, please bring the Iten it swallowed when it ate the miner. Be careful, there could be more than one.\"";
- goto L_Close;
-
-L_Sema_Happy:
- if (countitem("Iten") < 1)
- goto L_Sema_Not_Happy;
- getinventorylist;
- if (@inventorylist_count - (countitem("Iten") == 1) > 99)
- goto L_Sema_TooMany;
- delitem "Iten", 1;
- getitem "DesertShirt", 1;
- set @state, 28;
- callsub S_Update_Var;
- set BOSS_POINTS, BOSS_POINTS + 10;
- message strcharinfo(0), "You gain 10 Boss Points giving you a total of " + BOSS_POINTS + ".";
- mes "[Sema the Miner]";
- mes "\"You killed it! What a relief! I wish I had more to give, but please accept this Desert Shirt as reward.\"";
- goto L_Close;
-
-L_Sema_TooMany:
- mes "[Sema the Miner]";
- mes "\"You have too many items for me to give you a reward. Please drop or sell something so I can give it to you. Oh and yes, you can also store items at the nearest bank.\"";
- goto L_Close;
-
-L_Sema_Not_Happy:
- set @state, 26;
- callsub S_Update_Var;
- itemheal -Hp, 0;
- mes "A stone falls on your head.";
- goto L_Close;
-
-L_Sema_Done:
- mes "[Sema the Miner]";
- mes "\"You made this cave safer, you are kind beyond belief. Others may need you. Happy adventuring.\"";
- goto L_Close;
-
-L_Close:
- set @state, 0;
- close;
-
-S_Update_Var:
- set QUEST_SouthTulimshar, (QUEST_SouthTulimshar & ~(BYTE_2_MASK) | (@state << BYTE_2_SHIFT));
- return;
-}
diff --git a/world/map/npc/002-4/naem.txt b/world/map/npc/002-4/naem.txt
new file mode 100644
index 00000000..04818ebf
--- /dev/null
+++ b/world/map/npc/002-4/naem.txt
@@ -0,0 +1,152 @@
+// Variables used:
+// - nibble 4 and 5 of QUEST_SouthTulimshar
+// - in FLAGS, bits FLAG_GOT_NAEM_GLOVES and FLAG_OPENED_UNDERGROUND
+
+002-4.gat,91,96,6|script|Naem|109,
+{
+ // This NPC previously used the variable TMW_Quest
+ callfunc "ClearVarTMW_Quest";
+
+ set @state, ((QUEST_SouthTulimshar & BYTE_2_MASK) >> BYTE_2_SHIFT);
+
+ if (FLAGS & FLAG_GOT_NAEM_GLOVES) goto L_Naem_Complete;
+ if (FLAGS & FLAG_OPENED_UNDERGROUND) goto L_Naem_Gloves;
+ if (@state == 22) goto L_Naem_Code;
+ if (@state == 21) goto L_Naem_Lt;
+ if (@state == 20) goto L_Naem_Memory;
+ if ((@state > 17) && (@state < 19))
+ goto L_Naem_Great;
+ if (@state == 17) goto L_Naem_Waits_3;
+ if (@state == 16) goto L_Naem_Help_3;
+ if (@state == 15) goto L_Naem_Waits_2;
+ if (@state == 14) goto L_Naem_Help_2;
+ if (@state == 13) goto L_Naem_Waits_1;
+ if (@state == 12) goto L_Naem_Help_1;
+ if (@state == 10) goto L_Naem_Cool;
+ if (@state == 9) goto L_Naem_Okay;
+
+ mes "[Naem]";
+ mes "\"I'm just mining away here. Lots of work to do.\"";
+ goto L_Close;
+
+L_Naem_Okay:
+ set @state, 10;
+ callsub S_Update_Var;
+ mes "[Naem]";
+ mes "\"Oh, hello there. Nickos wanted you to check on me? Yeah, you can tell him I'm okay.\"";
+ goto L_Close;
+
+L_Naem_Cool:
+ mes "[Naem]";
+ mes "\"Yeah, I'm cool. Just mining away here.\"";
+ goto L_Close;
+
+L_Naem_Help_1:
+ set @state, 13;
+ callsub S_Update_Var;
+ mes "[Naem]";
+ mes "\"Oh, you are here to help move my bags? Cool, I've got a few ready to go. Go ahead and take this one!\"";
+ next;
+ mes "Naem hands you a bag of ore.";
+ next;
+ mes "[Naem]";
+ mes "\"After you deliver that one to Nathan, come on back, I've got a couple more ready to go.\"";
+ goto L_Close;
+
+L_Naem_Waits_1:
+ mes "[Naem]";
+ mes "\"After you deliver that bag of ore to Nathan, come on back, I've got a couple more ready to go.\"";
+ goto L_Close;
+
+L_Naem_Help_2:
+ set @state, 15;
+ callsub S_Update_Var;
+ mes "Naem gives you a bag of ore.";
+ next;
+ mes "[Naem]";
+ mes "\"Just one more after this one and we'll be all caught up!\"";
+ goto L_Close;
+
+L_Naem_Waits_2:
+ mes "[Naem]";
+ mes "\"Just one more bag of ore after the one you got and we'll be all caught up!\"";
+ goto L_Close;
+
+L_Naem_Help_3:
+ set @state, 17;
+ callsub S_Update_Var;
+ mes "[Naem]";
+ mes "Hands a bag of ore to you.";
+ next;
+ mes "\"Last one!\"";
+ goto L_Close;
+
+L_Naem_Waits_3:
+ mes "[Naem]";
+ mes "\"You got my last sack already. Just give it to Nathan and we'll have caught up.\"";
+ goto L_Close;
+
+L_Naem_Great:
+ mes "[Naem]";
+ mes "\"Hi ho! It's off to work I go! I work every day for meager pay, a miner's life for me...\"";
+ goto L_Close;
+
+L_Naem_Memory:
+ mes "You see Naem grimacing in pain as you approach.";
+ next;
+ mes "[Naem]";
+ mes "\"Oh, my head! Some rocks fell on me and bonked me pretty good. I'm still a little sore.\"";
+ menu
+ "Don't you have a key so I can go to the underground palace?", L_Naem_Palace_No,
+ "You should be more careful.", L_Naem_Duh;
+
+L_Naem_Duh:
+ mes "[Naem]";
+ mes "\"I guess I should...\"";
+ goto L_Close;
+
+L_Naem_Palace_No:
+ set @state, 21;
+ callsub S_Update_Var;
+ mes "[Naem]";
+ mes "\"Oh no! I lost the key! Don't worry though, talk to Lieutenant Dausen about getting the spare key.\"";
+ goto L_Close;
+
+L_Naem_Lt:
+ mes "[Naem]";
+ mes "\"I hurt my head pretty bad. I also lost my key. If you want to get into the underground palace, you'll have to talk to Lieutenant Dausen about getting the spare.\"";
+ goto L_Close;
+
+L_Naem_Code:
+ mes "[Naem]";
+ mes "\"Oh, you got the key. That is good! But my head still hurts... All I remember about the code is you have to put the key into the key hole buttons around the mine in a certain order and turn them in a certain order and it will unlock the underground palace. Sorry, that's all I have for you. Good luck!\"";
+ goto L_Close;
+
+L_Naem_Gloves:
+ getinventorylist;
+ if (@inventorylist_count == 100)
+ goto L_Nathan_TooMany;
+ set FLAGS, FLAGS | FLAG_GOT_NAEM_GLOVES;
+ getitem "MinerGloves", 1;
+ mes "[Naem]";
+ 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:
+ mes "[Naem]";
+ mes "\"You have too many items for me to give you a reward.\"";
+ goto L_Close;
+
+L_Naem_Complete:
+ mes "[Naem]";
+ mes "\"Yo-ho-ho, a miner's life for me!\"";
+ goto L_Close;
+
+L_Close:
+ set @state, 0;
+ close;
+
+S_Update_Var:
+ set QUEST_SouthTulimshar, (QUEST_SouthTulimshar & ~(BYTE_2_MASK) | (@state << BYTE_2_SHIFT));
+ return;
+}
diff --git a/world/map/npc/002-4/underground_palace_barrier.txt b/world/map/npc/002-4/underground_palace_barrier.txt
new file mode 100644
index 00000000..240dbbae
--- /dev/null
+++ b/world/map/npc/002-4/underground_palace_barrier.txt
@@ -0,0 +1,22 @@
+//underground palace barrier
+
+002-4.gat,68,98,0|script|#UGP_Barrier|45,0,0,
+{
+ // This NPC previously used the variable TMW_Quest
+ callfunc "ClearVarTMW_Quest";
+
+ set @state, ((QUEST_SouthTulimshar & BYTE_2_MASK) >> BYTE_2_SHIFT);
+
+ if (@state >= 25) goto L_Underground_Palace_Barrier_Open;
+
+ message strcharinfo(0), "Some force seems to block your entrance.";
+ goto L_End;
+
+L_Underground_Palace_Barrier_Open:
+ warp "002-5.gat",37,96;
+ goto L_End;
+
+L_End:
+ set @state, 0;
+ end;
+}