diff options
author | Jesusaves <cpntb1@ymail.com> | 2022-10-23 21:44:22 -0300 |
---|---|---|
committer | Jesusaves <cpntb1@ymail.com> | 2022-10-23 21:44:22 -0300 |
commit | a7c45a192268da2601cef47a4cdba987ae2327ca (patch) | |
tree | c5fb5b97db109fe7106496dd96498c475881046b /npc/032-5 | |
download | serverdata-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.txt | 4 | ||||
-rw-r--r-- | npc/032-5/_warps.txt | 3 | ||||
-rw-r--r-- | npc/032-5/episode.txt | 221 |
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; +} + |