summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJesusaves <jesusalva@themanaworld.org>2020-04-20 21:52:32 -0300
committerGitHub <noreply@github.com>2020-04-21 00:52:32 +0000
commitbb7653be55fdc48f98f3def7497810eb31405c3b (patch)
tree1116d9fa27d641c8ce0590d28bda2002ffcbb6e9
parent2269b95101eb366b86d928813d5467bd5710c1ce (diff)
downloadclassic-serverdata-bb7653be55fdc48f98f3def7497810eb31405c3b.tar.gz
classic-serverdata-bb7653be55fdc48f98f3def7497810eb31405c3b.tar.bz2
classic-serverdata-bb7653be55fdc48f98f3def7497810eb31405c3b.tar.xz
classic-serverdata-bb7653be55fdc48f98f3def7497810eb31405c3b.zip
Doomsday Act 4 (#554)
Restrict the Smoking Pipe to level 18 (also an easter egg) Prepare some Act 5 maps. Triggers for Doomsday Act 4 Add the Golem, one of the meaniest monsters I ever added. Special effect sequencing for Act 4. Also add a 10k experience reward to whoever is on the map by time the boss is slain. Good luck, brave players! (Recommended 3 repeats, Advsised max 6 repeats, script gives up after 20 repeats)
-rw-r--r--world/map/data/099-1.wlkbin0 -> 22504 bytes
-rw-r--r--world/map/data/099-2.wlkbin0 -> 22504 bytes
-rw-r--r--world/map/data/099-3.wlkbin0 -> 19504 bytes
-rw-r--r--world/map/data/099-4.wlkbin0 -> 10004 bytes
-rw-r--r--world/map/data/resnametable.txt4
-rw-r--r--world/map/db/item_db_generic.txt15
-rw-r--r--world/map/db/item_db_head.txt2
-rw-r--r--world/map/db/mob_db_over_100.txt4
-rw-r--r--world/map/db/mob_skill_db.txt14
-rw-r--r--world/map/npc/099-1/_import.txt6
-rw-r--r--world/map/npc/099-1/_mobs.txt3
-rw-r--r--world/map/npc/099-1/_nodes.txt4
-rw-r--r--world/map/npc/099-1/_warps.txt37
-rw-r--r--world/map/npc/099-2/_import.txt6
-rw-r--r--world/map/npc/099-2/_mobs.txt3
-rw-r--r--world/map/npc/099-2/_nodes.txt4
-rw-r--r--world/map/npc/099-2/_warps.txt23
-rw-r--r--world/map/npc/099-3/_import.txt6
-rw-r--r--world/map/npc/099-3/_mobs.txt3
-rw-r--r--world/map/npc/099-3/_nodes.txt4
-rw-r--r--world/map/npc/099-3/_warps.txt17
-rw-r--r--world/map/npc/099-4/_import.txt6
-rw-r--r--world/map/npc/099-4/_mobs.txt3
-rw-r--r--world/map/npc/099-4/_nodes.txt4
-rw-r--r--world/map/npc/099-4/_warps.txt3
-rw-r--r--world/map/npc/_import.txt4
-rw-r--r--world/map/npc/functions/doomsday.txt194
-rw-r--r--world/map/npc/items/drugs.txt17
-rw-r--r--world/map/npc/scripts.conf1
29 files changed, 329 insertions, 58 deletions
diff --git a/world/map/data/099-1.wlk b/world/map/data/099-1.wlk
new file mode 100644
index 00000000..09a2a4bd
--- /dev/null
+++ b/world/map/data/099-1.wlk
Binary files differ
diff --git a/world/map/data/099-2.wlk b/world/map/data/099-2.wlk
new file mode 100644
index 00000000..beb2d549
--- /dev/null
+++ b/world/map/data/099-2.wlk
Binary files differ
diff --git a/world/map/data/099-3.wlk b/world/map/data/099-3.wlk
new file mode 100644
index 00000000..e9acd9ea
--- /dev/null
+++ b/world/map/data/099-3.wlk
Binary files differ
diff --git a/world/map/data/099-4.wlk b/world/map/data/099-4.wlk
new file mode 100644
index 00000000..01fe6f91
--- /dev/null
+++ b/world/map/data/099-4.wlk
Binary files differ
diff --git a/world/map/data/resnametable.txt b/world/map/data/resnametable.txt
index b09a82d7..78b6ccda 100644
--- a/world/map/data/resnametable.txt
+++ b/world/map/data/resnametable.txt
@@ -118,4 +118,8 @@
069-2#069-2.wlk#
070-1#070-1.wlk#
070-3#070-3.wlk#
+099-1#099-1.wlk#
+099-2#099-2.wlk#
+099-3#099-3.wlk#
+099-4#099-4.wlk#
botcheck#botcheck.wlk#
diff --git a/world/map/db/item_db_generic.txt b/world/map/db/item_db_generic.txt
index 12a951a8..42383723 100644
--- a/world/map/db/item_db_generic.txt
+++ b/world/map/db/item_db_generic.txt
@@ -240,11 +240,12 @@
5215, FreeRangeMoss, 3, 830, 20, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
5216, JadeEgg, 3, 938, 250, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
5217, RawAir, 3, 1999, 10, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-5218, RedTicket, 3, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-5219, YellowTicket, 3, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+5218, RedTicket, 3, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+5219, YellowTicket, 3, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
5220, GoldTicket, 3, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-5221, GreenTicket, 3, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-5222, AquaTicket, 3, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-5223, BlueTicket, 3, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-5224, PurpleTicket, 3, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-5225, PinkTicket, 3, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+5221, GreenTicket, 3, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+5222, AquaTicket, 3, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+5223, BlueTicket, 3, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+5224, PurpleTicket, 3, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+5225, PinkTicket, 3, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+5251, WumpusEgg, 3, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
diff --git a/world/map/db/item_db_head.txt b/world/map/db/item_db_head.txt
index 534c62ee..d9cea7c4 100644
--- a/world/map/db/item_db_head.txt
+++ b/world/map/db/item_db_head.txt
@@ -188,7 +188,7 @@
5129, UnderworldMask, 5, 50000, 10000, 100, 0, 5, 0, 0, 0, 2, 256, 0, 0, 0, {}, {bonus bAtkRange, 3; bonus bInt, -Int; bonus bAgi, 2; bonus bDex, 2;}
5130, Phylactery, 5, 50000, 10000, 20, 0, 1, 0, 5, 0, 2, 256, 0, 0, 0, {}, {bonus bAspdRate, 50; bonus bDex, -(Dex/2);}
5200, PointyWitchHat, 5, 1000, 500, 50, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-5201, Pipe, 5, 5000, 2500, 20, 0, 2, 0, 0, 0, 2, 256, 0, 0, 0, {}, {bonus bDex, 1; bonus bLuk, 1; bonus bCritical, 10;}
+5201, Pipe, 5, 5000, 2500, 20, 0, 2, 0, 0, 0, 2, 256, 0, 18, 0, {}, {bonus bDex, 1; bonus bLuk, 1; bonus bCritical, 10;callfunc "DrugItem";}
5202, PilotHat, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
5203, MoonshroomHat, 5, 3000, 1500, 30, 0, 15, 0, 5, 0, 2, 256, 0, 0, 0, {}, {}
5204, CarbonGasMask, 5, 2500, 1250, 50, 0, 10, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
diff --git a/world/map/db/mob_db_over_100.txt b/world/map/db/mob_db_over_100.txt
index fdde9a60..4d786a66 100644
--- a/world/map/db/mob_db_over_100.txt
+++ b/world/map/db/mob_db_over_100.txt
@@ -45,9 +45,9 @@
1139, Virus, Virus, 170, 5000, 0, 0, 721, 6, 45, 75, 37, 12, 30, 30, 20, 20, 25, 60, 1, 1, 1, 3, 25, 175, 600, 1872, 672, 480, 787, 500, 743, 1100, 5236, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 20
1140, Tengu, Tengu, 180, 24000, 280, 45000, 5000, 2, 180, 224, 67, 9, 31, 22, 90, 97, 255, 95, 31, 30, 1, 0, 69, 181, 310, 1200, 672, 50, 649, 2, 4024, 300, 862, 800, 4005, 25, 1227, 15, 5237, 20, 758, 3, 825, 6000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
1141, Sasquatch, Sasquatch, 180, 24000, 280, 45000, 5000, 1, 420, 444, 12, 27, 31, 22, 90, 97, 255, 95, 31, 30, 1, 0, 69, 181, 310, 1200, 672, 50, 653, 2, 763, 500, 862, 800, 640, 1000, 1227, 15, 5237, 20, 758, 3, 825, 6000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-1142, Kage, ZaxDeKagen, 200, 29999, 280, 999999, 99999, 9, 90, 124, 69, 100, 199, 2, 199, 197, 255, 95, 31, 30, 1, 0, 69, 181, 210, 672, 672, 50, 760, 10000, 666, 10000, 1244, 10000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+1142, Kage, ZaxDeKagen, 200, 29999, 280, 999999, 99999, 9, 90, 124, 74, 100, 199, 2, 199, 197, 255, 95, 31, 30, 1, 0, 69, 181, 210, 672, 672, 50, 760, 10000, 666, 10000, 1244, 10000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
1143, ManaSlayer, ManaSlayer, 180, 24000, 280, 42000, 5000, 2, 260, 274, 22, 67, 31, 22, 90, 127, 255, 95, 31, 30, 1, 0, 69, 181, 210, 1200, 672, 50, 650, 2, 828, 2400, 1227, 15, 4007, 35, 4029, 10, 5237, 20, 758, 3, 825, 6000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
1144, Dragon, GreatDragon, 250, 29999, 280, 1, 1, 3, 60, 90, 67, 67, 199, 2, 199, 197, 255, 95, 31, 30, 1, 0, 69, 181, 210, 1200, 672, 50, 759, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-1145, KageSlayer, KageSlayer, 180, 8000, 280, 38000, 5000, 6, 140, 174, 74, 0, 31, 22, 90, 127, 255, 95, 31, 30, 1, 0, 69, 181, 210, 1000, 672, 50, 584, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+1145, KageGolem, KageGolem, 180, 29999, 280, 150000, 15000, 6, 140, 174, 72, 55, 31, 22, 90, 127, 255, 95, 31, 30, 1, 0, 69, 181, 410, 1000, 672, 50, 5251, 10000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
1146, Flashmob, Flashmob, 181, 27000, 280, 72000, 5000, 1, 40, 60, 57, 57, 31, 22, 90, 127, 255, 95, 31, 30, 1, 0, 69, 181, 160, 600, 672, 50, 649, 5, 650, 5, 653, 5, 1227, 35, 509, 10000, 1257, 2, 759, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
1147, Koyntety, Koyntety, 181, 27000, 280, 72000, 5000, 4, 220, 240, 52, 52, 31, 22, 90, 127, 255, 95, 31, 30, 1, 0, 69, 181, 240, 1400, 672, 50, 649, 5, 650, 5, 653, 5, 1227, 35, 509, 10000, 1257, 2, 759, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
diff --git a/world/map/db/mob_skill_db.txt b/world/map/db/mob_skill_db.txt
index 129c814d..39c88b53 100644
--- a/world/map/db/mob_skill_db.txt
+++ b/world/map/db/mob_skill_db.txt
@@ -91,8 +91,14 @@
// Zax De'Kagen skills
// I believe I'll make his fight script controlled. Or not.
-1142,Kage@NPC_SUMMONSLAVE_skelX2,any,198,2,10000,1000,30000,no,self,slavelt,12,1043,0,0,0,0,
-1142,Kage@NPC_SUMMONSLAVE_tenguX1,any,198,1,10000,1000,150000,no,self,slavelt,32,1140,0,0,0,0,
-1142,Kage@NPC_SUMMONSLAVE_sasquatchX1,any,198,1,10000,1000,150000,no,self,slavelt,32,1141,0,0,0,0,
-1142,Kage@NPC_SUMMONSLAVE_slayerX1,any,198,1,10000,1000,120000,no,self,slavelt,32,1143,0,0,0,0,
+1142,Kage@NPC_SUMMONSLAVE_skelX2,any,198,2,10000,1000,30000,no,self,slavelt,32,1043,0,0,0,0,
+1142,Kage@NPC_SUMMONSLAVE_golemX1,any,198,1,10000,1000,120000,no,self,slavelt,12,1145,0,0,0,0,
+1142,Kage@NPC_SUMMONSLAVE_flashmobX1,any,198,1,10000,1000,120000,no,self,slavelt,12,1146,0,0,0,0,
+1142,Kage@NPC_SUMMONSLAVE_koyntetyX1,any,198,1,10000,1000,120000,no,self,slavelt,12,1147,0,0,0,0,
+
+// Golem skills
+// Extremely dangerous.
+1145,Golem@NPC_SUMMONSLAVE_tenguX2,any,198,2,9000,1000,155000,no,self,slavelt,6,1140,0,0,0,0,
+1145,Golem@NPC_SUMMONSLAVE_sasquatchX2,any,198,2,9000,1000,155000,no,self,slavelt,6,1141,0,0,0,0,
+1145,Golem@NPC_SUMMONSLAVE_slayerX2,any,198,2,9000,1000,155000,no,self,slavelt,6,1143,0,0,0,0,
diff --git a/world/map/npc/099-1/_import.txt b/world/map/npc/099-1/_import.txt
new file mode 100644
index 00000000..88869c9f
--- /dev/null
+++ b/world/map/npc/099-1/_import.txt
@@ -0,0 +1,6 @@
+// Map 099-1: Nu'Ram-Main
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+map: 099-1
+npc: npc/099-1/_mobs.txt
+npc: npc/099-1/_nodes.txt
+npc: npc/099-1/_warps.txt
diff --git a/world/map/npc/099-1/_mobs.txt b/world/map/npc/099-1/_mobs.txt
new file mode 100644
index 00000000..2bb51b59
--- /dev/null
+++ b/world/map/npc/099-1/_mobs.txt
@@ -0,0 +1,3 @@
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+// Nu'Ram-Main mobs
+
diff --git a/world/map/npc/099-1/_nodes.txt b/world/map/npc/099-1/_nodes.txt
new file mode 100644
index 00000000..0f3ed45e
--- /dev/null
+++ b/world/map/npc/099-1/_nodes.txt
@@ -0,0 +1,4 @@
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+// Nu'Ram-Main nodes
+
+// (no nodes)
diff --git a/world/map/npc/099-1/_warps.txt b/world/map/npc/099-1/_warps.txt
new file mode 100644
index 00000000..cc8f6e07
--- /dev/null
+++ b/world/map/npc/099-1/_warps.txt
@@ -0,0 +1,37 @@
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+// Nu'Ram-Main warps
+
+099-1,29,16|warp|-1,-1,099-2,25,22
+099-1,77,16|warp|-1,-1,099-2,59,21
+099-1,105,8|warp|-1,-1,099-2,90,21
+099-1,91,136|warp|-1,-1,099-2,121,21
+099-1,20,115|warp|-1,-1,099-2,25,49
+099-1,97,85|warp|-1,-1,099-2,59,49
+099-1,119,114|warp|-1,-1,099-3,72,26
+099-1,112,126|warp|-1,-1,099-2,91,49
+099-1,64,114|warp|-1,-1,099-2,121,48
+099-1,64,72|warp|-1,-1,099-2,25,75
+099-1,42,51|warp|-1,-1,099-2,59,75
+099-1,92,44|warp|-1,-1,099-2,91,75
+099-1,15,77|warp|-1,-1,099-2,121,75
+099-1,49,129|warp|-1,-1,099-2,25,101
+099-1,113,61|warp|-1,-1,099-2,60,101
+099-1,131,78|warp|-1,-1,099-2,91,101
+099-1,72,58|warp|-1,-1,099-2,121,101
+099-1,47,92|warp|-1,-1,099-2,26,132
+099-1,102,24|warp|-1,-1,099-2,60,132
+099-1,120,44|warp|-1,-1,099-2,92,132
+099-1,97,105|warp|-1,-1,099-2,121,132
+099-1,48,16|warp|-1,-1,099-3,29,63
+099-1,76,25|warp|-1,-1,099-3,35,63
+099-1,128,17|warp|-1,-1,099-3,41,63
+099-1,110,44|warp|-1,-1,099-3,47,63
+099-1,120,78|warp|-1,-1,099-3,53,63
+099-1,113,97|warp|-1,-1,099-3,59,63
+099-1,125,97|warp|-1,-1,099-3,79,63
+099-1,60,92|warp|-1,-1,099-3,85,63
+099-1,20,54|warp|-1,-1,099-3,91,63
+099-1,14,54|warp|-1,-1,099-3,97,63
+099-1,15,67|warp|-1,-1,099-3,103,63
+099-1,19,93|warp|-1,-1,099-3,109,63
+099-1,57,51|warp|-1,-1,099-3,115,63
diff --git a/world/map/npc/099-2/_import.txt b/world/map/npc/099-2/_import.txt
new file mode 100644
index 00000000..16a3081c
--- /dev/null
+++ b/world/map/npc/099-2/_import.txt
@@ -0,0 +1,6 @@
+// Map 099-2: Nu'RamRooms
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+map: 099-2
+npc: npc/099-2/_mobs.txt
+npc: npc/099-2/_nodes.txt
+npc: npc/099-2/_warps.txt
diff --git a/world/map/npc/099-2/_mobs.txt b/world/map/npc/099-2/_mobs.txt
new file mode 100644
index 00000000..26c1e255
--- /dev/null
+++ b/world/map/npc/099-2/_mobs.txt
@@ -0,0 +1,3 @@
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+// Nu'RamRooms mobs
+
diff --git a/world/map/npc/099-2/_nodes.txt b/world/map/npc/099-2/_nodes.txt
new file mode 100644
index 00000000..9b2c13bb
--- /dev/null
+++ b/world/map/npc/099-2/_nodes.txt
@@ -0,0 +1,4 @@
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+// Nu'RamRooms nodes
+
+// (no nodes)
diff --git a/world/map/npc/099-2/_warps.txt b/world/map/npc/099-2/_warps.txt
new file mode 100644
index 00000000..676f6f2f
--- /dev/null
+++ b/world/map/npc/099-2/_warps.txt
@@ -0,0 +1,23 @@
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+// Nu'RamRooms warps
+
+099-1,25,23|warp|-1,-1,099-1,29,17
+099-1,59,22|warp|-1,-1,099-1,77,17
+099-1,90,22|warp|-1,-1,099-1,105,9
+099-1,121,22|warp|-1,-1,099-1,91,137
+099-1,25,50|warp|-1,-1,099-1,20,116
+099-1,59,50|warp|-1,-1,099-1,97,86
+099-1,91,50|warp|-1,-1,099-1,112,127
+099-1,121,49|warp|-1,-1,099-1,64,115
+099-1,25,76|warp|-1,-1,099-1,64,73
+099-1,59,76|warp|-1,-1,099-1,42,52
+099-1,91,76|warp|-1,-1,099-1,92,45
+099-1,121,76|warp|-1,-1,099-1,15,78
+099-1,25,102|warp|-1,-1,099-1,49,130
+099-1,60,102|warp|-1,-1,099-1,113,62
+099-1,91,102|warp|-1,-1,099-1,131,79
+099-1,121,102|warp|-1,-1,099-1,72,59
+099-1,26,133|warp|-1,-1,099-1,47,93
+099-1,60,133|warp|-1,-1,099-1,102,25
+099-1,92,133|warp|-1,-1,099-1,120,45
+099-1,121,133|warp|-1,-1,099-1,97,106
diff --git a/world/map/npc/099-3/_import.txt b/world/map/npc/099-3/_import.txt
new file mode 100644
index 00000000..a75c6f6d
--- /dev/null
+++ b/world/map/npc/099-3/_import.txt
@@ -0,0 +1,6 @@
+// Map 099-3: Nu'RamBasement
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+map: 099-3
+npc: npc/099-3/_mobs.txt
+npc: npc/099-3/_nodes.txt
+npc: npc/099-3/_warps.txt
diff --git a/world/map/npc/099-3/_mobs.txt b/world/map/npc/099-3/_mobs.txt
new file mode 100644
index 00000000..17190db0
--- /dev/null
+++ b/world/map/npc/099-3/_mobs.txt
@@ -0,0 +1,3 @@
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+// Nu'RamBasement mobs
+
diff --git a/world/map/npc/099-3/_nodes.txt b/world/map/npc/099-3/_nodes.txt
new file mode 100644
index 00000000..e28bcf32
--- /dev/null
+++ b/world/map/npc/099-3/_nodes.txt
@@ -0,0 +1,4 @@
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+// Nu'RamBasement nodes
+
+// (no nodes)
diff --git a/world/map/npc/099-3/_warps.txt b/world/map/npc/099-3/_warps.txt
new file mode 100644
index 00000000..37f57051
--- /dev/null
+++ b/world/map/npc/099-3/_warps.txt
@@ -0,0 +1,17 @@
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+// Nu'RamBasement warps
+
+099-3,72,25|warp|-1,-1,099-1,119,115
+099-3,29,62|warp|-1,-1,099-1,48,17
+099-3,35,62|warp|-1,-1,099-1,76,26
+099-3,41,62|warp|-1,-1,099-1,128,18
+099-3,47,62|warp|-1,-1,099-1,110,45
+099-3,53,62|warp|-1,-1,099-1,120,79
+099-3,59,62|warp|-1,-1,099-1,113,98
+099-3,79,62|warp|-1,-1,099-1,125,98
+099-3,85,62|warp|-1,-1,099-1,60,93
+099-3,91,62|warp|-1,-1,099-1,20,55
+099-3,97,62|warp|-1,-1,099-1,14,55
+099-3,103,62|warp|-1,-1,099-1,15,68
+099-3,109,62|warp|-1,-1,099-1,19,94
+099-3,115,62|warp|-1,-1,099-1,57,52
diff --git a/world/map/npc/099-4/_import.txt b/world/map/npc/099-4/_import.txt
new file mode 100644
index 00000000..c1087feb
--- /dev/null
+++ b/world/map/npc/099-4/_import.txt
@@ -0,0 +1,6 @@
+// Map 099-4: Nu'Ram-Battle
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+map: 099-4
+npc: npc/099-4/_mobs.txt
+npc: npc/099-4/_nodes.txt
+npc: npc/099-4/_warps.txt
diff --git a/world/map/npc/099-4/_mobs.txt b/world/map/npc/099-4/_mobs.txt
new file mode 100644
index 00000000..0381696e
--- /dev/null
+++ b/world/map/npc/099-4/_mobs.txt
@@ -0,0 +1,3 @@
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+// Nu'Ram-Battle mobs
+
diff --git a/world/map/npc/099-4/_nodes.txt b/world/map/npc/099-4/_nodes.txt
new file mode 100644
index 00000000..22261608
--- /dev/null
+++ b/world/map/npc/099-4/_nodes.txt
@@ -0,0 +1,4 @@
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+// Nu'Ram-Battle nodes
+
+// (no nodes)
diff --git a/world/map/npc/099-4/_warps.txt b/world/map/npc/099-4/_warps.txt
new file mode 100644
index 00000000..703b3ca9
--- /dev/null
+++ b/world/map/npc/099-4/_warps.txt
@@ -0,0 +1,3 @@
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+// Nu'Ram-Battle warps
+
diff --git a/world/map/npc/_import.txt b/world/map/npc/_import.txt
index b92ea7e1..8c826165 100644
--- a/world/map/npc/_import.txt
+++ b/world/map/npc/_import.txt
@@ -120,4 +120,8 @@ import: npc/057-1/_import.txt
import: npc/069-2/_import.txt
import: npc/070-1/_import.txt
import: npc/070-3/_import.txt
+import: npc/099-1/_import.txt
+import: npc/099-2/_import.txt
+import: npc/099-3/_import.txt
+import: npc/099-4/_import.txt
import: npc/botcheck/_import.txt
diff --git a/world/map/npc/functions/doomsday.txt b/world/map/npc/functions/doomsday.txt
index 641bd6b0..365f6b50 100644
--- a/world/map/npc/functions/doomsday.txt
+++ b/world/map/npc/functions/doomsday.txt
@@ -29,6 +29,7 @@ function|script|DoomsdayDebug
mes "$DOOMSDAY_TOWN[1] (Hurns): "+$DOOMSDAY_TOWN[1];
mes "$DOOMSDAY_TOWN[2] (Nival): "+$DOOMSDAY_TOWN[2];
mes "$DOOMSDAY_SCORE: "+$DOOMSDAY_SCORE;
+ mes "$DOOMSDAY_CLUES: "+$DOOMSDAY_CLUES;
mes "";
mes "Can players summon Mana Guardians? "+if_then_else($DOOMSDAY_SUMMON, "Yes", "No");
mes "Is TMW under Jande's control? "+if_then_else($DOOMSDAY_TAKENOVER, "Yes", "No");
@@ -46,6 +47,7 @@ function|script|DoomsdayDebug
"[1][2][2] Surrender TMW to Jande",L_Surrender,
"[1][3][0] The Great War - First Wave",L_War,
"[2][3][1] The Great War - Additional Wave",L_GreatWar,
+ "[2][4][0] Wumpus Great Egg Hunt - DEBUG",L_Wumpus,
"[2][4][1] Council - Tulimshar's Guild",L_TulimCouncil,
"[2][4][2] Council - Celestia's Residence",L_HurnsCouncil,
"[2][4][3] Council - Blue Sage's Residence",L_NivalCouncil,
@@ -88,6 +90,12 @@ L_War:
gmlog strcharinfo(0) + " changed doomsday to Act 3: The Great War.";
return;
+L_Wumpus:
+ set $@DOOMSDAY_SKIP, 0;
+ donpcevent "Doomsday::OnClock1830"; // Forces a doomsday act 4 check
+ gmlog strcharinfo(0) + " manually triggered debug function. Doomsday Act 4.";
+ return;
+
// Act 4: The Great War Council
L_GreatWar:
disablenpc "Wizard#1";
@@ -350,6 +358,26 @@ L_Doomsday3:
set $@DD_LOC$, "031-1";
+ // Set the map coordinates for spawns
+ // Tulimshar
+ if ($@DoomsdayLoc == 0)
+ setarray $@DD_XPOS, 98, 97, 91, 75, 56, 44, 76, 54;
+ if ($@DoomsdayLoc == 0)
+ setarray $@DD_YPOS, 75, 86, 99,104, 81, 63, 76, 96;
+
+ // Hurnscald
+ if ($@DoomsdayLoc == 1)
+ setarray $@DD_XPOS,138,136,133,111, 95, 79, 67, 88;
+ if ($@DoomsdayLoc == 1)
+ setarray $@DD_YPOS, 63, 71, 79, 74, 75, 64, 82, 90;
+
+ // Nivalis
+ if ($@DoomsdayLoc == 2)
+ setarray $@DD_XPOS, 44, 62, 63, 56, 70, 36, 62, 85;
+ if ($@DoomsdayLoc == 2)
+ setarray $@DD_YPOS, 55, 49, 61, 83, 41, 37, 26, 30;
+
+
// Make an extra announce for those whom missed
if ($@DoomsdayLoc == 0)
announce "Jande: Zax De'Kagen's army reached ##BTULIMSHAR##b! (Attack by south gate)", 0;
@@ -399,6 +427,23 @@ L_DDAdvanceTimers2:
setnpctimer $@ADD_TIME;
set $@ADD_TIME, 0;
+ // If we have clues, we will cause a few extra spawns
+ if ($DOOMSDAY_CLUES)
+ goto L_DD3WaveReinforcements;
+ goto L_DDAdvanceWavePost;
+
+// Reinforcements on waves, to ensure Kage never really weaken their attacks
+L_DD3WaveReinforcements:
+ set $@DD_UNITS, $@DD_UNITS-$@DD_INT;
+ set $@DD_UNITS, $@DD_UNITS*$DOOMSDAY_CLUES/6;
+ set $@DD_INT, 0;
+
+ if ($@DD_UNITS > 0)
+ goto L_DD3WRCallsub;
+ goto L_DDAdvanceWavePost;
+
+L_DD3WRCallsub:
+ callsub S_DD3ThirdSpawns;
goto L_DDAdvanceWavePost;
// Clear temporary variables and broadcast
@@ -406,8 +451,17 @@ L_DDAdvanceWavePost:
set $@DD_IDX, 0;
set $@DD_INT, 0;
set $@DD_UNITS, 0;
+
// Tell users
mapannounce $@DD_LOC$, "Jande : Watch out, another wave! Only "+(6-$@DD_NUMWAVES)+" waves left!", 0;
+
+ // Prepare optional boss
+ set $@DD_IDX1, rand(getarraysize($@DD_XPOS));
+ set $@DD_IDX2, rand(getarraysize($@doomsday_boss));
+
+ // Spawn optional boss if req. is met
+ if ($@DD_NUMWAVES > 6-$DOOMSDAY_CLUES)
+ monster $@DD_LOC$, $@DD_XPOS[$@DD_IDX1], $@DD_YPOS[$@DD_IDX1], "", $@doomsday_boss[$@DD_IDX2], 1, "Doomsday::OnDeathAct3";
end;
@@ -578,24 +632,6 @@ L_DD3FirstThird:
if ($@DD_UNITS < 0)
goto L_DD3EndThird;
- // Tulimshar
- if ($@DoomsdayLoc == 0)
- setarray $@DD_XPOS, 98, 97, 91, 75, 56, 44, 76, 54;
- if ($@DoomsdayLoc == 0)
- setarray $@DD_YPOS, 75, 86, 99,104, 81, 63, 76, 96;
-
- // Hurnscald
- if ($@DoomsdayLoc == 1)
- setarray $@DD_XPOS,138,136,133,111, 95, 79, 67, 88;
- if ($@DoomsdayLoc == 1)
- setarray $@DD_YPOS, 63, 71, 79, 74, 75, 64, 82, 90;
-
- // Nivalis
- if ($@DoomsdayLoc == 2)
- setarray $@DD_XPOS, 44, 62, 63, 56, 70, 36, 62, 85;
- if ($@DoomsdayLoc == 2)
- setarray $@DD_YPOS, 55, 49, 61, 83, 41, 37, 26, 30;
-
// Prepare optional boss
set $@DD_IDX1, rand(getarraysize($@DD_XPOS));
set $@DD_IDX2, rand(getarraysize($@doomsday_boss));
@@ -620,24 +656,6 @@ L_DD3SecondThird:
// Difficulty adjustment: Invoke -1 mob per player and +1 mob per 3 score points
set $@DD_UNITS, $@DD_UNITS-getmapusers($@DD_LOC$)+($DOOMSDAY_SCORE/3);
- // Tulimshar
- if ($@DoomsdayLoc == 0)
- setarray $@DD_XPOS, 98, 97, 91, 75, 56, 44, 76, 54;
- if ($@DoomsdayLoc == 0)
- setarray $@DD_YPOS, 75, 86, 99,104, 81, 63, 76, 96;
-
- // Hurnscald
- if ($@DoomsdayLoc == 1)
- setarray $@DD_XPOS,138,136,133,111, 95, 79, 67, 88;
- if ($@DoomsdayLoc == 1)
- setarray $@DD_YPOS, 63, 71, 79, 74, 75, 64, 82, 90;
-
- // Nivalis
- if ($@DoomsdayLoc == 2)
- setarray $@DD_XPOS, 44, 62, 63, 56, 70, 36, 62, 85;
- if ($@DoomsdayLoc == 2)
- setarray $@DD_YPOS, 55, 49, 61, 83, 41, 37, 26, 30;
-
// Prepare optional boss
set $@DD_IDX1, rand(getarraysize($@DD_XPOS));
set $@DD_IDX2, rand(getarraysize($@doomsday_boss));
@@ -660,8 +678,6 @@ L_DD3EndThird:
set $@DD_IDX1, 0;
set $@DD_IDX2, 0;
set $@DD_INT, 0;
- cleararray $@DD_XPOS, 0, 8;
- cleararray $@DD_YPOS, 0, 8;
end;
@@ -712,6 +728,8 @@ L_Doomsday3Cleanup:
set $@DoomsdayLoc, 0;
set $@DoomsdayMc, 0;
set $@DD_LOC$, "";
+ cleararray $@DD_XPOS, 0, 8;
+ cleararray $@DD_YPOS, 0, 8;
end;
// Bonus spawn
@@ -723,15 +741,18 @@ L_Doomsday3Bonus:
if ($@DD_UNITS > 5)
set $@DD_UNITS, 3+($DOOMSDAY_SCORE/10);
+ // Sum the permanent clues
+ set $@DD_UNITS, $@DD_UNITS+$DOOMSDAY_CLUES;
+
set $@DD_IDX, rand(getarraysize($@doomsday_mobs));
- monster "031-1", 62, 49, "", $@doomsday_mobs[$@DD_IDX], 1;
+ monster "031-1", 62, 49, "", $@doomsday_mobs[$@DD_IDX], 1+$DOOMSDAY_CLUES;
set $@DD_IDX, rand(getarraysize($@doomsday_mobs));
- monster "018-1", 136, 71, "", $@doomsday_mobs[$@DD_IDX], 1;
+ monster "018-1", 136, 71, "", $@doomsday_mobs[$@DD_IDX], 1+$DOOMSDAY_CLUES;
set $@DD_IDX, rand(getarraysize($@doomsday_mobs));
- monster "002-1", 97, 86, "", $@doomsday_mobs[$@DD_IDX], 1;
+ monster "002-1", 97, 86, "", $@doomsday_mobs[$@DD_IDX], 1+$DOOMSDAY_CLUES;
set $@DD_IDX, rand(getarraysize($@doomsday_mobs));
- areamonster "017-1", 169, 49, 198, 77, "", $@doomsday_mobs[$@DD_IDX], 1;
+ areamonster "017-1", 169, 49, 198, 77, "", $@doomsday_mobs[$@DD_IDX], 1+$DOOMSDAY_CLUES;
set $@DD_IDX, rand(getarraysize($@doomsday_mobs));
areamonster "012-1", 20, 47, 74, 77, "", $@doomsday_mobs[$@DD_IDX], $@DD_UNITS;
set $@DD_IDX, rand(getarraysize($@doomsday_mobs));
@@ -747,6 +768,64 @@ L_Doomsday3Bonus:
set $@DD_IDX, 0;
end;
+// Act 4 System
+L_Doomsday4Check:
+ // Magic number: 21
+ if ($DOOMSDAY_SCORE >= 20-$DOOMSDAY_CLUES)
+ goto L_DD4WarnSeq;
+ end;
+
+L_DD4WarnSeq:
+ areatimer 0, $@DD_LOC$, 20, 20, 500, 500, 100, "Doomsday::OnDD4Warning1";
+ announce "Jande : ##1##BWarning: ##bZax's Golem spawning! Defeat it!!", 0;
+ addnpctimer 7500, "Doomsday::OnDD4Spawn";
+ end;
+
+OnDD4Warning1:
+ mapmask 1 | 2;
+ music "Dramatic.ogg";
+ areatimer 0, $@DD_LOC$, 20, 20, 500, 500, 600, "Doomsday::OnDD4Warning2";
+ end;
+
+OnDD4Warning2:
+ misceffect 51, strcharinfo(0);
+ areatimer 0, $@DD_LOC$, 20, 20, 500, 500, 7000, "Doomsday::OnDD4Warning3";
+ end;
+
+OnDD4Warning3:
+ mapmask 1;
+ end;
+
+OnDD4Spawn:
+ set $@DD_IDX1, rand(getarraysize($@DD_XPOS));
+ monster $@DD_LOC$, $@DD_XPOS[$@DD_IDX1], $@DD_YPOS[$@DD_IDX1], "", 1145, 1, "Doomsday::OnDeathAct4";
+ //debugmes "Success "+$@DD_LOC$+" ("+$@DD_XPOS[$@DD_IDX1]+", "+$@DD_YPOS[$@DD_IDX1]+")";
+ mapannounce $@DD_LOC$, "Golem : FRAIL SMALL PEOPLE, ME SMASH!!!", 0;
+ goto OnDD4Smash;
+
+// Could use a new optional skill: FRAIL NOOBS, ZAX RULES! (causes new wave of 6 monsters)
+OnDD4Smash:
+ // Golem got itself smashed D:
+ if ($@DD_LOC$ == "")
+ end;
+ if (!(mobcount($@DD_LOC$, "Doomsday::OnDeathAct4")+1))
+ end;
+ // TODO: Do not keep repeating the announce
+ //mapannounce $@DD_LOC$, "Golem : FRAIL SMALL PEOPLE, ME SMASH!!!", 0;
+ areatimer 0, $@DD_LOC$, 20, 20, 500, 500, 100, "Doomsday::OnDD4Smashed";
+ addnpctimer rand(12000, 18000), "Doomsday::OnDD4Smash";
+ end;
+
+OnDD4Smashed:
+ misceffect 52, strcharinfo(0);
+ heal -70-BaseLevel, 0;
+ end;
+
+// For surviving
+OnDD4SurvivorReward:
+ getexp 10000, 0;
+ end;
+
////////////////////////////////////////////////////////////////////////////////
// Respawn logic (5 minutes)
OnTimer100000:
@@ -783,13 +862,22 @@ OnClock1750:
OnClock1800:
if ($@DOOMSDAY_SKIP)
- goto L_Doomsday3Skip;
+ end;
if ($DOOMSDAY == 2)
goto L_Doomsday3;
end;
+OnClock1830:
+ if ($@DOOMSDAY_SKIP)
+ end;
+ if ($DOOMSDAY == 2)
+ goto L_Doomsday4Check;
+ end;
+
// 19h -> 18h45
OnClock1845:
+ if ($@DOOMSDAY_SKIP)
+ goto L_Doomsday3Skip;
if ($DOOMSDAY == 2)
goto L_Doomsday3Check;
end;
@@ -804,12 +892,21 @@ OnClock2350:
OnClock0000:
if ($@DOOMSDAY_SKIP)
- goto L_Doomsday3Skip;
+ end;
if ($DOOMSDAY == 2)
goto L_Doomsday3;
end;
+OnClock0030:
+ if ($@DOOMSDAY_SKIP)
+ end;
+ if ($DOOMSDAY == 2)
+ goto L_Doomsday4Check;
+ end;
+
OnClock0045:
+ if ($@DOOMSDAY_SKIP)
+ goto L_Doomsday3Skip;
if ($DOOMSDAY == 2)
goto L_Doomsday3Check;
end;
@@ -831,6 +928,15 @@ OnDeathMapname:
OnDeathAct3:
end;
+OnDeathAct4:
+ set $DOOMSDAY_SCORE, 0;
+ set $DOOMSDAY_CLUES, $DOOMSDAY_CLUES+1;
+ announce "Jande : Golem destroyed, crisis averted. I'll be resetting the number of victories.", 0;
+ if ($@DD_LOC$ == "")
+ end;
+ areatimer 0, $@DD_LOC$, 20, 20, 500, 500, 100, "Doomsday::OnDD4SurvivorReward";
+ end;
+
}
// Control puppets for Doomsday Council Meetings
diff --git a/world/map/npc/items/drugs.txt b/world/map/npc/items/drugs.txt
new file mode 100644
index 00000000..9c724872
--- /dev/null
+++ b/world/map/npc/items/drugs.txt
@@ -0,0 +1,17 @@
+// ------------------------------------------------------------
+// Added as a joke but could be used seriously.
+// ------------------------------------------------------------
+
+function|script|DrugItem
+{
+ if (strcharinfo(0) == "kytty") goto L_kytty;
+ //message strcharinfo(0), "TMW does not endorse nor condone with the use of this item in real life, nor with its implications.";
+ goto L_Return;
+
+L_kytty:
+ message strcharinfo(0), "Stop smoking, kytty! %%e";
+ goto L_Return;
+
+L_Return:
+ return;
+}
diff --git a/world/map/npc/scripts.conf b/world/map/npc/scripts.conf
index b02f224e..30cb5117 100644
--- a/world/map/npc/scripts.conf
+++ b/world/map/npc/scripts.conf
@@ -50,6 +50,7 @@ npc: npc/items/rubber_bat.txt
npc: npc/items/scentedcandle.txt
npc: npc/items/tmwgift.txt
npc: npc/items/brawling_item.txt
+npc: npc/items/drugs.txt
import: npc/_import.txt
// magic