// 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", Sagratha, 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));
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;
}