summaryrefslogtreecommitdiff
path: root/world/map/npc
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 /world/map/npc
parent2269b95101eb366b86d928813d5467bd5710c1ce (diff)
downloadserverdata-bb7653be55fdc48f98f3def7497810eb31405c3b.tar.gz
serverdata-bb7653be55fdc48f98f3def7497810eb31405c3b.tar.bz2
serverdata-bb7653be55fdc48f98f3def7497810eb31405c3b.tar.xz
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)
Diffstat (limited to 'world/map/npc')
-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
20 files changed, 304 insertions, 44 deletions
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