summaryrefslogtreecommitdiff
path: root/npc/032-5
diff options
context:
space:
mode:
authorJesusaves <cpntb1@ymail.com>2022-10-23 21:44:22 -0300
committerJesusaves <cpntb1@ymail.com>2022-10-23 21:44:22 -0300
commita7c45a192268da2601cef47a4cdba987ae2327ca (patch)
treec5fb5b97db109fe7106496dd96498c475881046b /npc/032-5
downloadserverdata-a7c45a192268da2601cef47a4cdba987ae2327ca.tar.gz
serverdata-a7c45a192268da2601cef47a4cdba987ae2327ca.tar.bz2
serverdata-a7c45a192268da2601cef47a4cdba987ae2327ca.tar.xz
serverdata-a7c45a192268da2601cef47a4cdba987ae2327ca.zip
Initial commit (Moubootaur Legends fork)
Diffstat (limited to 'npc/032-5')
-rw-r--r--npc/032-5/_import.txt4
-rw-r--r--npc/032-5/_warps.txt3
-rw-r--r--npc/032-5/episode.txt221
3 files changed, 228 insertions, 0 deletions
diff --git a/npc/032-5/_import.txt b/npc/032-5/_import.txt
new file mode 100644
index 0000000..f9f3133
--- /dev/null
+++ b/npc/032-5/_import.txt
@@ -0,0 +1,4 @@
+// Map 032-5: Inner Chamber
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+"npc/032-5/_warps.txt",
+"npc/032-5/episode.txt",
diff --git a/npc/032-5/_warps.txt b/npc/032-5/_warps.txt
new file mode 100644
index 0000000..698d90b
--- /dev/null
+++ b/npc/032-5/_warps.txt
@@ -0,0 +1,3 @@
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+// Map 032-5: Inner Chamber warps
+032-5,37,19,0 warp #032-5_37_19 2,0,032-4,127,43
diff --git a/npc/032-5/episode.txt b/npc/032-5/episode.txt
new file mode 100644
index 0000000..73971b8
--- /dev/null
+++ b/npc/032-5/episode.txt
@@ -0,0 +1,221 @@
+// TMW2 scripts.
+// Authors:
+// Jesusalva
+// Description:
+// Part of the Doctor's Quest.
+
+// NOTE: Several things could be done to ensure the original owner is fighting.
+// I did none.
+// But if at any moment the boss is alone in the room, the fight resets (FIXME).
+// Dead bodies should be warped out automagically. (FIXME)
+// Reward is 400,000 experience points (almost enough to level up a Lv 61)
+// But the reward is only given when cutscene is completed
+// Meaning if you merely espectate/help you won't get it.
+// For helpers (Everyone on map) they'll get 30,000 exp
+// Therefore, experience given is 30k + 70k + 300k
+
+032-5,37,34,0 script #EpShow NPC_HIDDEN,2,0,{
+ end;
+OnInit:
+ .ctrl = false;
+ .platy = 0;
+ .razor = 0;
+ end;
+
+OnTouch:
+ if (mobcount("032-5", "all")) end;
+ if (getq(LoFQuest_EPISODE) != 15) end;
+ //if (getq2(LoFQuest_EPISODE) != 2); end;
+ if (.ctrl) end;
+
+ .ctrl=true;
+ initnpctimer;
+ end;
+
+OnTimer1000:
+ .platy=monster("032-5", 39, 55, strmobinfo(1, RedQueen), RedQueen, 1);
+ .razor=monster("032-5", 37, 57, "The Black Razor", RedFollower, 1);
+ immortal(.platy);
+ setunitdata(.platy, UDT_MODE, MD_BOSS|MD_PLANT|MD_NOKNOCKBACK);
+ immortal(.razor);
+ setunitdata(.razor, UDT_MODE, MD_BOSS|MD_PLANT|MD_NOKNOCKBACK);
+ end;
+
+OnTimer5000:
+ unittalk(.razor, "Uh?");
+ end;
+
+OnTimer10000:
+ unittalk(.razor, "Who are you people!");
+ end;
+
+OnTimer15000:
+ unittalk(.razor, "Don't tell me... You're with Prsm!");
+ end;
+
+OnTimer20000:
+ unittalk(.platy, "They think they can conspire against us.");
+ end;
+
+OnTimer25000:
+ unittalk(.platy, "But I am the original queen and no one can steal this from me.");
+ maptimer("032-5", 3000, "#EpShow::OnWarn1");
+ end;
+
+OnWarn1:
+ dispbottom l("On your marks!");
+ sleep2(1000);
+ dispbottom l("Ready...");
+ sleep2(1000);
+ dispbottom l("FIGHT!");
+ end;
+
+OnTimer30000:
+ unitwarp(.platy, "001-3-1", 19, 21);
+ unitwarp(.razor, "001-3-1", 19, 21);
+ sleep(25);
+ unitkill(.platy);
+ unitkill(.razor);
+ sleep(25);
+ .platy=monster("032-5", 39, 55, strmobinfo(1, RedQueen), RedQueen, 1, "#EpShow::OnPlaty");
+ .razor=monster("032-5", 37, 57, "The Black Razor", RedFollower, 1, "#EpShow::OnRazor");
+
+ // The Black Razor needs tweaks
+ setunitdata(.razor, UDT_MAXHP, 24000);
+ setunitdata(.razor, UDT_HP, 24000);
+ setunitdata(.razor, UDT_HIT, 24000);
+ setunitdata(.razor, UDT_ADELAY, 1272);
+ setunitdata(.razor, UDT_DMOTION, 48);
+ setunitdata(.razor, UDT_SPEED, 480);
+
+ // The Red Queen doesn't, but we need spawns and victory conditions
+ areamonster("032-5", 21, 35, 58, 77, strmobinfo(1, RedFollower), RedFollower, 12, "#EpShow::OnMini");
+ areamonster("032-5", 21, 35, 58, 77, strmobinfo(1, RedFollowerF), RedFollowerF, 12, "#EpShow::OnMini");
+ stopnpctimer;
+ // TODO: Red Queen should grow stronger as her allies are defeated
+ // TODO: Red Queen should be able to revive her allies, only once each.
+ //.ctrl = false;
+ end;
+
+OnMini:
+ if (.razor)
+ unittalk(.razor, "My fallen comrade, you'll be avenged!");
+ sleep(100);
+ if (!mobcount("032-5", "all")) goto OnNext;
+ end;
+
+OnRazor:
+ if (.platy)
+ unittalk(.platy, "Razor, no!");
+ .razor = 0;
+ sleep(100);
+ if (!mobcount("032-5", "all")) goto OnNext;
+ end;
+
+OnPlaty:
+ if (.razor)
+ unittalk(.razor, "My queen!");
+ .platy = 0;
+ sleep(100);
+ if (!mobcount("032-5", "all")) goto OnNext;
+ end;
+
+OnWin:
+ @elli=true;
+ getexp 30000, 0;
+ if (getq(LoFQuest_EPISODE) == 15) {
+ setq LoFQuest_EPISODE, 16, 0, 0;
+ getitem RedknightArmor, 1;
+ getexp 70000, 0;
+ }
+ specialeffect(FX_FANFARE, SELF, getcharid(3));
+ end;
+
+OnSS:
+ sshake();
+ closeclientdialog;
+ end;
+
+OnSSX:
+ sshake(8);
+ sleep2(350);
+ sshake(12);
+ closeclientdialog;
+ end;
+
+OnNext:
+ maptimer("032-5", 10, "#EpShow::OnWin");
+ // TODO: Bring the boss!
+ .platy=monster("032-5", 39, 55, "Soul Eater", PanthomLord, 1);
+ immortal(.platy);
+ setunitdata(.platy, UDT_MODE, MD_BOSS|MD_PLANT|MD_NOKNOCKBACK);
+ unittalk(.platy, "...");
+ sleep(5000);
+ unittalk(.platy, "How...");
+ maptimer("032-5", 4900, "#EpShow::OnSS");
+ sleep(5000);
+ unittalk(.platy, "HOW!!!");
+ maptimer("032-5", 4900, "#EpShow::OnSS");
+ sleep(5000);
+ unittalk(.platy, "UNFORGIVABLE!!! You have ruined my disguise!");
+ sleep(5000);
+ unittalk(.platy, "But you underestimate me...");
+ freeloop(true);
+ for (.@i=0;.@i < 25;.@i++) {
+ .@tmp = areamonster("032-5", 21, 35, 58, 77, strmobinfo(1, JackO), JackO, 1);
+ immortal(.@tmp);
+ setunitdata(.@tmp, UDT_MODE, MD_NOKNOCKBACK);
+ sleep(50);
+ }
+ freeloop(false);
+ unittalk(.platy, "...Of course every one who has fallen here serves me... And all those before!");
+ sleep(2500);
+ unittalk(.platy, "...And with those from past, present and future... I'll be invencible! And reign forever!");
+ maptimer("032-5", 1000, "#EpShow::OnMus");
+ sleep(2500);
+ // TODO: Bring elli!
+ enablenpc("Elli#Ep");
+ .razor = getnpcid("Elli#Ep");
+ sleep(500);
+ unittalk(.razor, "That shall not be.");
+ sleep(5000);
+ unittalk(.razor, "I am Elli, one of the Originals.");
+ sleep(5000);
+ unittalk(.razor, "And I am here to pummel you algebraically with a(n) ginormous, frankenstein, gassy, green carnival hammer.");
+ sleep(5000);
+ unittalk(.razor, "Your reign of terror is over, Soul Eater. I'll destroy you and your followers...");
+ sleep(5000);
+ unittalk(.razor, "...Past or future. Therefore:");
+ maptimer("032-5", 4900, "#EpShow::OnSSX");
+ sleep(5000);
+ unittalk(.razor, "COME LEGENDARY HOCUS, AND ANNIHILATE EVERYTHING!");
+ sleep(500);
+ disablenpc("Elli#Ep");
+ maptimer("032-5", 100, "#EpShow::OnFin");
+ sleep(200);
+ killmonsterall("032-5");
+ .ctrl = false;
+ end;
+
+OnMus:
+ changeplayermusic "valkyries.ogg";
+ end;
+
+OnFin:
+ if (!@elli) end;
+ warp "032-1", 59, 130;
+ sleep2(25);
+ sendmapmask 129;
+ changeplayermusic "valkyries.ogg";
+ addtimer(100, "Elli::OnFin");
+ @elli=false;
+ end;
+}
+
+032-5,39,52,0 script Elli#Ep NPC_ELLI,{
+ end;
+OnInit:
+ disablenpc(.name$);
+ end;
+}
+