// TMW2 scripts. // Author: // Jesusalva // Description: // Fires of Steam: The Death of Andrei Sakar /* ***************************************** $@FIRESOFSTEAM_BOSS 0 = Off; 1 = Moubootaur summoning; 2 = Moubootaur summoned $@FIRESOFSTEAM_DIFF Level of difficulty setting (100/130/160/190/220) ***************************************** */ ////////////////////////////////////////// // Boss Room 029-9,96,22,0 script Book#FoS NPC_NO_SPRITE,{ if (!is_staff() && strcharinfo(0) != $MOST_HEROIC$) end; if ($@FIRESOFSTEAM_BOSS) end; select l("Ignore this book"), l("Begin classic mode"), rif(is_staff() && $FIRESOFSTEAM >= 10, l("Skip prologue")); mes ""; $@FIRESOFSTEAM_BOSS=(@menu-1); if ($@FIRESOFSTEAM_BOSS == 0) close; select l("Easy Mode"), rif($FIRESOFSTEAM >= 10, l("Crazy Mode")), rif($FIRESOFSTEAM >= 10, l("Cadis Mode")), rif($FIRESOFSTEAM >= 10, l("Crazy Cadis Ultimate Pandorica Mode")), rif($FIRESOFSTEAM >= 10, l("Portable Apocalypse")); mes ""; $@FIRESOFSTEAM_DIFF=70+(@menu*30); 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("029-9", "Difficulty Selected: ##B"+.@d$+"##b", 0); changemusic("029-9", "mythica.ogg"); closeclientdialog; // Dispose of the GM warp "029-8", 175, 80; sleep(200); // PC no longer attached // Start the event mapwarp("029-9", "029-9", 96, 41); sleep(200); .@c = getunits(BL_PC|BL_MER|BL_HOM, .@players, MAX_CYCLE_PC, "029-9"); for (.@i = 0; .@i < .@c; .@i++) { sc_start(SC_STUN, 18000, 1, 10000, SCFLAG_NOAVOID|SCFLAG_FIXEDTICK, .@players[.@i]); } sleep(100); // Cleanup previous data (if any) $@FOS_ISB=0; $@FOS_MOB=0; $@FOS_AND=0; .Support1=0; .Support2=0; .Support3=0; .Support4=0; .Support5=0; // Lockdown disablenpc "#029-9_97_49"; // Exit disablenpc "#029-9_103_48"; // To Storage disablenpc "#029-9_91_26"; // To Moubootaur disablenpc "#029-9_34_23"; // From Moubootaur disablenpc "#029-9_137_41"; // From Storage // Summon Andrei, and handle prologue skips $@FOS_AND=monster("029-9", 96, 35, "Andrei Sakar", AndreiSakar, 1); if ($@FIRESOFSTEAM_BOSS == 2) goto OnProlEnd; // Spawn Isbamuth and his support $@FOS_ISB=monster("029-9", 96, 32, "Isbamuth", Isbamuth, 1, "Book#FoS::OnProlEnd"); .Support1=monster("029-9", 95, 31, "Hooded Assassin", HoodedAssassin, 1); .Support2=monster("029-9", 97, 31, "Hooded Assassin", HoodedAssassin, 1); .Support3=monster("029-9", 95, 27, "Assassin", Assassin, 1); .Support4=monster("029-9", 96, 27, "Assassin", Assassin, 1); .Support5=monster("029-9", 97, 27, "Assassin", Assassin, 1); // Freeze everyone! sc_start(SC_STUN, 18000, 1, 10000, SCFLAG_NOAVOID|SCFLAG_FIXEDTICK, $@FOS_AND); sc_start(SC_STUN, 18000, 1, 10000, SCFLAG_NOAVOID|SCFLAG_FIXEDTICK, $@FOS_ISB); sc_start(SC_STUN, 18000, 1, 10000, SCFLAG_NOAVOID|SCFLAG_FIXEDTICK, .Support1); sc_start(SC_STUN, 18000, 1, 10000, SCFLAG_NOAVOID|SCFLAG_FIXEDTICK, .Support2); sc_start(SC_STUN, 18000, 1, 10000, SCFLAG_NOAVOID|SCFLAG_FIXEDTICK, .Support3); sc_start(SC_STUN, 18000, 1, 10000, SCFLAG_NOAVOID|SCFLAG_FIXEDTICK, .Support4); sc_start(SC_STUN, 18000, 1, 10000, SCFLAG_NOAVOID|SCFLAG_FIXEDTICK, .Support5); // Boost Isbamuth stats .@avg=$@FIRESOFSTEAM_DIFF; // Reconfigure the monster setunitdata($@FOS_ISB, UDT_LEVEL, .@avg); setunitdata($@FOS_ISB, UDT_STR, 1+.@avg/2); setunitdata($@FOS_ISB, UDT_AGI, 1+.@avg/2); setunitdata($@FOS_ISB, UDT_VIT, 1+.@avg/2); setunitdata($@FOS_ISB, UDT_INT, 1+.@avg/2); setunitdata($@FOS_ISB, UDT_DEX, 1+.@avg/2); setunitdata($@FOS_ISB, UDT_LUK, 1+.@avg/2); setunitdata($@FOS_ISB, UDT_ADELAY, 1072); setunitdata($@FOS_ISB, UDT_ATKRANGE, 4); // Battle Status setunitdata($@FOS_ISB, UDT_MAXHP, .@avg*700); setunitdata($@FOS_ISB, UDT_HP, .@avg*700); setunitdata($@FOS_ISB, UDT_ATKMIN, .@avg*6); setunitdata($@FOS_ISB, UDT_ATKMAX, .@avg*8); setunitdata($@FOS_ISB, UDT_DEF, 4+.@avg); setunitdata($@FOS_ISB, UDT_MDEF, 1+.@avg); setunitdata($@FOS_ISB, UDT_HIT, .@avg*12); // Advised: x18 setunitdata($@FOS_ISB, UDT_FLEE, .@avg*4); // Advised: x5 setunitdata($@FOS_ISB, UDT_CRIT, 20+.@avg); // Reconfigure the AI .@opt=getunitdata($@FOS_ISB, 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 crazy .@opt=.@opt|MD_RANDOMTARGET; setunitdata($@FOS_ISB, UDT_MODE, .@opt); // Begin Isbamuth's monologue unittalk($@FOS_ISB, "You are too late! I did it!! Muahahaha!"); sleep(1000); unittalk(.Support1, "Yeah, you did it!"); sleep(400); unittalk(.Support2, "Yeah, you are the best!"); sleep(600); unittalk($@FOS_ISB, "Silence!"); sleep(1000); unittalk($@FOS_ISB, "You did well tracking me down... However the rite is almost complete."); sleep(3000); unittalk($@FOS_ISB, "The power of the Moubootaur will be mine..."); sleep(2000); unittalk($@FOS_ISB, "And you no longer can stop me!! Muahahahaha!"); sleep(1000); unittalk(.Support1, "Yeah, that's our boss!"); sleep(600); unittalk(.Support2, "Yeah, none is like boss!"); sleep(400); unittalk($@FOS_AND, "Your evil plans shall never prevail, Isbamuth!"); sleep(2500); unittalk($@FOS_AND, "Adventurers! I'll go ahead, you shall buy me time!"); maptimer2("029-9", 200, "Book#FoS::OnMFAndreiMagic"); sleep(500); sc_end(SC_STUN, $@FOS_AND); unitwalk($@FOS_AND, 96, 24); sleep(1000); unitwalk($@FOS_AND, 96, 24); sleep(1000); unittalk($@FOS_AND, "I'm sure Isbamuth will be no match for all of you!"); unitwalk($@FOS_AND, 90, 26); sleep(1500); unitwarp($@FOS_AND, "029-9", 39, 21); unittalk($@FOS_ISB, "Hahaha... YOU THINK YOU CAN DEFEAT ME??"); sc_start(SC_STUN, INT_MAX, 1, 10000, SCFLAG_NOAVOID|SCFLAG_FIXEDTICK, $@FOS_AND); sleep(1000); unittalk($@FOS_ISB, "We will see! Engarde!!"); initnpctimer; changemusic("029-9", "let_the_battles_begin.ogg"); end; ////////////// Prologue End ////////////// OnProlEnd: if (playerattached()) getexp 200000, 50000; changemusic("029-9", "steam.ogg"); mapannounce("029-9", "##1##BA huge sound is heard from the basement.", 0); $@FIRESOFSTEAM_BOSS=2; enablenpc "#029-9_91_26"; // To Moubootaur // Cleanup previous data (if any) $@FOS_ISB=0; $@FOS_MOB=0; .Support1=0; .Support2=0; .Support3=0; .Support4=0; .Support5=0; maptimer2("029-9", 10000, "Book#FoS::OnMFMark"); maptimer2("029-9", 18000, "Book#FoS::OnMFScene"); // Ensure Andrei Sakar is at his place and stunned unitwarp($@FOS_AND, "029-9", 39, 21); sc_start(SC_STUN, INT_MAX, 1, 10000, SCFLAG_NOAVOID|SCFLAG_FIXEDTICK, $@FOS_AND); // Bring on the Gemini Assassins .Support1=monster("029-9", 38, 21, "Valia", Sagratha, 1); .Support2=monster("029-9", 40, 21, "Luvia", Luvia, 1); sc_start(SC_STUN, INT_MAX, 1, 10000, SCFLAG_NOAVOID|SCFLAG_FIXEDTICK, .Support1); sc_start(SC_STUN, INT_MAX, 1, 10000, SCFLAG_NOAVOID|SCFLAG_FIXEDTICK, .Support2); setunitdata($@FOS_AND, UDT_MAXHP, 999999); setunitdata($@FOS_AND, UDT_HP, 999999); setunitdata(.Support1, UDT_MAXHP, 999999); setunitdata(.Support1, UDT_HP, 999999); setunitdata(.Support2, UDT_MAXHP, 999999); setunitdata(.Support2, UDT_HP, 999999); sleep(18000+100); // Wait for cutscene to start + latebloomers .@c = getunits(BL_PC|BL_MER|BL_HOM, .@players, MAX_CYCLE_PC, "029-9"); for (.@i = 0; .@i < .@c; .@i++) { sc_start(SC_STUN, 18000, 1, 10000, SCFLAG_NOAVOID|SCFLAG_FIXEDTICK, .@players[.@i]); } sleep(100); ////////////////////////////////////////////////////////////// unittalk(.Support1, "...I'm sorry!"); sleep(1000); unittalk(.Support2, "...But Isbamuth told us to kill you!"); sleep(1000); unittalk(.Support1, "...Die for us!"); sleep(1000); unitkill($@FOS_AND); // DEAD $@FOS_AND=0; maptimer2("029-9", 3000, "Book#FoS::OnMFShake"); sleep(3200); // Dramatic Silence mapannounce("029-9", "##1##BGRRRRRRRRR!!!!", 0); sleep(800); mapannounce("029-9", "##1##BHUMANS!!!!", 0); sleep(2000); unittalk(.Support2, "Sister, we should go."); sleep(3000); unittalk(.Support1, "...Yes, sister, let's go!"); sleep(3000); unitwarp(.Support1, "029-9", 130, 32); unitwarp(.Support2, "029-9", 131, 32); sleep(1000); // Dramatic Silence unitkill(.Support1); unitkill(.Support2); $@FOS_MOB=monster("029-9", 39, 36, "Moubootaur (Sealed)", MobMoubootaur, 1, "Book#FoS::OnEventEnd"); 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 just a few nights since I turned a nearby town in Mouboos for their insolence..."); sleep(5000); maptimer2("029-9", 2000, "Book#FoS::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 THIS WHOLE WORLD INTO MOUBOOS..."); sleep(6000); unittalk($@FOS_MOB, "##1THE PROPHECY... OF MY RETURN... IS FULFILLED AT LEAST!!"); .@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("029-9", "##1##BON YOUR MARKS...", 0); sleep(2000); mapannounce("029-9", "##1##B3...", 0); sleep(1000); mapannounce("029-9", "##1##B2...", 0); sleep(1000); mapannounce("029-9", "##1##B1...", 0); sleep(1000); mapannounce("029-9", "##1##BBEGIN!!", 0); .Support3=monster("029-9", 25, 29, "Magic Commander", Moubi, 1); .Support4=monster("029-9", 53, 29, "Army Commander", BloodyMouboo, 1); .Support5=monster("029-9", 39, 45, "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("029-9", "Arabesque.ogg"); end; ////////////// Player's Victory ////////////// OnEventEnd: stopnpctimer; changemusic("029-9", "Misty_Shrine.ogg"); enablenpc "#029-9_97_49"; // Exit enablenpc "#029-9_103_48"; // To Storage enablenpc "#029-9_34_23"; // From Moubootaur enablenpc "#029-9_137_41"; // From Storage maptimer2("029-9", 10, "Book#FoS::OnMFSurvive"); mapannounce("029-9", "Moubootaur : ##1##BThis is not the place...", 0); sleep(2000); mapannounce("029-9", "Moubootaur : ##1##BMy powers are weak here...", 0); sleep(2000); mapannounce("029-9", "Moubootaur : ##1##BHowever... I know where I must go.", 0); sleep(3000); mapannounce("029-9", "Moubootaur : ##1##BThe prophecy... LIVES!", 0); sleep(3000); // XXX Reward cycle XXX // This can be slow, beware .@c = getunits(BL_PC, .@players, MAX_CYCLE_PC); for (.@i = 0; .@i < .@c; .@i++) { attachrid(.@players[.@i]); if ($FIRESOFSTEAM >= 10) { getexp 50000+($@FIRESOFSTEAM_DIFF*10), 5000+$@FIRESOFSTEAM_DIFF; } else { getexp 1000000, 250000; getitem StrangeCoin, 200; Mobpt+=500000; Zeny+=250000; } dispbottom l("Congratulations! You've received participation rewards due to the Moubootaur Death."); detachrid(); } if ($FIRESOFSTEAM < 10) { kamibroadcast("The Moubootaur has been awakened. The gears of destiny are on motion.", "Jesusalva"); sleep(5000); kamibroadcast("Great calamity shall soon befall upon this world.", "Jesusalva"); sleep(5000); kamibroadcast("But if we all fight togheter, we might have a chance!", "Saulc"); sleep(5000); kamibroadcast("At due time... The Secret of Mana will be revealed.", "Jesusalva"); sleep(5000); kamibroadcast("May the apocalypse begin: The revelation of this world!", "Jesusalva"); kamibroadcast("MOUBOOTAUR LEGENDS, FIFTH ACT - THE WORLD'S CURSE"); $FIRESOFSTEAM=10; $GAME_STORYLINE=4; $MANA_BLVL-=5; // Set level to 15~25 $MANA_JLVL-=5; // Set job level to 10 $MANA_BINT-=15; // Set min. int to 15 disablenpc "Andrei Sakar"; setnpcdisplay("Andrei Sakar#FoS290", "Elora#FoS290", NPC_HUMAN_FEMALE_NOOB); setnpcdisplay("Andrei Sakar#FoS298", "Elora#FoS298", NPC_HUMAN_FEMALE_NOOB); disablenpc "Elora"; } $@FIRESOFSTEAM_BOSS=0; $@FIRESOFSTEAM_DIFF=0; end; ////////////// Map Broadcast ////////////// OnMFAndreiMagic: .@stat=max(1, 5-((100-$@FIRESOFSTEAM_DIFF)/30)); dispbottom col(l("Enemies stunned!"), 3); dispbottom col(l("All Stats temporarily raised!"), 2); dispbottom l("Andrei Sakar used magic: %s", b(l("Triumph of the Eternals"))); sc_start(SC_INCALLSTATUS, .boostime, .@stat, 10000, SCFLAG_NOAVOID|SCFLAG_FIXEDTICK); end; OnMFMark: dispbottom col(l("On your marks..."), 1); end; OnMFScene: if (!isin("029-9", 20, 20, 60, 50)) warp "029-9", rand2(33,34), rand2(24,26); end; OnMFShake: sshake(); closeclientdialog; sleep2(1000); sshake(); sshake(); closeclientdialog; end; OnMFDispose: if (ispcdead() && getq(General_Narrator) >= 20) warp("025-2", 100, 27); end; OnMFSurvive: dispbottom l("Mission accomplished. Well played!"); getitem StrangeCoin, max(1, 1+(($@FIRESOFSTEAM_DIFF-100)/30)); if (!MOUBOOTAUR_WINNER) MOUBOOTAUR_WINNER=gettimetick(2); end; ////////////// Heartbeat ////////////// OnTimer15000: maptimer2("029-9", 10, "Book#FoS::OnMFDispose"); sleep(30); if (getmapusers("029-9") < 1) goto L_Defeat; // Main cycle if ($@FIRESOFSTEAM_BOSS == 1) { monster("029-9", 102, 47, "Assassin", Assassin, 1); } else if ($@FIRESOFSTEAM_BOSS == 2) { // Handle Moubootaur Magic // But only if .Support3 was defined (control variable) if (!.Support3) {initnpctimer; end;} // Spawn a fiend .@m=monster("029-9", 39, 36, "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("029-9", "Moubootaur : ##BAncient Magic: Bleeding", 0); areasc2("029-9", 40, 35, 20, 15000, SC_BLOODING, BL_PC, 1); break; case 2: mapannounce("029-9", "Moubootaur : ##BAncient Magic: Blind", 0); areasc2("029-9", 40, 35, 20, 15000, SC_BLIND, BL_PC, 1); break; case 3: mapannounce("029-9", "Moubootaur : ##BAncient Magic: Lag", 0); areasc2("029-9", 40, 35, 20, 15000, SC_CONFUSION, BL_PC, 1); break; case 4: mapannounce("029-9", "Moubootaur : ##BAncient Magic: Curse", 0); areasc2("029-9", 40, 35, 20, 15000, SC_CURSE, BL_PC, 1); break; case 5: mapannounce("029-9", "Moubootaur : ##BAncient Magic: Poison", 0); areasc2("029-9", 40, 35, 20, 15000, SC_POISON, BL_PC, 1); break; case 6: mapannounce("029-9", "Moubootaur : ##BAncient Magic: Sleep", 0); areasc2("029-9", 40, 35, 20, 15000, SC_SLEEP, BL_PC, 1); break; case 7: mapannounce("029-9", "Moubootaur : ##BAncient Magic: Deadly Poison", 0); areasc2("029-9", 40, 35, 20, 15000, SC_DPOISON, BL_PC, 1); break; case 8: mapannounce("029-9", "Moubootaur : ##BAncient Magic: Chilling", 0); areasc2("029-9", 40, 35, 20, 15000, SC_COLD, BL_PC, 1); break; case 9: mapannounce("029-9", "Moubootaur : ##BAncient Magic: Burning", 0); areasc2("029-9", 40, 35, 20, 15000, SC_BURNING, BL_PC, 1); break; case 10: mapannounce("029-9", "Moubootaur : ##BAncient Magic: Fear", 0); areasc2("029-9", 40, 35, 20, 15000, SC_FEAR, BL_PC, 1); break; case 11: mapannounce("029-9", "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("029-9", "Moubootaur : ##BAncient Magic: Disarm Homun", 0); areasc2("029-9", 40, 35, 20, 15000, SC_STUN, BL_HOM, 1); break; case 13: mapannounce("029-9", "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("029-9", "Moubootaur : ##BAncient Magic: Summon Reinforcement", 0); for (.@i=0;.@i <= rand2(4);.@i++) { .@m=monster("029-9", 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("029-9", "Moubootaur : ##BAncient Magic: Wizcat", 0); for (.@i=0;.@i <= 2+rand2(7);.@i++) { .@m=monster("029-9", 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("029-9", "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("029-9", "Moubootaur : ##BAncient Magic: Seal", 0); areasc2("029-9", 40, 35, 20, 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("029-9"); kamibroadcast("The players were defeated at Fires of Steam Showdown.", "Fires of Steam"); enablenpc "#029-9_97_49"; // Exit enablenpc "#029-9_91_26"; // To Moubootaur enablenpc "#029-9_103_48"; // To Storage enablenpc "#029-9_34_23"; // From Moubootaur enablenpc "#029-9_137_41"; // From Storage stopnpctimer; end; OnInit: .boostime = 900000; .subitime = 47000; .distance = 5; .sex = G_OTHER; end; }