diff options
author | Jesusaves <cpntb1@ymail.com> | 2023-06-26 00:13:41 -0300 |
---|---|---|
committer | Jesusaves <cpntb1@ymail.com> | 2023-06-26 00:13:41 -0300 |
commit | 82b91693cac9bf3169d3d1d6eb8a3075f662f6a2 (patch) | |
tree | f7f5aebee155b3fa8d12b0291668cbca6615c838 /npc/config | |
parent | 8a48bf02e99874e6aaf7171d259f5f2a3e8a45e3 (diff) | |
download | serverdata-82b91693cac9bf3169d3d1d6eb8a3075f662f6a2.tar.gz serverdata-82b91693cac9bf3169d3d1d6eb8a3075f662f6a2.tar.bz2 serverdata-82b91693cac9bf3169d3d1d6eb8a3075f662f6a2.tar.xz serverdata-82b91693cac9bf3169d3d1d6eb8a3075f662f6a2.zip |
Add the Moubootaur Showdown (without any major change)
Diffstat (limited to 'npc/config')
-rw-r--r-- | npc/config/events.txt | 321 |
1 files changed, 321 insertions, 0 deletions
diff --git a/npc/config/events.txt b/npc/config/events.txt new file mode 100644 index 0000000..55c4433 --- /dev/null +++ b/npc/config/events.txt @@ -0,0 +1,321 @@ +// TMW2 scripts. +// Author: +// Jesusalva +// Description: +// Some of the event scripts + +001-13-2 mapflag zone MMO +001-13-2,47,26,0 script #FoSCore NPC_NO_SPRITE,{ + if (!is_admin() && !is_master()) end; + if ($@FIRESOFSTEAM_BOSS) end; + select + l("Ignore this book"), + l("Begin Moubootaur Showdown"); + mes ""; + $@FIRESOFSTEAM_BOSS=(@menu-1)*2; + if ($@FIRESOFSTEAM_BOSS == 0) close; + select + l("Easy Mode"), + l("Crazy Mode"), + l("Cadis Mode"), + l("Crazy Cadis Ultimate Pandorica Mode"), + l("Portable Apocalypse"); + mes ""; + $@FIRESOFSTEAM_DIFF=70+(@menu*30); + $@EVENT_01 = PORTHOS_BUSY; + switch (@menu) { + case 1: .@d$="##2Easy"; break; + case 2: .@d$="##3Crazy"; break; + case 3: .@d$="##5Cadis"; break; + case 4: .@d$="##6Crazy Cadis Ultimate Pandorica"; break; + case 5: .@d$="##1Portable Apocalypse"; break; + default: .@d$="Unknown"; + } + mapannounce("001-13-2", "Difficulty Selected: ##B"+.@d$+"##b", 0); + changemusic("001-13-2", "mythica.ogg"); + closeclientdialog; + // Dispose of the GM + warp "033-1", 72, 185; + sleep(200); + // PC no longer attached + // Start the event + mapwarp("001-13-2", "001-13-2", 47, 37); + sleep(200); + // Cleanup previous data (if any) + $@FOS_ISB=0; + $@FOS_MOB=0; + $@FOS_AND=0; + .Support1=0; + .Support2=0; + .Support3=0; + .Support4=0; + .Support5=0; + $@FOS_MOB=monster("001-13-2", 47, 32, "Moubootaur (Sealed)", MobMoubootaur, 1, "#FoSCore::OnEventEnd"); + .@c = getunits(BL_PC|BL_MER|BL_HOM, .@players, MAX_CYCLE_PC, "001-13-2"); + for (.@i = 0; .@i < .@c; .@i++) { + sc_start(SC_STUN, 31000, 1, 10000, + SCFLAG_NOAVOID|SCFLAG_FIXEDTICK, .@players[.@i]); + } + sc_start(SC_STUN, 31000, 1, 10000, SCFLAG_NOAVOID|SCFLAG_FIXEDTICK, $@FOS_MOB); + sleep(1000); // Dramatic Silence + unittalk($@FOS_MOB, "##1Who dares awake me from my slumber..."); + sleep(3000); + unittalk($@FOS_MOB, "##1It was not even a decade since I turned a whole world in a Moubootaur Legend for their insolence..."); + sleep(5000); + maptimer2("001-13-2", 2000, "#FoSCore::OnMFShake"); + sleep(2000); + unittalk($@FOS_MOB, "##1AND YOU DARE TO NOT LEARN YOUR LESSON?? %%e"); + sleep(2000); + unittalk($@FOS_MOB, "##1USELESS, UNWORTHY CREATURES!! %%e"); + sleep(6000); + unittalk($@FOS_MOB, "##1I SHALL TURN THE WHOLE FRICKIN' MULTIVERSE INTO MOUBOOS..."); + sleep(6000); + unittalk($@FOS_MOB, "##1MY RETURN... IS AT HAND!!"); + .@avg=$@FIRESOFSTEAM_DIFF*13/10; // Moubootaur: +30% bonus (+30~60 lvls) + // Reconfigure the monster (otherwise it is night immortal) + setunitdata($@FOS_MOB, UDT_LEVEL, .@avg); + setunitdata($@FOS_MOB, UDT_STR, 1+.@avg*3/4); + setunitdata($@FOS_MOB, UDT_AGI, 1+.@avg*3/4); + setunitdata($@FOS_MOB, UDT_VIT, 1+.@avg*3/4); + setunitdata($@FOS_MOB, UDT_INT, 1+.@avg*3/4); + setunitdata($@FOS_MOB, UDT_DEX, 1+.@avg*3/4); + setunitdata($@FOS_MOB, UDT_LUK, 1+.@avg*3/4); + setunitdata($@FOS_MOB, UDT_ADELAY, 1472); + setunitdata($@FOS_MOB, UDT_ATKRANGE, 4); + // Battle Status + setunitdata($@FOS_MOB, UDT_MAXHP, .@avg*1350); + setunitdata($@FOS_MOB, UDT_HP, .@avg*1350); + setunitdata($@FOS_MOB, UDT_ATKMIN, .@avg*6); + setunitdata($@FOS_MOB, UDT_ATKMAX, .@avg*8); + setunitdata($@FOS_MOB, UDT_DEF, 12+.@avg*5/3); + setunitdata($@FOS_MOB, UDT_MDEF, 1+.@avg); + setunitdata($@FOS_MOB, UDT_HIT, .@avg*18); // Advised: x18 + setunitdata($@FOS_MOB, UDT_FLEE, .@avg*4); // Advised: x5 + setunitdata($@FOS_MOB, UDT_CRIT, 60+.@avg*4/3); + // Reconfigure the AI + .@opt=getunitdata($@FOS_MOB, UDT_MODE); + // Disable looting + if (.@opt & MD_LOOTER) + .@opt=.@opt^MD_LOOTER; + // Add knockback immunity + .@opt=.@opt|MD_NOKNOCKBACK; + // Mark as boss + .@opt=.@opt|MD_BOSS; + // Mark as aggressive + .@opt=.@opt|MD_AGGRESSIVE; + .@opt=.@opt|MD_ANGRY; + // Make it more op + .@opt=.@opt|MD_DETECTOR; + .@opt=.@opt|MD_CASTSENSOR_CHASE; + .@opt=.@opt|MD_CASTSENSOR_IDLE; + .@opt=.@opt|MD_CHANGECHASE; + .@opt=.@opt|MD_CHANGETARGET_MELEE; + .@opt=.@opt|MD_CHANGETARGET_CHASE; + setunitdata($@FOS_MOB, UDT_MODE, .@opt); + sleep(1000); + mapannounce("001-13-2", "##1##BON YOUR MARKS...", 0); + sleep(2000); + mapannounce("001-13-2", "##1##B3...", 0); + sleep(1000); + mapannounce("001-13-2", "##1##B2...", 0); + sleep(1000); + mapannounce("001-13-2", "##1##B1...", 0); + sleep(1000); + mapannounce("001-13-2", "##1##BBEGIN!!", 0); + .Support3=monster("001-13-2", 59, 36, "Magic Commander", Moubi, 1); + .Support4=monster("001-13-2", 44, 44, "Army Commander", BloodyMouboo, 1); + .Support5=monster("001-13-2", 37, 36, "Mouboo Governor", AlphaMouboo, 1); + setunitdata(.Support3, UDT_MAXHP, .@avg*300); + setunitdata(.Support3, UDT_HP, .@avg*300); + setunitdata(.Support4, UDT_MAXHP, .@avg*300); + setunitdata(.Support4, UDT_HP, .@avg*300); + setunitdata(.Support5, UDT_MAXHP, .@avg*300); + setunitdata(.Support5, UDT_HP, .@avg*300); + setunitdata(.Support3, UDT_RACE, RC_Legendary); + setunitdata(.Support4, UDT_RACE, RC_Legendary); + setunitdata(.Support5, UDT_RACE, RC_Legendary); + initnpctimer; + changemusic("001-13-2", "Arabesque.ogg"); + end; + +////////////// Player's Victory ////////////// +OnEventEnd: + stopnpctimer; + killmonsterall("001-13-2"); + changemusic("001-13-2", "Misty_Shrine.ogg"); + mapannounce("001-13-2", "Moubootaur : ##1##BThis is not the place...", 0); + sleep(2000); + mapannounce("001-13-2", "Moubootaur : ##1##BMy powers are weak here...", 0); + sleep(2000); + mapannounce("001-13-2", "Moubootaur : ##1##BBut you won't foil my plans forever!", 0); + sleep(3000); + mapannounce("001-13-2", "Moubootaur : ##1##BI'll come back... Stronger than ever!", 0); + sleep(3000); + maptimer2("001-13-2", 10, "#FoSCore::OnMFSurvive"); + $@EVENT_01 = PORTHOS_UNUSED; + end; + + +////////////// Map Broadcast ////////////// +OnMFMark: + dispbottom col(l("On your marks..."), 1); + end; + +OnMFShake: + sshake(); + closeclientdialog; + sleep2(1000); + sshake(); + sshake(); + closeclientdialog; + end; + +OnMFDispose: + if (ispcdead()) warp("033-1", 72, 191); + end; + +OnMFSurvive: + dispbottom l("Mission accomplished. Well played!"); + // TODO: Mark as "done" on Mirror Lake Quest Tracker + specialeffect(FX_FANFARE, AREA, getcharid(3)); + sleep2(15000); + warp("033-1", 72, 191); + end; + +////////////// Heartbeat ////////////// +OnTimer15000: + maptimer2("001-13-2", 10, "#FoSCore::OnMFDispose"); + sleep(30); + if (getmapusers("001-13-2") < 1) goto L_Defeat; + // Main cycle + if ($@FIRESOFSTEAM_BOSS) { + // Handle Moubootaur Magic + // But only if .Support3 was defined (control variable) + if (!.Support3) {initnpctimer; end;} + // Spawn a fiend + .@m=monster("001-13-2", 47, 31, "Mouboo", Mouboo, 1); + setunitdata(.@m, UDT_RACE, RC_Legendary); + .@hp=getunitdata(.@m, UDT_MAXHP)*$@FIRESOFSTEAM_DIFF/80; + .@op=getunitdata(.@m, UDT_MODE); + .@op=.@op|MD_AGGRESSIVE; + setunitdata(.@m, UDT_MAXHP, .@hp); + setunitdata(.@m, UDT_HP, .@hp); + setunitdata(.@m, UDT_MODE, .@op); + // Select random magic from arsenal + .@r=rand2(16); + switch (.@r) { + case 1: + mapannounce("001-13-2", "Moubootaur : ##BAncient Magic: Bleeding", 0); + areasc2("001-13-2", 50, 40, 30, 15000, SC_BLOODING, BL_PC, 1); + break; + case 2: + mapannounce("001-13-2", "Moubootaur : ##BAncient Magic: Blind", 0); + areasc2("001-13-2", 50, 40, 30, 15000, SC_BLIND, BL_PC, 1); + break; + case 3: + mapannounce("001-13-2", "Moubootaur : ##BAncient Magic: Lag", 0); + areasc2("001-13-2", 50, 40, 30, 15000, SC_CONFUSION, BL_PC, 1); + break; + case 4: + mapannounce("001-13-2", "Moubootaur : ##BAncient Magic: Curse", 0); + areasc2("001-13-2", 50, 40, 30, 15000, SC_CURSE, BL_PC, 1); + break; + case 5: + mapannounce("001-13-2", "Moubootaur : ##BAncient Magic: Poison", 0); + areasc2("001-13-2", 50, 40, 30, 15000, SC_POISON, BL_PC, 1); + break; + case 6: + mapannounce("001-13-2", "Moubootaur : ##BAncient Magic: Sleep", 0); + areasc2("001-13-2", 50, 40, 30, 15000, SC_SLEEP, BL_PC, 1); + break; + case 7: + mapannounce("001-13-2", "Moubootaur : ##BAncient Magic: Deadly Poison", 0); + areasc2("001-13-2", 50, 40, 30, 15000, SC_DPOISON, BL_PC, 1); + break; + case 8: + mapannounce("001-13-2", "Moubootaur : ##BAncient Magic: Chilling", 0); + areasc2("001-13-2", 50, 40, 30, 15000, SC_COLD, BL_PC, 1); + break; + case 9: + mapannounce("001-13-2", "Moubootaur : ##BAncient Magic: Burning", 0); + areasc2("001-13-2", 50, 40, 30, 15000, SC_BURNING, BL_PC, 1); + break; + case 10: + mapannounce("001-13-2", "Moubootaur : ##BAncient Magic: Fear", 0); + areasc2("001-13-2", 50, 40, 30, 15000, SC_FEAR, BL_PC, 1); + break; + case 11: + mapannounce("001-13-2", "Moubootaur : ##BAncient Magic: Obliterate", 0); + rectharm($@FOS_MOB, 7, 7, rand2(700, 900), HARM_MISC, Ele_Holy, "filter_always", BL_PC | BL_MER | BL_HOM); + break; + case 12: + mapannounce("001-13-2", "Moubootaur : ##BAncient Magic: Disarm Homun", 0); + areasc2("001-13-2", 50, 40, 30, 15000, SC_STUN, BL_HOM, 1); + break; + case 13: + mapannounce("001-13-2", "Moubootaur : ##BAncient Magic: Exterminate Lesserform", 0); + rectharm($@FOS_MOB, 7, 7, rand2(800, 1400), HARM_MISC, Ele_Holy, "filter_always", BL_MER | BL_HOM); + break; + case 14: + mapannounce("001-13-2", "Moubootaur : ##BAncient Magic: Summon Reinforcement", 0); + for (.@i=0;.@i <= rand2(4);.@i++) { + .@m=monster("001-13-2", rand2(35,43), rand2(35,38), "Reinforcement", + any(AlphaMouboo, Moubi, BloodyMouboo, Moubi), 1); + setunitdata(.@m, UDT_RACE, RC_Legendary); + .@hp=getunitdata(.@m, UDT_MAXHP)*$@FIRESOFSTEAM_DIFF/60; + setunitdata(.@m, UDT_MAXHP, .@hp); + setunitdata(.@m, UDT_HP, .@hp); + } + break; + case 15: + mapannounce("001-13-2", "Moubootaur : ##BAncient Magic: Wizcat", 0); + for (.@i=0;.@i <= 2+rand2(7);.@i++) { + .@m=monster("001-13-2", rand2(35,43), rand2(35,38), + "Reinforcement", BlackCat, 1); + setunitdata(.@m, UDT_RACE, RC_Legendary); + .@hp=getunitdata(.@m, UDT_MAXHP)*$@FIRESOFSTEAM_DIFF/70; + setunitdata(.@m, UDT_MAXHP, .@hp); + setunitdata(.@m, UDT_HP, .@hp); + } + break; + case 16: + mapannounce("001-13-2", "Moubootaur : ##BAncient Magic: Nuke", 0); + rectharm($@FOS_MOB, 14, 14, rand2(450, 750), HARM_MISC, Ele_Holy, "filter_always", BL_PC | BL_MER | BL_HOM); + break; + default: // case 0 + mapannounce("001-13-2", "Moubootaur : ##BAncient Magic: Seal", 0); + areasc2("001-13-2", 50, 40, 30, 15000, SC_SILENCE, BL_PC, 1); + break; + } + sleep(rand2(45000)); // Wait a bit longer between magic (random) + } + initnpctimer; + end; + +////////////// Player's Defeat ////////////// +OnDefeat: +L_Defeat: + $@FIRESOFSTEAM_BOSS=0; + $@FIRESOFSTEAM_DIFF=0; + $@FOS_ISB=0; + $@FOS_MOB=0; + $@FOS_AND=0; + .Support1=0; + .Support2=0; + .Support3=0; + .Support4=0; + .Support5=0; + killmonsterall("001-13-2"); + kamibroadcast("The players were defeated at Fires of Steam Showdown.", "Fires of Steam"); + $@EVENT_01 = PORTHOS_UNUSED; + stopnpctimer; + end; + +OnInit: + .boostime = 900000; + .subitime = 47000; + .distance = 5; + .sex = G_OTHER; + end; +} + |