You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2297 lines
71 KiB
Plaintext

//===== rAthena Script =======================================
//= Temple of Demon God
//===== Description: =========================================
//= [Official Conversion]
//= Temple of Demon God Instance (part of episode 14.3)
//===== Changelogs: ==========================================
//= 1.0 First version. [Capuche]
//============================================================
moro_cav,41,73,4 script Guardian Nidhogg#epeom01 4_F_NYDHOG,{
if (checkquest(7605,PLAYTIME) == 2)
erasequest 7605;
if (getcharid(1) < 1) {
mes "[Nidhogg]";
mes "This place is too dangerous for you to explore alone.";
mes "Please form a party and come with your comrades.";
cutin "ep14_nyd01.bmp",2;
close3;
}
if (is_party_leader() == false) {
mes "[Nidhogg]";
mes "Only party leaders can control access to the Temple of the Demon God.";
mes "It's to ensure the safety of the entire Expedition. Please let your leader talk to me instead.";
cutin "ep14_nyd01.bmp",2;
close3;
}
switch( checkquest(7593,HUNTING) ) {
case -1:
mes "[Nidhogg]";
mes "I'm sorry, but you can't enter this place without approval from the Commander.";
mes "You must be on the quest to subjugate the Demon God to enter this place.";
cutin "ep14_nyd01.bmp",2;
next;
mes "[Nidhogg]";
mes "Please go to Commander Hiva Agip and receive the Demon God Subjugation quest.";
close3;
case 0:
case 1:
mes "[Nidhogg]";
mes "I've been waiting for you, hero-in-waiting. ";
mes "Let me guide you to the depth of the temple where Morroc lies in wait.";
cutin "ep14_nyd03.bmp",2;
next;
mes "[Nidhogg]";
mes "This tree is the spitting image of Yggdrasil.";
mes "I just hope Morroc is not intent on what I fear most.";
mes "Through this tree the door is opened.";
next;
mes "[Nidhogg]";
mes "I can sense that";
mes "this tree is generating mana at certain intervals as if it's breathing.";
mes "I'm going to catch a moment between its breaths to open up a path for you. Are you ready?";
cutin "ep14_nyd04.bmp",2;
next;
if (select( "Enter now.", "Do not enter." ) == 2) {
mes "[Nidhogg]";
mes "Okay.";
mes "I understand if you need time.";
mes "Take your time. I can wait as long as you want me to.";
cutin "ep14_nyd04.bmp",2;
close3;
}
if (instance_create("Temple of the Demon God") < 1) { // todo, custom text
mes "Party Name: " + getpartyname(.@party_id);
mes "Party Leader: " + strcharinfo(0);
mes "^0000ff" + .@md_name$ + " ^000000 - Reservation Failed.";
close;
}
if (isbegin_quest(7596) == 1)
erasequest 7596;
mes "[Nidhogg]";
mes "Just wait a while, and the entrance will open.";
mes "Enter through the tree.";
mes "Don't be scared, even though it's not an ordinary tree.";
cutin "ep14_nyd04.bmp",2;
close3;
case 2: // todo, custom text
mes "[Nidhogg]";
mes "You have eliminated the God of Despair!?";
mes "I can only say that his ambition was too big...";
mes "Always talk about creating a new world and becoming a god...";
cutin "ep14_nyd03.bmp",2;
next;
mes "[Nidhogg]";
mes "But seriously, he didn't create anything at all!";
mes "Abandon the body that used to be a demon, and the appearance after rebirth is just imitating the god...";
next;
mes "[Nidhogg]";
mes "The result is just what a human looks like,";
mes "He can't escape the so-called god frame,";
mes "...you can only say that you are eating bad luck!";
cutin "ep14_nyd02.bmp",2;
next;
cutin "ep14_nyd04.bmp",2;
mes "[Nidhogg]";
mes "I will give you approval for the quest, and you can report to the commander.";
mes "Thank you!";
setquest 7597;
erasequest 7593;
for ( .@quest = 7601; .@quest < 7605; .@quest++ ) {
if (isbegin_quest(.@quest))
erasequest .@quest;
}
if (isbegin_quest(7596))
erasequest 7596;
close3;
}
}
moro_cav,45,75,0 script Yggdrasil Lookalike#eom_gate CLEAR_NPC,{
switch( checkquest(7593,HUNTING) ) {
case -1:
mes "[Nidhogg]";
mes "I'm sorry, but you can't enter this place without approval from the Commander.";
mes "You must be on the quest to subjugate the Demon God to enter this place.";
cutin "ep14_nyd01.bmp",2;
next;
mes "[Nidhogg]";
mes "Please go to Commander Hiva Agip and receive the 'Demon God Subjugation' quest.";
close3;
case 0:
case 1:
mes "You touched the tree and felt a strange flow of mana.";
mes "Perhaps the flow of mana will guide you to the depth of the temple.";
next;
if (select( "Enter.", "Quit." ) == 2) {
mes "[Nidhogg]";
mes "Okay.";
mes "I understand if you need time.";
mes "Take your time. I can wait as long as you want me to.";
cutin "ep14_nyd04.bmp",2;
close3;
}
switch( instance_enter("Temple of the Demon God") ) {
case IE_NOMEMBER:
mes "[Nidhogg]";
mes "This place is too dangerous for you to explore alone.";
mes "Please form a party and come with your comrades.";
cutin "ep14_nyd01.bmp",2;
close3;
case IE_NOINSTANCE:
mes "[Nidhogg]";
mes "No entry permission has been issued under the name of your party.";
mes "Please let your party leader submit an entry request, and I'll open the gate to the temple.";
cutin "ep14_nyd01.bmp",2;
next;
mes "[Nidhogg]";
mes "You are to comply with the rules set by the Expedition.";
mes "It's for everyone's safety.";
close3;
case IE_OTHER: // todo, custom text
mes "[Nidhogg]";
mes "Um...how could this happen... the flow of magic power becomes unstable,";
mes "It hurts my brain, this is the gap I finally made...";
mes "may not be able to enter at the moment...";
cutin "ep14_nyd01.bmp",2;
close3;
case IE_OK:
mapannounce "moro_cav", "" + strcharinfo(0) + " of the party " + getpartyname( getcharid(1) ) + ", is entering Temple of the Demon God.",bc_map;
// warp "1@eom",101,16;
end;
}
case 2: // todo, custom text
mes "[Nidhogg]";
mes "You have eliminated the God of Despair!?";
mes "I can only say that his ambition was too big...";
mes "Always talk about creating a new world and becoming a god...";
cutin "ep14_nyd01.bmp",2;
next;
mes "[Nidhogg]";
mes "But seriously, he didn't create anything at all!";
mes "Abandon the body that used to be a demon, and the appearance after rebirth is just imitating the god...";
cutin "ep14_nyd02.bmp",2;
next;
mes "[Nidhogg]";
mes "The result is just what a human looks like,";
mes "He can't escape the so-called god frame,";
mes "...you can only say that you are eating bad luck!";
cutin "ep14_nyd03.bmp",2;
next;
cutin "ep14_nyd04.bmp",2;
mes "[Nidhogg]";
mes "I will give you approval for the quest, and you can report to the commander.";
mes "Thank you!";
setquest 7597;
erasequest 7593;
for ( .@quest = 7601; .@quest < 7605; .@quest++ ) {
if (isbegin_quest(.@quest))
erasequest .@quest;
}
if (isbegin_quest(7596))
erasequest 7596;
close3;
}
}
1@eom,1,1,0 script #demon_god_variables -1,{
end;
OnVariableReset:
'boss_id = 0;
'boss_hp = 0;
'bossx = 'bossy = 0;
'boss_phase = 0;
'icestunami = false;
'spawn = false;
'miniboss_id[0] = 'miniboss_id[1] = 0;
'combo_is_allowed = false;
'flowing_lava_deactivate[0] = 'flowing_lava_deactivate[1] = false;
end;
OnMyMobDead:
if (!playerattached()) // shouldn't happen
end;
.@mob_id = killedrid;
sleep 5000;
monster 'map_eom$,0,0,"--ja--", .@mob_id,1, instance_npcname("#demon_god_variables") + "::OnMyMobDead";
end;
OnInstanceInit:
donpcevent instance_npcname("#demon_god_variables") + "::OnVariableReset";
'map_eom$ = instance_mapname("1@eom");
'step = 0;
'inject_soul = 0;
// Entrance
disablenpc instance_npcname("#door_mobmaster");
disablenpc instance_npcname("Empty Soul Globe#ahat01");
disablenpc instance_npcname("Empty Soul Globe#shnaim01");
disablenpc instance_npcname("Filled Soul Globe#ahat02");
disablenpc instance_npcname("Filled Soul Globe#shnaim02");
disablenpc instance_npcname("#gate_to_center");
// Center to Ice
disablenpc instance_npcname("Strange Boy#mockid01");
disablenpc instance_npcname("#gate_to_ice");
disablenpc instance_npcname("Loki#eomloki01");
disablenpc instance_npcname("Nidhogg#eomnyd01");
disablenpc instance_npcname("Brinaranea#brinpc01");
disablenpc instance_npcname("#ice_hpcheck");
disablenpc instance_npcname("Nidhogg#eomnyd02");
disablenpc instance_npcname("#ice_to_center");
// Center to Fire
disablenpc instance_npcname("Morroc#mockid02");
disablenpc instance_npcname("#gate_to_fire");
disablenpc instance_npcname("#fire_event01");
disablenpc instance_npcname("#skollmaster");
disablenpc instance_npcname("#loco_call");
disablenpc instance_npcname("#fire_combo");
disablenpc instance_npcname("Flowing Lava#lavapond01");
disablenpc instance_npcname("Flowing Lava#lavapond02");
disablenpc instance_npcname("Hardened Lava#lavaseal01");
disablenpc instance_npcname("Hardened Lava#lavaseal02");
disablenpc instance_npcname("#lavazone11");
disablenpc instance_npcname("#lavazone12");
disablenpc instance_npcname("#lavazone21");
disablenpc instance_npcname("#lavazone22");
disablenpc instance_npcname("Nidhogg#eomnyd03");
disablenpc instance_npcname("#fire_to_center");
// Center to Last
disablenpc instance_npcname("#gate_to_last");
disablenpc instance_npcname("Strange Young Man#mocadt01");
disablenpc instance_npcname("#moc_master");
disablenpc instance_npcname("#despair_god_main");
disablenpc instance_npcname("#mk_hpcheck");
disablenpc instance_npcname("#moc_origin");
disablenpc instance_npcname("#morocc_god");
disablenpc instance_npcname("#despair_main");
disablenpc instance_npcname("Nidhogg#eomnyd04");
// mimic permanent spawn
.@event$ = instance_npcname("#demon_god_variables") + "::OnMyMobDead";
monster 'map_eom$,0,0,"--ja--", 3101,3, .@event$; // MM_MANA_WHITE
monster 'map_eom$,0,0,"--ja--", 3102,3, .@event$; // MM_MANA_RED
monster 'map_eom$,0,0,"--ja--", 3103,3, .@event$; // MM_MANA_YELLOW
end;
}
1@eom,101,43,3 script Demon God's Apostle Aha#ahat 4_HUMAN_GERUTOO,{
cutin "ep13_ahat_" + (Sex ? "f" : "m") + ".bmp",2; // note: cutin f for male, m for female
// if (is_party_leader() == false || checkquest(7593,HUNTING) != 1 || isbegin_quest(7596) != 0) { // quest to 'var for reload
if (is_party_leader() == false || checkquest(7593,HUNTING) != 1 || 'step != 0) {
mes "[Ahat]";
mes "Welcome";
mes "to the Temple of the Demon God.";
mes "It's my honor to be your host today.";
close3;
}
.@ahat$ = instance_npcname("Demon God's Apostle Aha#ahat");
mes "[Ahat]";
mes "So, you've come.";
mes "Gosh, you're so persistent.";
mes "Hah hah, are you surprised to see me here?";
npctalk "Ahat: So, you've come.", .@ahat$;
next;
mes "[Ahat]";
mes "Didn't you expect this at all?";
mes "Why don't I introduce myself officially?";
mes "I'm Ahat, the first servant of the Demon God.";
npctalk "Ahat: Why don't I introduce myself officially? I'm Ahat, the first servant of the Demon God.", .@ahat$;
next;
mes "[Ahat]";
mes "Well, well, maybe I forfeit my life today.";
mes "Don't look at me like that. Everything is as planned.";
npctalk "Ahat: Well, well, maybe I forfeit my life today. Don't look at me like that. Everything is as planned.", .@ahat$;
next;
mes "[Ahat]";
mes "My master wishes for Shnaim and I to put you to the test.";
mes "To see if you deserve to be our guests.";
npctalk "Ahat: My master wishes for Shnaim and I to put you to the test. To see if you deserve to be our guests.", .@ahat$;
next;
mes "[Ahat]";
mes "If you think you've come this far on your own,";
mes "you're mistaken.";
npctalk "Ahat: If you think you've come this far on your own, you're mistaken.", .@ahat$;
next;
mes "[Ahat]";
mes "Everything is as the Master has planned.";
mes "For now, let's see if you can open this door.";
npctalk "Ahat: Everything is as the Master has planned. For now, let's see if you can open this door.", .@ahat$;
if (isbegin_quest(7596) == 0)
setquest 7596;
if ('step != 0)
close3;
'step = 1;
close2;
cutin "",255;
setpcblock PCBLOCK_NPC, true;
sleep2 1000;
setpcblock PCBLOCK_NPC, false;
disablenpc .@ahat$;
warpparty 'map_eom$,101,16,getcharid(1),'map_eom$,2,2;
donpcevent instance_npcname("#door_mobmaster") + "::OnStart";
end;
}
1@eom,1,1,0 script #door_mobmaster CLEAR_NPC,{
end;
OnStart:
'apostle = 10;
enablenpc instance_npcname("#door_mobmaster");
.@label$ = instance_npcname("#door_mobmaster") + "::OnMyMobDead";
monster 'map_eom$,102,30, "Demon God's Apostle Ahat",3105,1, .@label$; // MM_GB_MOROCC_1
setunitdata $@mobid[0], UMOB_HP, 5000000;
monster 'map_eom$, 98,30, "Demon God Fragment",1918,1, .@label$;
monster 'map_eom$,100,30, "Demon God Fragment",1918,1, .@label$;
monster 'map_eom$,104,30, "Demon God Fragment",1918,1, .@label$;
monster 'map_eom$,106,30, "Demon God Fragment",1918,1, .@label$;
sleep 2000;
mapannounce 'map_eom$, "Eliminate the Demon God's Apostles, Ahat and Shnaim, and collect their souls.", bc_map, 0x00ff00;
monster 'map_eom$,102,40, "Demon God's Apostle Shnaim",3106,1, .@label$; // MM_GB_MOROCC_4
setunitdata $@mobid[0], UMOB_HP, 5000000;
monster 'map_eom$, 98,40, "Demon God Fragment",1921,1, .@label$;
monster 'map_eom$,100,40, "Demon God Fragment",1921,1, .@label$;
monster 'map_eom$,104,40, "Demon God Fragment",1921,1, .@label$;
monster 'map_eom$,106,40, "Demon God Fragment",1921,1, .@label$;
sleep 3000;
mapannounce 'map_eom$, "The Apostles' souls are the key to opening the Temple of the Demon God.", bc_map, 0x00ff00;
end;
OnMyMobDead:
'apostle -= 1;
if ('apostle == 0) {
'step = 2;
disablenpc instance_npcname("#door_mobmaster");
enablenpc instance_npcname("Empty Soul Globe#shnaim01");
enablenpc instance_npcname("Empty Soul Globe#ahat01");
mapannounce 'map_eom$, "Activated the Soul Globes used to open the Temple of the Demon God.", bc_map, 0x00ff00;
}
end;
}
1@eom,104,56,0 script Empty Soul Globe#ahat01 CLEAR_NPC,{
if ('step == 2) {
if (strnpcinfo(2) == "ahat01")
callsub( S_Globe, 1, "Ahat", 6713, "ahat02" );
else
callsub( S_Globe, 2, "Shnaim", 6714, "shnaim02" );
}
end;
S_Globe:
.@bit = getarg(0);
.@item_id = getarg(2);
.@visible_npc_name$ = getarg(1);
.@hidden_npc_name$ = getarg(3);
disable_items;
if (is_party_leader() == false || isbegin_quest(7596) != 1 || 'step != 2) {
mes "Only party leaders can perform this event.";
close;
}
if (countitem(.@item_id) < 1) {
mes "If you want to activate the soul globes, you need Shnaim's soul.";
close;
}
mes "Inject " + .@visible_npc_name$ + "'s soul into the empty soul globe.";
next;
specialeffect EF_SPHERE;
progressbar "000000",10;
if (!('inject_soul & .@bit) && countitem(.@item_id) > 0) {
'inject_soul |= .@bit;
delitem .@item_id,1;
specialeffect EF_ENTRY;
disablenpc instance_npcname( strnpcinfo(0) );
enablenpc instance_npcname("Filled Soul Globe#" + .@hidden_npc_name$);
specialeffect EF_ENTRY,AREA, instance_npcname("Filled Soul Globe#" + .@hidden_npc_name$);
specialeffect EF_LEVEL99_3,AREA, instance_npcname("Filled Soul Globe#" + .@hidden_npc_name$);
mes "Successfully activated " + .@visible_npc_name$ + "'s soul globe.";
if ('inject_soul == 3 && 'step == 2) {
'step = 3;
if (isbegin_quest(7596) == 1)
erasequest 7596;// Qualifications of the Guests
enablenpc instance_npcname("#gate_to_center");
enablenpc instance_npcname("Strange Boy#mockid01");
specialeffect EF_MAPPILLAR,AREA, instance_npcname("#gate_to_center");
specialeffect EF_LEVEL99_3,AREA, instance_npcname("#gate_to_center");
}
}
close;
}
1@eom,98,56,0 duplicate(Empty Soul Globe#ahat01) Empty Soul Globe#shnaim01 CLEAR_NPC
1@eom,104,56,0 duplicate(dummy_npc) Filled Soul Globe#ahat02 CLEAR_NPC
1@eom,98,56,0 duplicate(dummy_npc) Filled Soul Globe#shnaim02 CLEAR_NPC
1@eom,101,58,0 script #gate_to_center WARPNPC,1,1,{
end;
OnTouch_:
if (isbegin_quest(7596) == 1)
erasequest 7596;
warp 'map_eom$,98,115;
end;
}
1@eom,100,122,3 script Strange Boy#mockid01 4_F_MOCBOY,{
if ('step != 3)
end;
if (is_party_leader() == false || checkquest(7593,HUNTING) != 1) {
mes "[Boy]";
mes "You insignificant creature.";
mes "How dare you lay a hand on a god-in-waiting?!";
close;
}
cutin "morocc_kid.bmp",2;
mes "[Boy]";
mes "First, let me applaud you for coming this far.";
mes "You've been a good pawn.";
next;
select("What are you talking about?");
unittalk getcharid(3), "" + strcharinfo(0) + " : What are you talking about?";
mes "[Boy]";
mes "I've been waiting for this day.";
mes "To get out of that corner of the demon world and rule the entire universe.";
npctalk "Boy: I've been waiting for this day. To get out of that corner of the demon world and rule the entire universe.";
sleep2 2000;
next;
mes "[Boy]";
mes "To achieve that, I realized I must abandon my old body.";
mes "So I died--well, I let you kill me.";
npctalk "Boy: To achieve that, I realized I must abandon my old body. So I died--well, I let you kill me.";
sleep2 2000;
next;
mes "[Boy]";
mes "Death is an inevitable step to take before rebirth.";
mes "So I'm reborn--again, you brought me back.";
npctalk "Boy: Death is an inevitable step to take before rebirth. So I've been reborn--again, you've brought me back.";
sleep2 2000;
next;
mes "[Boy]";
mes "All this has been arranged so that I could be reborn as God.";
npctalk "Boy: All this has been arranged so that I could be reborn as God.";
sleep2 2000;
next;
mes "[Morroc]";
mes "That's right, you foolish humans!";
mes "I died once, so that I could circle around the world and embrace it in my arms.";
mes "I've been reborn to engulf this world.";
npctalk "Morocc: I died once, so that I could circle around the world and embrace it in my arms. I've been reborn to engulf this world.";
sleep2 2000;
next;
mes "[Morroc]";
mes "I'll create a new world and become its Creator.";
mes "Let me ask you, the first creatures that have stepped into my newborn land.";
npctalk "Morocc: I'll create a new world and become its Creator. Let me ask you, the first creatures that have stepped into my newborn land.";
sleep2 2000;
next;
mes "[Morroc]";
mes "How'd you like to follow me and watch the birth of a new world?";
npctalk "Morocc: How'd you like to follow me and watch the birth of a new world?";
close2;
setpcblock PCBLOCK_NPC, true;
cutin "",255;
sleep2 1000;
.@loki$ = instance_npcname("Loki#eomloki01");
.@nidhogg$ = instance_npcname("Nidhogg#eomnyd01");
enablenpc .@loki$;
enablenpc .@nidhogg$;
npctalk "Loki: Enough with your nonsense. Just say you like destroying things.", .@loki$;
sleep2 5000;
npctalk "Loki: Create a new world and become its Creator? If this is the new world you're talking about, then I'm disappointed.", .@loki$;
sleep2 5000;
npctalk "Loki: Even if you burn your body, your power is not as potent as that of Ymir of the Genesis.", .@loki$;
sleep2 5000;
npctalk "Loki: Just the fact that you had to steal Yggdrasil shows your lack of creativity.", .@loki$;
sleep2 5000;
npctalk "Loki: Take a good look at yourself. You're delusional if you think you look like a creator of any kind.", .@loki$;
sleep2 5000;
npctalk "Nidhogg: I second that. You're unnecessary to this world. You don't belong here.", .@nidhogg$;
sleep2 4000;
npctalk "Nidhogg: Even Yggdrasil denies your existence!", .@nidhogg$;
sleep2 4000;
npctalk "Nidhogg: As the Guardian of Yggdrasil, I have to remove you from this world.", .@nidhogg$;
sleep2 2000;
npctalk "Morroc: Pah!";
sleep2 2000;
npctalk "Morroc: Mortal, you must have a death wish to come at me like this.";
sleep2 3000;
npctalk "Morroc: I'll take your flesh and blood as housewarming gifts for my new world.";
sleep2 3000;
npctalk "Morroc: Have you beheld the darkness of the Genesis?";
sleep2 3000;
npctalk "Morroc: Have you beheld frost, the beginning of life?";
sleep2 6000;
npctalk "Morroc: Behold the Frost of Audhumla I brought back to life, into this world.";
sleep2 3000;
specialeffect EF_ENTRY;
if ('step == 3) {
'step = 4;
disablenpc instance_npcname("Strange Boy#mockid01");
donpcevent instance_npcname("#gate_to_ice") + "::OnEnable";
enablenpc instance_npcname("Nidhogg#eomnyd01");
enablenpc instance_npcname("Brinaranea#brinpc01");
npctalk "Loki: Are you running?", .@loki$;
sleep2 2000;
disablenpc .@loki$;
}
setpcblock PCBLOCK_NPC, false;
end;
}
1@eom,91,120,0 script #gate_to_ice WARPNPC,1,1,{
end;
OnEnable:
.@gate_to_ice = instance_npcname("#gate_to_ice");
enablenpc instance_npcname("#gate_to_ice");
specialeffect EF_ICECRASH;
sleep 1000;
specialeffect EF_MAPPILLAR;
end;
OnTouch_:
if (isbegin_quest(7601) == 0 && isbegin_quest(7602) == 0)
setquest 7601;
warp 'map_eom$,61,88;
end;
}
1@eom,95,122,5 script Loki#eomloki01 4_M_ROKI2,{
mes "[Loki]";
mes "You're helpless.";
mes "And disgusting.";
close;
}
1@eom,94,120,5 script Nidhogg#eomnyd01 4_F_NYDHOG,2,2,{
if ('step < 4 || is_party_leader() == false)
end;
if (getmercinfo(0) > 0) {
mes "[Nidhogg]";
mes "You're with a mercenary.";
mes "Could you dismiss your current mercenary and hire me instead?";
close;
}
switch( checkquest(7605,PLAYTIME) ) {
case -1:
break;
case 0:
case 1:
mes "[Nidhogg]";
mes "I already assisted you once.";
mes "Please be careful!";
close;
case 2:
erasequest 7605;
break;
}
setnpcdisplay instance_npcname("Nidhogg#eomnyd01"), 3087;
mes "[Nidhogg]";
mes "" + strcharinfo(0) + ",";
mes "allow me to aid you in this battle.";
npctalk "Nidhogg: Allow me to aid you in this battle.";
specialeffect EF_SPHERE;
next;
mes "[Nidhogg]";
mes "My duty as the guardian isn't over yet.";
npctalk "Nidhogg: My duty as the guardian isn't over yet.";
next;
mercenary_create 3087,1800000;// M_NYDHOG
mes "^4d4dffGuardian Nidhogg has joined your party.^000000";
setquest 7605;// Guardian's Blessing
disablenpc instance_npcname("Nidhogg#eomnyd01");
close;
OnTouch:
if ('step >= 4 && is_party_leader())
npctalk "Nidhogg: Wait!";
end;
}
// Center -> Ice
1@eom,48,88,0 script Cold Mana Crystalline#eom01 4_ENERGY_BLUE,{
getitem 22566,1;// Frost_Crystal
specialeffect EF_LEVEL99_4;
disablenpc instance_npcname( strnpcinfo(0) );
end;
}
1@eom,51,103,0 duplicate(Cold Mana Crystalline#eom01) Cold Mana Crystalline#eom02 4_ENERGY_BLUE
1@eom,24,109,0 duplicate(Cold Mana Crystalline#eom01) Cold Mana Crystalline#eom03 4_ENERGY_BLUE
1@eom,26,128,0 duplicate(Cold Mana Crystalline#eom01) Cold Mana Crystalline#eom04 4_ENERGY_BLUE
1@eom,40,140,0 duplicate(Cold Mana Crystalline#eom01) Cold Mana Crystalline#eom05 4_ENERGY_BLUE
1@eom,38,139,0 duplicate(Cold Mana Crystalline#eom01) Cold Mana Crystalline#eom06 4_ENERGY_BLUE
1@eom,51,149,0 duplicate(Cold Mana Crystalline#eom01) Cold Mana Crystalline#eom07 4_ENERGY_BLUE
1@eom,49,148,0 duplicate(Cold Mana Crystalline#eom01) Cold Mana Crystalline#eom08 4_ENERGY_BLUE
1@eom,61,88,0 script #icemob01 HIDDEN_WARP_NPC,2,1,{
end;
OnTouch_:
if ('step >= 4) {
disablenpc instance_npcname("#icemob01");
areamonster 'map_eom$,40,93,48,101, "Frost Spider",3088,4; // MM_BRINARANEA_BABY
}
end;
}
1@eom,22,116,3 script Frost Spider#icemob02 3088,3,3,{
end;
OnTouch_:
if ('step >= 4) {
disablenpc instance_npcname("Frost Spider#icemob02");
monster 'map_eom$,22,116, "Frost Spider",3088,1; // MM_BRINARANEA_BABY
areamonster 'map_eom$,22,113,28,119, "Frost Spider",3088,3;
}
end;
}
1@eom,53,134,3 script Frost Spider#icemob03 3088,3,3,{
end;
OnTouch_:
if ('step >= 4) {
disablenpc instance_npcname("Frost Spider#icemob03");
monster 'map_eom$,53,134, "Frost Spider",3088,1; // MM_BRINARANEA_BABY
areamonster 'map_eom$,47,133,53,139, "Frost Spider",3088,3;
}
end;
}
1@eom,38,129,3 script Brinaranea#brinpc01 3091,10,10,{
end;
OnTouch_:
if ('step == 4) {
'step = 5;
npctalk "Brinaranea: Ooh, food walks into my lair.";
initnpctimer;
}
end;
OnTimer3000:
npctalk "Brinaranea: My children will have a feast tonight. Ho ho ho!";
disablenpc instance_npcname("Brinaranea#brinpc01");
donpcevent instance_npcname("#ice_hpcheck") + "::OnSpawn";
end;
OnTimer5000:
stopnpctimer;
unittalk 'boss_id, "Time to cook! *Giggle*";
donpcevent instance_npcname("#ice_combo") + "::OnStart";
donpcevent instance_npcname("#ice_hpcheck") + "::OnStart";
end;
}
1@eom,2,3,0 script #ice_hpcheck CLEAR_NPC,{
end;
OnSpawn:
enablenpc instance_npcname("#ice_hpcheck");
monster 'map_eom$,38,123, "Brinaranea",3091,1, instance_npcname("#ice_hpcheck") + "::OnMyMobDead"; // MM_BRINARANEA
'boss_id = $@mobid[0];
getunitdata 'boss_id, .@data;
'boss_hp = .@data[UMOB_MAXHP];
unitskilluseid 'boss_id, "NPC_WIDEFREEZE",5;
end;
OnStart:
initnpctimer;
end;
OnTimer3000:
getunitdata 'boss_id, .@data;
.@hp = .@data[UMOB_HP];
if ('boss_hp < .@hp) {
'boss_hp = .@hp;
initnpctimer;
end;
}
if (('boss_hp - .@hp) > 2000000) {
'boss_hp = .@hp;
donpcevent instance_npcname("#super_heal") + "::OnStart";
initnpctimer;
end;
}
'boss_hp = .@hp;
if (.@hp > 69500000 && .@hp < 70000000) {
unittalk 'boss_id, "Come out, my children. An exquisite feast has delivered itself to us!";
donpcevent instance_npcname("#ice_hpcheck") + "::OnCallBaby";
}
else if (.@hp > 59500000 && .@hp < 60000000) {
unittalk 'boss_id, "Children, it's time for dinner!";
donpcevent instance_npcname("#ice_hpcheck") + "::OnCallBaby";
}
else if (.@hp > 49500000 && .@hp < 50000000) {
unittalk 'boss_id, "Have all of you fed yet? Come out now!";
donpcevent instance_npcname("#ice_hpcheck") + "::OnCallBaby";
}
else if (.@hp < 22200000 && 'icestunami == false)
donpcevent instance_npcname("#icestunami") + "::OnStart";
initnpctimer;
end;
OnMyMobDead:
donpcevent instance_npcname("#ice_hpcheck") + "::OnEnd";
disablenpc instance_npcname("Brinaranea#brinpc01");
stopnpctimer instance_npcname("#ice_combo");
stopnpctimer instance_npcname("#brinaranea_event_1");
stopnpctimer instance_npcname("#brinaranea_event_2");
stopnpctimer instance_npcname("#brinaranea_event_3");
stopnpctimer instance_npcname("#brinaranea_event_4");
stopnpctimer instance_npcname("Brinaranea#brinpc01");
stopnpctimer instance_npcname("#super_heal");
// stopnpctimer instance_npcname("#icestunami");
enablenpc instance_npcname("Nidhogg#eomnyd02");
enablenpc instance_npcname("#ice_to_center");
enablenpc instance_npcname("Morroc#mockid02");
mapannounce 'map_eom$, "Nidhogg: Brinaranea's influence has dissipated, and a new warp gate has appeared.", bc_map, 0x00ff00;
'step = 6;
donpcevent instance_npcname("#demon_god_variables") + "::OnVariableReset";
end;
OnEnd:
stopnpctimer;
disablenpc instance_npcname("#ice_hpcheck");
killmonster 'map_eom$, instance_npcname("#ice_hpcheck") + "::OnMyMobDead";
end;
OnCallBaby:
sleep 500;
if ('boss_id == 0)
end;
getunitdata 'boss_id, .@data;
'boss_hp = .@data[UMOB_HP];
killmonster 'map_eom$, instance_npcname("#ice_hpcheck") + "::OnMyMobDead";
monster 'map_eom$,38,123, "Brinaranea",3091,1, instance_npcname("#ice_hpcheck") + "::OnMyMobDead"; // MM_BRINARANEA
'boss_id = $@mobid[0];
setunitdata 'boss_id, UMOB_HP, 'boss_hp;
if ('spawn == true)
end;
'spawn = true;
unitskilluseid 'boss_id, "NPC_WIDEFREEZE",5;
sleep 1000;
if ('boss_id == 0)
end;
getunitdata 'boss_id, .@data;
areamonster 'map_eom$,(.@data[UMOB_X]-5),(.@data[UMOB_Y]-5),(.@data[UMOB_X]+5),(.@data[UMOB_Y]+5), " ",3088,5; // MM_BRINARANEA_BABY
sleep 15000;
'spawn = false;
end;
OnTest_hp:
if ('boss_id && mobcount( 'map_eom$, instance_npcname("#ice_hpcheck") + "::OnMyMobDead" ) > 0)
setunitdata 'boss_id, UMOB_HP, 2000000;
end;
}
1@eom,2,6,0 script #ice_combo CLEAR_NPC,{
end;
OnStart:
initnpctimer;
end;
OnTimer10000:
donpcevent instance_npcname("#brinaranea_event_" + rand(1,4)) + "::OnStart";
stopnpctimer;
end;
}
1@eom,1,1,0 script #brinaranea_event_1 -1,{
end;
OnStart:
initnpctimer;
unittalk 'boss_id, "A show time!";
end;
OnTimer1000:
unitskilluseid 'boss_id, "NPC_WIDEFREEZE",5;
end;
OnTimer2500:
getunitdata 'boss_id, .@data;
'bossx = .@data[UMOB_X];
'bossy = .@data[UMOB_Y];
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20,('bossx-3),('bossy+3),-50;
end;
OnTimer4000:
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20,('bossx+3),('bossy+3),-50;
end;
OnTimer5500:
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20,('bossx+3),('bossy-3),-50;
end;
OnTimer7000:
stopnpctimer;
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20,('bossx-3),('bossy-3),-50;
donpcevent instance_npcname("#ice_combo") + "::OnStart";
end;
}
1@eom,1,1,0 script #brinaranea_event_2 -1,{
end;
OnStart:
initnpctimer;
unittalk 'boss_id, "Ooh, game. It looks delicious!";
end;
OnTimer2000:
unitskilluseid 'boss_id, "NPC_WIDEFREEZE",5;
end;
OnTimer4000:
stopnpctimer;
getunitdata 'boss_id, .@data;
if (.@data[UMOB_TARGETID] > 0)
if (getunittype(.@data[UMOB_TARGETID]) == BL_PC)
unitskilluseid 'boss_id,"WZ_JUPITEL",28, .@data[UMOB_TARGETID], -50;
donpcevent instance_npcname("#ice_combo") + "::OnStart";
end;
}
1@eom,1,1,0 script #brinaranea_event_3 -1,{
end;
OnStart:
initnpctimer;
unittalk 'boss_id, "Wanna play?";
end;
OnTimer1000:
unitskilluseid 'boss_id, "NPC_WIDEFREEZE",5;
end;
OnTimer2500:
getunitdata 'boss_id, .@data;
'bossx = .@data[UMOB_X];
'bossy = .@data[UMOB_Y];
unitskillusepos 'boss_id,"WZ_VERMILION",5,'bossx,'bossy,-50;
end;
OnTimer3500:
callsub( S_Skill,3 );
end;
OnTimer4500:
callsub( S_Skill,4 );
end;
OnTimer5500:
callsub( S_Skill,5 );
end;
OnTimer6500:
callsub( S_Skill,6 );
end;
OnTimer7500:
callsub( S_Skill,7 );
stopnpctimer;
donpcevent instance_npcname("#ice_combo") + "::OnStart";
end;
S_Skill:
.@d = getarg(0);
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20, ('bossx - .@d), ('bossy + .@d),-50;
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20, ('bossx + .@d), ('bossy + .@d),-50;
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20, ('bossx + .@d), ('bossy - .@d),-50;
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20, ('bossx - .@d), ('bossy - .@d),-50;
return;
}
1@eom,1,1,0 script #brinaranea_event_4 -1,{
end;
OnStart:
initnpctimer;
unittalk 'boss_id, "Hah hah...";
end;
OnTimer1000:
unitskilluseid 'boss_id,"AL_HEAL",11;
end;
OnTimer2000:
unitskilluseid 'boss_id,"AL_HEAL",11;
end;
OnTimer3000:
stopnpctimer;
unitskilluseid 'boss_id,"AL_HEAL",11;
getunitdata 'boss_id, .@data;
'boss_hp = .@data[UMOB_HP];
donpcevent instance_npcname("#ice_combo") + "::OnStart";
end;
}
1@eom,1,1,0 script #super_heal -1,{
end;
OnStart:
initnpctimer;
unittalk 'boss_id, "You're annoying! Don't mess with the Frost of Audhumla!";
unitskilluseid 'boss_id, "NPC_ALLHEAL",1;
getunitdata 'boss_id, .@data;
'boss_hp = .@data[UMOB_HP];
end;
OnTimer2000:
stopnpctimer;
mapannounce 'map_eom$, "Nidhogg: No... She's regenerated herself perfectly.", bc_map, 0x00ff00;
end;
}
1@eom,2,4,0 script #icestunami CLEAR_NPC,{
end;
OnStart:
'icestunami = true;
initnpctimer;
unittalk 'boss_id, "You hellhounds, can you take this too?";
getunitdata 'boss_id, .@data;
'x_icemine = .@data[UMOB_X];
'y_icemine = .@data[UMOB_Y];
callsub( S_Spawn,6 );
OnTimer2000: callsub( S_Spawn,3 );
OnTimer4000: callsub( S_Spawn,0 );
OnTimer6000: callsub( S_Spawn,-3 );
OnTimer8000: callsub( S_Spawn,-6 );
OnTimer13000:
killmonster 'map_eom$, instance_npcname("#icestunami") + "::OnMobDead";
end;
OnTimer23000:
'icestunami = false;
'x_icemine = 0;
'y_icemine = 0;
stopnpctimer;
end;
S_Spawn:
.@y = 'y_icemine + getarg(0);
.@label$ = instance_npcname("#icestunami") + "::OnMobDead";
monster 'map_eom$,('x_icemine-6),.@y," ",2943,1, .@label$;// MM_ICE_MINE
monster 'map_eom$,('x_icemine-3),.@y," ",2943,1, .@label$;
monster 'map_eom$, ('x_icemine),.@y," ",2943,1, .@label$;
monster 'map_eom$,('x_icemine+3),.@y," ",2943,1, .@label$;
monster 'map_eom$,('x_icemine+6),.@y," ",2943,1, .@label$;
end;
OnMobDead:
end;
}
1@eom,59,147,3 script Nidhogg#eomnyd02 4_F_NYDHOG,{
if ('step < 6)
end;
if (isbegin_quest(7602) == 0 && checkquest(7601,HUNTING) == 2) {
mes "[Nidhogg]";
mes "That was a tough battle.";
mes "This may not be good enough, but I hope it'll help your growth.";
next;
mes "^4d4dffGuardian Nidhogg has rewarded you with a large amount of EXP for defeating Brinaranea.^000000";
erasequest 7601;// Temple of the Demon God Phase 1
setquest 7602;// Temple of the Demon God Phase 1 Completed
getexp 1000000,500000;
close;
}
mes "[Nidhogg]";
mes "Can this dreadful place compete with the Frost of the Genesis?";
mes "I can't say.";
mes "He's created nothing on his own. How did he convince himself to think that he could be a creator?";
close;
}
1@eom,67,149,0 script #ice_to_center WARPNPC,1,1,{
end;
OnTouch_:
if (isbegin_quest(7602) == 0 && checkquest(7601,HUNTING) == 2) {
mes "[Nidhogg]";
mes "That was a tough battle.";
mes "This may not be good enough, but I hope it'll help your growth.";
next;
mes "^4d4dffGuardian Nidhogg has rewarded you with a large amount of EXP for defeating Brinaranea.^000000";
setquest 7602;
erasequest 7601;
getexp 1000000,500000;
close;
}
warp 'map_eom$,98,115;
end;
}
// Center to Fire
1@eom,100,122,3 script Morroc#mockid02 4_F_MOCBOY,{
if ('step != 6 || is_party_leader() == false || checkquest(7593,HUNTING) != 1)
end;
cutin "morocc_kid.bmp",2;
mes "[Morroc]";
mes "You're good.";
mes "Can you take on the wolf that swallowed the sun?";
npctalk "Morroc: You're good. Can you taken on the wolf that swallowed the sun?";
next;
mes "[Morroc]";
mes "If you can't handle him, then you can't handle a god now, can you?";
npctalk "Morroc: If you can't handle him, then you can't handle a god now, can you?";
next;
mes "[Morroc]";
mes "I'll watch you. Mwa hah hah!";
npctalk "Morroc: I'll watch you. Mwa hah hah!";
close2;
cutin "",255;
if ('step == 6) {
'step = 7;
setpcblock PCBLOCK_NPC, true;
enablenpc instance_npcname("#fire_event01");
donpcevent instance_npcname("#gate_to_fire") + "::OnEnable";
sleep2 2000;
setpcblock PCBLOCK_NPC, false;
specialeffect EF_ENTRY;
cloakonnpc instance_npcname("Morroc#mockid02"); // cloakonnpc to properly display the previous effect
}
end;
}
1@eom,104,120,0 script #gate_to_fire WARPNPC,1,1,{
end;
OnTouch_:
if (isbegin_quest(7603) == 0 && isbegin_quest(7604) == 0)
setquest 7603;
warp 'map_eom$,132,93;
end;
OnEnable:
enablenpc instance_npcname("#gate_to_fire");
specialeffect EF_METEORSTORM;
sleep 1000;
specialeffect EF_MAPPILLAR;
end;
}
1@eom,132,93,0 script #fire_event01 HIDDEN_WARP_NPC,1,1,{
end;
OnTouch_:
disablenpc instance_npcname("#fire_event01");
sleep 1000;
mapannounce 'map_eom$, "Grr...", bc_map, 0xff0000;
sleep 3000;
mapannounce 'map_eom$, "I smell human... Grr...", bc_map, 0xff0000;
monster 'map_eom$,139,101, "Frenzied Kasa",3089,1; // MM_LOCO_KASA
sleep 1000;
monster 'map_eom$,142, 98, "Frenzied Kasa",3089,1;
sleep 1000;
monster 'map_eom$,144, 92, "Frenzied Kasa",3089,1;
sleep 3000;
monster 'map_eom$,145,104, "Frenzied Kasa",3089,1;
sleep 1000;
monster 'map_eom$,148, 98, "Frenzied Kasa",3089,1;
sleep 1000;
monster 'map_eom$,150, 93, "Frenzied Kasa",3089,1;
sleep 3000;
monster 'map_eom$,151,106, "Frenzied Kasa",3089,1;
sleep 1000;
monster 'map_eom$,153,100, "Frenzied Kasa",3089,1;
sleep 1000;
monster 'map_eom$,156, 95, "Frenzied Kasa",3089,1;
mapannounce 'map_eom$, "...BURN!", bc_map, 0xff0000;
donpcevent instance_npcname("#skollmaster") + "::OnStart";
end;
}
1@eom,3,1,0 script #skollmaster CLEAR_NPC,{
end;
OnStart:
enablenpc instance_npcname("#skollmaster");
enablenpc instance_npcname("Flowing Lava#lavapond01");
enablenpc instance_npcname("Flowing Lava#lavapond02");
enablenpc instance_npcname("#lavazone11");
enablenpc instance_npcname("#lavazone12");
enablenpc instance_npcname("#lavazone21");
enablenpc instance_npcname("#lavazone22");
'flowing_lava_deactivate[0] = 'flowing_lava_deactivate[1] = false;
monster 'map_eom$,148,98, "Muspellskoll",3092,1, instance_npcname("#skollmaster") + "::OnMobDead"; // MM_MUSPELLSKOLL
'boss_id = $@mobid[0];
getunitdata 'boss_id, .@data;
'boss_hp = .@data[UMOB_MAXHP];
sleep 1000;
if ('boss_id)
unittalk 'boss_id, "You're the ones... Grr... Good, I'll crush your bones! Grr...";
sleep 4000;
if ('boss_id)
donpcevent instance_npcname("#skollmaster") + "::OnLava_heal";
end;
OnLava_heal:
'lava_heal = true;
donpcevent instance_npcname("#fire_combo") + "::OnEnd";
stopnpctimer instance_npcname("#fire_hpcheck");
callsub S_Event, 0, 156,117;
initnpctimer;
end;
OnTimer2000:
callsub S_Event, 1, 180,129;
end;
OnTimer4000:
callsub S_ReSpawn, 168,121;
unitskilluseid 'boss_id, "CR_REFLECTSHIELD",1;
unittalk 'boss_id, "Let's do this again. Come on!";
donpcevent instance_npcname("#loco_call") + "::OnSpawn";
end;
OnTimer6000:
stopnpctimer;
'lava_heal = false;
donpcevent instance_npcname("#fire_hpcheck") + "::OnStart";
donpcevent instance_npcname("#fire_combo") + "::OnEvent";
end;
S_ReSpawn:
getunitdata 'boss_id, .@data;
'boss_hp = .@data[UMOB_HP];
killmonster 'map_eom$, instance_npcname("#skollmaster") + "::OnMobDead";
monster 'map_eom$,getarg(0),getarg(1), "Muspellskoll",3092,1, instance_npcname("#skollmaster") + "::OnMobDead"; // MM_MUSPELLSKOLL
'boss_id = $@mobid[0];
setunitdata 'boss_id, UMOB_HP, 'boss_hp;
return;
S_Event:
callsub S_ReSpawn, getarg(1),getarg(2);
if ('flowing_lava_deactivate[ getarg(0) ] == false) {
for ( .@i = 0; .@i < 8; .@i++ ) {
unitskilluseid 'boss_id, "AL_HEAL",11;
sleep 100;
if ('boss_id == 0)
end;
}
unitskilluseid 'boss_id, "AL_HEAL",11;
}
mapannounce 'map_eom$, "Nidhogg: Muspellskoll is trying to regenerate itself using the lava!", bc_map, 0x00ff00;
getunitdata 'boss_id, .@data;
'boss_hp = .@data[UMOB_HP];
donpcevent instance_npcname("#loco_call") + "::OnSpawn";
return;
OnMobDead:
stopnpctimer instance_npcname("#fire_hpcheck");
stopnpctimer instance_npcname("#muspellskoll_event_1");
stopnpctimer instance_npcname("#muspellskoll_event_2");
stopnpctimer instance_npcname("#muspellskoll_event_3");
donpcevent instance_npcname("#fire_combo") + "::OnEnd";
donpcevent instance_npcname("#loco_call") + "::OnEnd";
killmonster 'map_eom$, instance_npcname("#skollmaster") + "::OnMobDead";
mapannounce 'map_eom$, "Nidhogg: Muspellskoll's influence has dissipated, and a new warp gate has appeared.", bc_map, 0x00ff00;
enablenpc instance_npcname("Nidhogg#eomnyd03");
enablenpc instance_npcname("#fire_to_center");
enablenpc instance_npcname("Strange Young Man#mocadt01");
'step = 8;
donpcevent instance_npcname("#demon_god_variables") + "::OnVariableReset";
end;
OnTest_hp:
if ('boss_id && mobcount( 'map_eom$, instance_npcname("#skollmaster") + "::OnMobDead" ) > 0)
setunitdata 'boss_id, UMOB_HP, 2000000;
end;
}
1@eom,3,7,0 script #fire_hpcheck CLEAR_NPC,{
end;
OnStart:
initnpctimer;
end;
OnTimer3000:
getunitdata 'boss_id, .@data;
.@hp = .@data[UMOB_HP];
if ('boss_hp < .@hp) {
initnpctimer;
end;
}
if (('boss_hp - .@hp) > 1000000) {
'boss_hp = .@hp;
donpcevent instance_npcname("#fire_hpcheck") + "::OnHeal"; // the event can stack and the boss can stay in this state until it demise
initnpctimer;
end;
}
'boss_hp = .@hp;
if ('lava_heal == false) {
if (.@hp > 29500000 && .@hp < 30000000 || .@hp > 35500000 && .@hp < 36000000 || .@hp > 39500000 && .@hp < 40000000 || .@hp > 44500000 && .@hp < 45000000) {
unittalk 'boss_id, "I'm not going down without a fight!";
donpcevent instance_npcname("#skollmaster") + "::OnLava_heal";
}
}
initnpctimer;
end;
OnHeal:
if ('fire_combo)
donpcevent instance_npcname("#fire_combo") + "::OnEnd";
unittalk 'boss_id, "Do I look easy to you? I'll burn you to ashes!";
sleep 2000;
if ('boss_id == 0)
end;
getunitdata 'boss_id, .@data;
unitskillusepos 'boss_id,"WZ_METEOR",11,.@data[UMOB_X],.@data[UMOB_Y],-50;
sleep 1000;
if ('boss_id == 0)
end;
for ( .@i = 0; .@i < 18; .@i++ ) {
unitskilluseid 'boss_id, "AL_HEAL",11;
sleep 200;
if ('boss_id == 0)
end;
}
getunitdata 'boss_id, .@data;
unitskillusepos 'boss_id,"WZ_METEOR",11,.@data[UMOB_X],.@data[UMOB_Y],-50;
for ( .@i = 0; .@i < 18; .@i++ ) {
unitskilluseid 'boss_id, "AL_HEAL",11;
sleep 200;
if ('boss_id == 0)
end;
}
getunitdata 'boss_id, .@data;
'boss_hp = .@data[UMOB_HP];
if (!'fire_combo)
donpcevent instance_npcname("#fire_combo") + "::OnEvent";
end;
}
1@eom,3,5,0 script #loco_call CLEAR_NPC,{
end;
OnSpawn:
enablenpc instance_npcname("#loco_call");
initnpctimer;
getunitdata 'boss_id, .@data;
'x_loco = .@data[UMOB_X];
'y_loco = .@data[UMOB_Y];
end;
OnTimer1000:
.@label$ = instance_npcname("#loco_call") + "::OnMobDead";
if (mobcount( 'map_eom$, .@label$ ) < 6)
areamonster 'map_eom$,('x_loco-5),('y_loco-5),('x_loco+5),('y_loco+5)," ",3089,3, .@label$; // MM_LOCO_KASA
end;
OnTimer16000:
stopnpctimer;
disablenpc instance_npcname("#loco_call");
end;
OnMobDead:
end;
OnEnd:
stopnpctimer;
disablenpc instance_npcname("#loco_call");
end;
}
1@eom,1,1,0 script #muspellskoll_event_1 -1,{
end;
OnEvent:
initnpctimer;
unittalk 'boss_id, "Crash and burn!";
end;
OnTimer1000:
unitskilluseid 'boss_id, "NPC_FIRESTORM",3;
end;
OnTimer3000:
stopnpctimer;
unitskilluseid 'boss_id, "WZ_SIGHTRASHER",10;
if ('fire_combo)
donpcevent instance_npcname("#fire_combo") + "::OnEvent";
end;
}
1@eom,1,1,0 script #muspellskoll_event_2 -1,{
end;
OnEvent:
initnpctimer;
unittalk 'boss_id, "Grr...";
end;
OnTimer1000:
getunitdata 'boss_id, .@data;
'bossx = .@data[UMOB_X];
'bossy = .@data[UMOB_Y];
unitskilluseid 'boss_id, "NPC_FIRESTORM",3;
end;
OnTimer3000:
unitskillusepos 'boss_id,"WZ_FIREPILLAR",1,('bossx-3),('bossy+3),-50;
end;
OnTimer5000:
unitskillusepos 'boss_id,"WZ_FIREPILLAR",1,('bossx+3),('bossy+3),-50;
end;
OnTimer7000:
unitskillusepos 'boss_id,"WZ_FIREPILLAR",1,('bossx-3),('bossy-3),-50;
end;
OnTimer9000:
unitskillusepos 'boss_id,"WZ_FIREPILLAR",1,('bossx+3),('bossy-3),-50;
end;
OnTimer19000:
stopnpctimer;
if ('fire_combo)
donpcevent instance_npcname("#fire_combo") + "::OnEvent";
end;
}
1@eom,1,1,0 script #muspellskoll_event_3 -1,{
end;
OnEvent:
initnpctimer;
unittalk 'boss_id, "My fire will swallow you whole!";
end;
OnTimer1000:
unitskilluseid 'boss_id, "NPC_FIRESTORM",3;
end;
OnTimer2000:
donpcevent instance_npcname("#flamecross") + "::OnStart";
end;
OnTimer7000:
getunitdata 'boss_id, .@data;
'bossx = .@data[UMOB_X];
'bossy = .@data[UMOB_Y];
unitskillusepos 'boss_id,"WZ_METEOR",5,('bossx),('bossy+5),-50;
end;
OnTimer9000:
unitskillusepos 'boss_id,"WZ_METEOR",5,('bossx),('bossy-5),-50;
end;
OnTimer11000:
unitskillusepos 'boss_id,"WZ_METEOR",5,('bossx),('bossy+10),-50;
end;
OnTimer13000:
stopnpctimer;
unitskillusepos 'boss_id,"WZ_METEOR",5,'bossx,('bossy-10),-50;
if ('fire_combo)
donpcevent instance_npcname("#fire_combo") + "::OnEvent";
end;
}
1@eom,3,3,0 script #fire_combo CLEAR_NPC,{
end;
OnEvent:
initnpctimer;
'fire_combo = true;
end;
OnTimer10000:
stopnpctimer;
.@r = rand(1,4);
if (.@r == 1)
donpcevent instance_npcname("#muspellskoll_event_1") + "::OnEvent";
else if (.@r == 2)
donpcevent instance_npcname("#muspellskoll_event_2") + "::OnEvent";
else if (.@r == 3)
donpcevent instance_npcname("#muspellskoll_event_3") + "::OnEvent";
else
donpcevent instance_npcname("#flamecross") + "::OnSpawn";
end;
OnEnd:
stopnpctimer;
'fire_combo = false;
disablenpc instance_npcname("#fire_combo");
end;
}
1@eom,3,8,0 script #flamecross CLEAR_NPC,{
end;
OnStart:
getunitdata 'boss_id, .@data;
.@x = .@data[UMOB_X];
.@y = .@data[UMOB_Y];
callsub( S_Spawn,.@x,.@y,3 );
sleep 300;
callsub( S_Spawn,.@x,.@y,6 );
sleep 300;
callsub( S_Spawn,.@x,.@y,9 );
sleep 300;
callsub( S_Spawn,.@x,.@y,13 );
sleep 5000;
killmonster 'map_eom$, instance_npcname("#flamecross") + "::OnMobDead";
end;
S_Spawn:
if (!'boss_id) {
killmonster 'map_eom$, instance_npcname("#flamecross") + "::OnMobDead";
end;
}
.@x = getarg(0);
.@y = getarg(1);
.@dxy = getarg(2);
.@label$ = instance_npcname("#flamecross") + "::OnMobDead";
monster 'map_eom$,(.@x+.@dxy),(.@y+.@dxy)," ",2960,1, .@label$;// MM_FLAMECROSS
monster 'map_eom$,(.@x-.@dxy),(.@y-.@dxy)," ",2960,1, .@label$;
monster 'map_eom$,(.@x+.@dxy),(.@y-.@dxy)," ",2960,1, .@label$;
monster 'map_eom$,(.@x-.@dxy),(.@y+.@dxy)," ",2960,1, .@label$;
return;
OnSpawn:
getunitdata 'boss_id, .@data;
.@label$ = instance_npcname("#flamecross") + "::OnMobDead"; // same OnMobDead than OnStart?
if (mobcount( 'map_eom$, .@label$ ) < 2)
areamonster 'map_eom$,(.@data[UMOB_X]-1),(.@data[UMOB_Y]-1),(.@data[UMOB_X]+1),(.@data[UMOB_Y]+1)," ",3090,2, .@label$; // MM_LOCO_SALAMANDER
if ('fire_combo)
donpcevent instance_npcname("#fire_combo") + "::OnEvent";
end;
OnMobDead:
end;
}
1@eom,154,119,0 script Flowing Lava#lavapond01 CLEAR_NPC,{ // todo, custom text
if (countitem(22566) < 1)
end;
mes "It can be used to block the flow of lava using a Frost Crystal.";
next;
if (select( "Use a Frost Crystal", "Do not use a Frost Crystal" ) == 2)
end;
if ('flowing_lava_deactivate[0] == true)
end;
'flowing_lava_deactivate[0] = true;
delitem 22566,1;// Frost_Crystal
disablenpc instance_npcname("Flowing Lava#lavapond01");
donpcevent instance_npcname("Hardened Lava#lavaseal01") + "::OnEnable";
initnpctimer;
end;
OnTimer300:
donpcevent instance_npcname("Hardened Lava#lavaseal01") + "::OnEffect";
end;
OnTimer120000:
'flowing_lava_deactivate[0] = false;
donpcevent instance_npcname("Hardened Lava#lavaseal01") + "::OnDisable";
enablenpc instance_npcname("Flowing Lava#lavapond01");
mapannounce 'map_eom$, "Nidhogg: The Frost has melted. The lava is flowing again!", bc_map, 0x00ff00;
stopnpctimer;
end;
}
1@eom,182,129,0 script Flowing Lava#lavapond02 CLEAR_NPC,{ // todo, custom text
if (countitem(22566) < 1)
end;
mes "It can be used to block the flow of lava using a Frost Crystal.";
next;
if (select( "Use a Frost Crystal", "Do not use a Frost Crystal" ) == 2)
end;
if ('flowing_lava_deactivate[1] == true)
end;
'flowing_lava_deactivate[1] = true;
delitem 22566,1;// Frost_Crystal
disablenpc instance_npcname("Flowing Lava#lavapond02");
donpcevent instance_npcname("Hardened Lava#lavaseal02") + "::OnEnable";
initnpctimer;
end;
OnTimer300:
donpcevent instance_npcname("Hardened Lava#lavaseal02") + "::OnEffect";
end;
OnTimer120000:
'flowing_lava_deactivate[1] = false;
donpcevent instance_npcname("Hardened Lava#lavaseal02") + "::OnDisable";
enablenpc instance_npcname("Flowing Lava#lavapond02");
mapannounce 'map_eom$, "Nidhogg: The Frost has melted. The lava is flowing again!", bc_map, 0x00ff00;
stopnpctimer;
end;
}
1@eom,154,119,0 script Hardened Lava#lavaseal01 CLEAR_NPC,{
end;
OnEnable:
enablenpc instance_npcname("Hardened Lava#lavaseal01");
disablenpc instance_npcname("#lavazone11");
disablenpc instance_npcname("#lavazone12");
end;
OnDisable:
stopnpctimer;
disablenpc instance_npcname("Hardened Lava#lavaseal01");
enablenpc instance_npcname("#lavazone11");
enablenpc instance_npcname("#lavazone12");
end;
OnEffect:
initnpctimer;
specialeffect EF_LIGHTNINGLOADER;
end;
OnTimer3000:
initnpctimer;
end;
}
1@eom,182,129,0 script Hardened Lava#lavaseal02 CLEAR_NPC,{
end;
OnEnable:
enablenpc instance_npcname("Hardened Lava#lavaseal02");
disablenpc instance_npcname("#lavazone21");
disablenpc instance_npcname("#lavazone22");
end;
OnDisable:
stopnpctimer;
disablenpc instance_npcname("Hardened Lava#lavaseal02");
enablenpc instance_npcname("#lavazone21");
enablenpc instance_npcname("#lavazone22");
end;
OnEffect:
initnpctimer;
specialeffect EF_LIGHTNINGLOADER;
end;
OnTimer3000:
initnpctimer;
end;
}
1@eom,161,122,0 script #lavazone11 HIDDEN_WARP_NPC,10,10,{
end;
OnTouch:
percentheal -3,0;
specialeffect2 EF_SPRINKLESAND;
end;
}
1@eom,161,102,0 duplicate(#lavazone11) #lavazone12 HIDDEN_WARP_NPC,10,10
1@eom,163,150,0 duplicate(#lavazone11) #lavazone21 HIDDEN_WARP_NPC,10,10
1@eom,163,150,0 duplicate(#lavazone11) #lavazone22 HIDDEN_WARP_NPC,10,10
1@eom,151,155,3 script Nidhogg#eomnyd03 4_F_NYDHOG,{
if (checkquest(7603,HUNTING) == 2 && isbegin_quest(7604) == 0) {
mes "[Nidhogg]";
mes "Good job, again.";
mes "This may not be good enough, but I hope it'll help your growth.";
next;
mes "^4d4dffGuardian Nidhogg has rewarded you with a large amount of EXP for defeating Muspellskoll.^000000";
erasequest 7603;// Temple of the Demon God Phase 2
setquest 7604;// Temple of the Demon God Phase 2 Completed
getexp 1000000,500000;
close;
}
mes "[Nidhogg]";
mes "Skoll... Skoll and Haati...";
mes "Everything in here is a mere copy of that in the outside world.";
mes "He's not a creator.";
close;
}
1@eom,147,156,0 script #fire_to_center WARPNPC,1,1,{
end;
OnTouch_:
if (checkquest(7603,HUNTING) == 2 && isbegin_quest(7604) == 0) {
mes "[Nidhogg]";
mes "Good job, again.";
mes "This may not be good enough, but I hope it'll help your growth.";
next;
mes "^4d4dffGuardian Nidhogg has rewarded you with a large amount of EXP for defeating Muspellskoll.^000000";
setquest 7604;
erasequest 7603;
getexp 1000000,500000;
close;
}
warp 'map_eom$,98,115;
end;
}
// Center to Last
1@eom,98,123,5 script Strange Young Man#mocadt01 3097,5,5,{ // MM_MOROCC_ADT
end;
OnTouch_:
if ('step == 8 && is_party_leader()) {
'step = 9;
initnpctimer;
}
end;
OnTimer1000:
npctalk "You exceed my expectations.";
end;
OnTimer4000:
npctalk "I'll accept your challenge.";
end;
OnTimer7000:
npctalk "I shall drench the land with your flowing blood and nourish it with your torn flesh.";
end;
OnTimer8000:
specialeffect EF_BEGINSPELL5;
enablenpc instance_npcname("#gate_to_last");
enablenpc instance_npcname("#moc_master");
specialeffect EF_READYPORTAL2,AREA, instance_npcname("#gate_to_last");
end;
OnTimer10000:
npctalk "I'll show you the true depths of despair.";
end;
OnTimer12000:
stopnpctimer;
specialeffect EF_ENTRY;
disablenpc instance_npcname("Strange Young Man#mocadt01");
end;
}
1@eom,98,127,0 warp #gate_to_last 1,1,1@eom,102,186
1@eom,101,194,3 script #moc_master 3096,10,10,{
end;
OnTouch_:
if ('step != 9)
end;
'step = 10;
npctalk "Morroc: You're already here, so let's not waste our time on talking.";
initnpctimer;
end;
OnTimer2000:
stopnpctimer;
npctalk "Morroc: Come on, mortals!";
disablenpc instance_npcname("#moc_master");
donpcevent instance_npcname("#despair_god_main") + "::OnStart";
end;
}
1@eom,1,1,0 script #despair_god_main -1,{
end;
OnStart:
enablenpc instance_npcname("#despair_god_main");
'boss_phase = 1;
monster 'map_eom$,101,194, "Demigod",3096,1, instance_npcname("#despair_god_main") + "::OnMobDead"; // MM_MOROCC_KID
'boss_id = $@mobid[0];
getunitdata 'boss_id, .@data;
'boss_hp = .@data[UMOB_MAXHP];
unitskillusepos 'boss_id,"WZ_METEOR",11,101,194,-50;
enablenpc instance_npcname("#mk_trap");
donpcevent instance_npcname("#mk_hpcheck") + "::OnStart";
donpcevent instance_npcname("#mk_combo") + "::OnEvent";
end;
OnPhase02:
if ('boss_phase != 1)
end;
'boss_phase = 2;
stopnpctimer instance_npcname("#demigod_event_1");
stopnpctimer instance_npcname("#demigod_event_2");
stopnpctimer instance_npcname("#demigod_event_3");
stopnpctimer instance_npcname("#mk_hpcheck");
stopnpctimer instance_npcname("#mk_combo");
unittalk 'boss_id, "You'll have to do better than this!";
sleep 2000;
if ('boss_id == 0)
end;
getunitdata 'boss_id, .@data;
'boss_hp = .@data[UMOB_HP];
killmonster 'map_eom$, instance_npcname("#despair_god_main") + "::OnMobDead";
monster 'map_eom$,101,207, "Demigod",3096,1, instance_npcname("#despair_god_main") + "::OnMobDead"; // MM_MOROCC_KID
'boss_id = $@mobid[0];
setunitdata 'boss_id, UMOB_HP, 'boss_hp;
setunitdata 'boss_id, UMOB_MODE, (MD_MVP|MD_STATUSIMMUNE|MD_KNOCKBACKIMMUNE|MD_MVP|MD_DETECTOR); // todo: MD_SKILL_IMMUNE ?
sleep 2000;
if ('boss_id == 0)
end;
donpcevent instance_npcname("#moc_origin") + "::OnEnable";
end;
OnPhase03:
if ('boss_phase != 2)
end;
'boss_phase = 3;
getunitdata 'boss_id, .@data;
.@hp = .@data[UMOB_HP] + ('boss_hp - .@data[UMOB_HP]) * 10;
'boss_hp = min(80000000,.@hp);
killmonster 'map_eom$, instance_npcname("#despair_god_main") + "::OnMobDead";
monster 'map_eom$,101,194, "Demigod",3096,1, instance_npcname("#despair_god_main") + "::OnMobDead"; // MM_MOROCC_KID
'boss_id = $@mobid[0];
setunitdata 'boss_id, UMOB_HP, 'boss_hp;
unittalk 'boss_id, "Stop being so persistent!";
sleep 2000;
if ('boss_id == 0)
end;
unitskilluseid 'boss_id, "NPC_WIDEWEB",1;
sleep 1000;
if ('boss_id == 0)
end;
unitskilluseid 'boss_id, "NPC_FIRESTORM",3;
sleep 1000;
if ('boss_id == 0)
end;
unitskilluseid 'boss_id, "MG_FIREBALL",1;
donpcevent instance_npcname("#mk_hpcheck") + "::OnStart";
donpcevent instance_npcname("#mk_combo") + "::OnEvent";
end;
OnTest_hp:
if ('boss_id && mobcount( 'map_eom$, instance_npcname("#despair_god_main") + "::OnMobDead" ) > 0)
setunitdata 'boss_id, UMOB_HP, 2000000;
end;
OnMobDead:
disablenpc instance_npcname("#despair_god_main");
killmonster 'map_eom$, instance_npcname("#despair_god_main") + "::OnMobDead";
stopnpctimer instance_npcname("#mk_combo");
stopnpctimer instance_npcname("#demigod_event_1");
stopnpctimer instance_npcname("#demigod_event_2");
stopnpctimer instance_npcname("#demigod_event_3");
stopnpctimer instance_npcname("#moc_meddling");
stopnpctimer instance_npcname("#mk_hpcheck");
donpcevent instance_npcname("#moc_origin") + "::OnEnd";
donpcevent instance_npcname("#demon_god_variables") + "::OnVariableReset";
donpcevent instance_npcname("#morocc_god") + "::OnStart";
end;
}
1@eom,4,2,0 script #mk_combo CLEAR_NPC,{
end;
OnEvent:
initnpctimer;
'combo_is_allowed = true;
end;
OnStart:
initnpctimer;
end;
OnTimer10000:
donpcevent instance_npcname("#demigod_event_" + rand(1,3)) + "::OnEvent";
stopnpctimer;
end;
OnEnd:
stopnpctimer;
'combo_is_allowed = false;
end;
}
1@eom,4,1,0 script #mk_hpcheck CLEAR_NPC,{
end;
OnStart:
initnpctimer;
end;
OnTimer6000:
getunitdata 'boss_id, .@data;
.@hp = .@data[UMOB_HP];
if ('boss_hp < .@hp) {
initnpctimer;
end;
}
.@hp_a = 'boss_hp - .@hp;
if (.@hp_a > 1000000) {
if (.@hp_a > 200000) {
.@hp_b = .@hp + (.@hp_a - 200000) * 3;
.@hp_b = min(80000000, .@hp_b);
setunitdata 'boss_id, UMOB_HP, .@hp_b;
mapannounce 'map_eom$, "Nidhogg: Wow, his regenerative power is unheard of! Don't let him regenerate again!", bc_map, 0x00ff00;
}
unitskilluseid 'boss_id, "AL_HEAL",11;
getunitdata 'boss_id, .@data;
'boss_hp = .@data[UMOB_HP];
initnpctimer;
end;
}
'boss_hp = .@hp;
switch( 'boss_phase ) { // process by phase instead of (officially) hp, just in case
case 1:
if (.@hp < 40000000)
donpcevent instance_npcname("#despair_god_main") + "::OnPhase02";
break;
case 2:
break;
case 3:
if (.@hp > 100000 && .@hp < 30000000)
donpcevent instance_npcname("#mk_trap") + "::OnTrap";
break;
}
initnpctimer;
end;
}
1@eom,1,1,0 script #demigod_event_1 -1,{
end;
OnEvent:
initnpctimer;
unittalk 'boss_id, "Mwah hah, dodge this if you can!";
end;
OnTimer2000:
unitskilluseid 'boss_id, "NPC_WIDEWEB",1;
end;
OnTimer3000:
unitskilluseid 'boss_id, "NPC_FIRESTORM",3;
end;
OnTimer5000:
getunitdata 'boss_id, .@data;
unitskillusepos 'boss_id,"WZ_VERMILION",21,.@data[UMOB_X],.@data[UMOB_Y],-50;
end;
OnTimer7000:
stopnpctimer;
unitskilluseid 'boss_id, "CR_REFLECTSHIELD",1;
if ('combo_is_allowed)
donpcevent instance_npcname("#mk_combo") + "::OnEvent";
end;
}
1@eom,1,1,0 script #demigod_event_2 -1,{
end;
OnEvent:
initnpctimer;
unittalk 'boss_id, "A rhapsody for weak souls...";
end;
OnTimer2000:
unitskilluseid 'boss_id, "NPC_WIDEWEB",1;
end;
OnTimer3000:
getunitdata 'boss_id, .@data;
'bossx = .@data[UMOB_X];
'bossy = .@data[UMOB_Y];
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20,('bossx-2),'bossy,-50;
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20,('bossx+2),'bossy,-50;
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20,'bossx,('bossy+2),-50;
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20,'bossx,('bossy-2),-50;
end;
OnTimer4000:
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20,('bossx-6),'bossy,-50;
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20,('bossx+6),'bossy,-50;
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20,'bossx,('bossy+6),-50;
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20,'bossx,('bossy-6),-50;
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20,('bossx-4),('bossy+4),-50;
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20,('bossx-4),('bossy-4),-50;
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20,('bossx+4),('bossy+4),-50;
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20,('bossx+4),('bossy-4),-50;
end;
OnTimer5000:
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20,('bossx-10),'bossy,-50;
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20,('bossx+10),'bossy,-50;
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20,'bossx,('bossy+10),-50;
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20,'bossx,('bossy-10),-50;
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20,('bossx-8),('bossy+8),-50;
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20,('bossx-8),('bossy-8),-50;
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20,('bossx+8),('bossy+8),-50;
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20,('bossx+8),('bossy-8),-50;
end;
OnTimer6000:
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20,('bossx-16),'bossy,-50;
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20,('bossx+16),'bossy,-50;
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20,'bossx,('bossy+16),-50;
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20,'bossx,('bossy-16),-50;
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20,('bossx-12),('bossy+12),-50;
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20,('bossx-12),('bossy-12),-50;
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20,('bossx+12),('bossy+12),-50;
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20,('bossx+12),('bossy-12),-50;
end;
OnTimer7000:
stopnpctimer;
if ('combo_is_allowed)
donpcevent instance_npcname("#mk_combo") + "::OnEvent";
end;
}
1@eom,1,1,0 script #demigod_event_3 -1,{
end;
OnEvent:
initnpctimer;
unittalk 'boss_id, "For whom the fugue is played? For whom the requiem is played?";
end;
OnTimer2000:
unitskilluseid 'boss_id, "NPC_WIDEWEB",1;
end;
OnTimer3000:
unitskilluseid 'boss_id, "NPC_FIRESTORM",3;
end;
OnTimer5000:
getunitdata 'boss_id, .@data;
unitskillusepos 'boss_id,"WZ_METEOR",5,(.@data[UMOB_X]-5),.@data[UMOB_Y],-50;
unitskillusepos 'boss_id,"WZ_METEOR",5,(.@data[UMOB_X]+5),.@data[UMOB_Y],-50;
unitskillusepos 'boss_id,"WZ_METEOR",5,.@data[UMOB_X],(.@data[UMOB_Y]+5),-50;
unitskillusepos 'boss_id,"WZ_METEOR",5,.@data[UMOB_X],(.@data[UMOB_Y]-5),-50;
end;
OnTimer9000:
unittalk 'boss_id, "Burn to ashes!";
end;
OnTimer11000:
getunitdata 'boss_id, .@data;
unitskillusepos 'boss_id,"WZ_VERMILION",21,.@data[UMOB_X],.@data[UMOB_Y],-50; // assuming position on (0,0) is self
end;
OnTimer13000:
stopnpctimer;
if ('combo_is_allowed)
donpcevent instance_npcname("#mk_combo") + "::OnEvent";
end;
}
1@eom,4,3,0 script #moc_origin CLEAR_NPC,{
end;
OnEnable:
enablenpc instance_npcname("#moc_origin");
monster 'map_eom$,114,198, "Morroc of the Genesis", 3098,1, instance_npcname("#moc_origin") + "::OnMobDead1"; // MM_MOROCC_ORIGIN
'miniboss_id[0] = $@mobid[0];
'miniboss_id[1] = 0;
initnpctimer;
end;
OnTimer1000:
donpcevent instance_npcname("#moc_origin") + "::OnOriginheal";
if ('miniboss_id[0] < 1)
end;
getunitdata 'miniboss_id[0], .@data;
if (.@data[UMOB_HP] < 2200000) {
if ('miniboss_id[1] == 0) {
monster 'map_eom$,86,199, "Morroc of the Sabbath", 3099,1, instance_npcname("#moc_origin") + "::OnMobDead2"; // MM_MOROCC_REST
'miniboss_id[1] = $@mobid[0];
}
}
end;
OnTimer2000:
initnpctimer;
end;
OnOriginheal:
for ( .@i = 0; .@i < 11; .@i++ ) {
unitskilluseid 'boss_id, "AL_HEAL",11;
sleep 200;
if ('boss_id == 0)
end;
}
end;
OnMobDead1:
'miniboss_id[0] = 0;
callsub S_Dead;
OnMobDead2:
'miniboss_id[1] = 0;
callsub S_Dead;
S_Dead:
if ('miniboss_id[1] == 0 && 'miniboss_id[0] > 0) { // todo, custom text
unittalk 'miniboss_id[0], "---!!!";
setunitdata 'miniboss_id[0], UMOB_HP, 3000000;
stopnpctimer instance_npcname("#moc_meddling");
}
else if ('miniboss_id[1] == 0 && 'miniboss_id[0] == 0) {
donpcevent instance_npcname("#moc_origin") + "::OnEnd";
stopnpctimer instance_npcname("#moc_meddling");
donpcevent instance_npcname("#despair_god_main") + "::OnPhase03";
}
else {
unittalk 'miniboss_id[1], "I'll put you to rest. It's my mercy!!!"; // todo, custom text
setunitdata 'miniboss_id[1], UMOB_HP, 1000000;
donpcevent instance_npcname("#moc_meddling") + "::OnStart";
}
end;
OnEnd:
stopnpctimer;
disablenpc instance_npcname("#moc_origin");
killmonster 'map_eom$, instance_npcname("#moc_origin") + "::OnMobDead1";
killmonster 'map_eom$, instance_npcname("#moc_origin") + "::OnMobDead2";
end;
}
1@eom,1,1,0 script #moc_meddling -1,{
end;
OnStart:
initnpctimer;
getunitdata 'miniboss_id[1], .@data;
if (.@data[UMOB_HP] > 100000)
unitskillusepos 'miniboss_id[1],"WZ_METEOR",9,.@data[UMOB_X],.@data[UMOB_Y],-50;
end;
OnTimer5000:
initnpctimer;
end;
}
1@eom,4,6,0 script #mk_trap CLEAR_NPC,{
end;
OnTrap:
.@label$ = instance_npcname("#mk_trap") + "::OnMobDead";
if (mobcount( 'map_eom$, .@label$ ) < 3) {
getunitdata 'boss_id, .@data;
monster 'map_eom$,.@data[UMOB_X]-4,.@data[UMOB_Y], "Frenzied Kasa", 3089,1, .@label$; // MM_LOCO_KASA
monster 'map_eom$,.@data[UMOB_X],.@data[UMOB_Y]-4, "Frenzied Kasa", 3089,1, .@label$;
monster 'map_eom$,.@data[UMOB_X]+4,.@data[UMOB_Y], "Frenzied Kasa", 3089,1, .@label$;
monster 'map_eom$,.@data[UMOB_X],.@data[UMOB_Y]+4, "Frenzied Kasa", 3089,1, .@label$;
}
end;
OnMobDead:
end;
}
1@eom,102,222,3 script #morocc_god 3097,{
end;
OnStart:
enablenpc instance_npcname("#morocc_god");
initnpctimer;
end;
OnTimer2000:
mapannounce 'map_eom$, "This is getting more interesting. *Snicker*", bc_map, 0xff0000;
end;
OnTimer6000:
mapannounce 'map_eom$, "Hey, you don't think this is over already, do you?", bc_map, 0xff0000;
end;
OnTimer10000:
disablenpc instance_npcname("#morocc_god");
end;
OnTimer12000:
donpcevent instance_npcname("#despair_main") + "::OnStart";
end;
OnTimer13000:
unittalk 'boss_id, "What are you waiting for?!";
end;
OnTimer14000:
unitskilluseid 'boss_id, "NPC_WIDEWEB",1;
end;
OnTimer16000:
mapannounce 'map_eom$, "I'll take your blood!", bc_map, 0xff0000;
end;
OnTimer17000:
stopnpctimer;
getunitdata 'boss_id, .@data;
unitskillusepos 'boss_id,"NPC_WIDESUCK",1,.@data[UMOB_X],.@data[UMOB_Y],-50;
donpcevent instance_npcname("#ma_combo") + "::OnStart";
end;
}
1@eom,1,1,0 script #despair_main -1,{
end;
OnStart:
enablenpc instance_npcname("#despair_main");
monster 'map_eom$,101,194, "Despair God Morroc",3097,1, instance_npcname("#despair_main") + "::OnMobDead"; // MM_MOROCC_ADT
'boss_id = $@mobid[0];
end;
OnMobDead:
disablenpc instance_npcname("#despair_main");
killmonster 'map_eom$, instance_npcname("#despair_main") + "::OnMobDead";
stopnpctimer instance_npcname("#morocc_god");
stopnpctimer instance_npcname("#ma_combo");
stopnpctimer instance_npcname("#despair_event_1");
stopnpctimer instance_npcname("#despair_event_2");
stopnpctimer instance_npcname("#despair_event_3");
stopnpctimer instance_npcname("#despair_event_4");
stopnpctimer instance_npcname("#despair_event_5");
mapannounce 'map_eom$, "D-don't think... th-this... is over.. You're... already... time...", bc_map, 0xff0000;
initnpctimer;
'step = 11;
donpcevent instance_npcname("#demon_god_variables") + "::OnVariableReset";
end;
OnTimer2000:
stopnpctimer;
enablenpc instance_npcname("Nidhogg#eomnyd04");
end;
OnTest_hp:
if ('boss_id && mobcount( 'map_eom$, instance_npcname("#despair_main") + "::OnMobDead" ) > 0)
setunitdata 'boss_id, UMOB_HP, 2000000;
end;
}
1@eom,4,8,0 script #ma_combo CLEAR_NPC,{
end;
OnStart:
initnpctimer;
end;
OnTimer10000:
donpcevent instance_npcname("#despair_event_" + rand(1,5)) + "::OnEvent";
stopnpctimer;
end;
}
1@eom,1,1,0 script #despair_event_1 -1,{
end;
OnEvent:
initnpctimer;
unittalk 'boss_id, "I'll burn you slowly and painfully.";
end;
OnTimer2000:
unitskilluseid 'boss_id, "NPC_WIDEWEB",1;
end;
OnTimer3000:
unitskilluseid 'boss_id, "NPC_FIRESTORM",3;
end;
OnTimer5000:
stopnpctimer;
getunitdata 'boss_id, .@data;
unitskillusepos 'boss_id,"WZ_METEOR",11,.@data[UMOB_X],.@data[UMOB_Y],-50;
donpcevent instance_npcname("#ma_combo") + "::OnStart";
end;
}
1@eom,1,1,0 script #despair_event_2 -1,{
end;
OnEvent:
initnpctimer;
unittalk 'boss_id, "Can you hear the rhapsody? It's the sound of your soul writhing and screaming in pain!";
end;
OnTimer2000:
unitskilluseid 'boss_id, "NPC_WIDEWEB",1;
end;
OnTimer3000:
getunitdata 'boss_id, .@data;
'bossx = .@data[UMOB_X];
'bossy = .@data[UMOB_Y];
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20,('bossx-2),'bossy,-50;
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20,('bossx+2),'bossy,-50;
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20,'bossx,('bossy+2),-50;
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20,'bossx,('bossy-2),-50;
end;
OnTimer4000:
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20,('bossx-6),'bossy,-50;
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20,('bossx+6),'bossy,-50;
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20,'bossx,('bossy+6),-50;
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20,'bossx,('bossy-6),-50;
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20,('bossx-4),('bossy+4),-50;
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20,('bossx-4),('bossy-4),-50;
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20,('bossx+4),('bossy+4),-50;
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20,('bossx+4),('bossy-4),-50;
end;
OnTimer5000:
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20,('bossx-10),'bossy,-50;
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20,('bossx+10),'bossy,-50;
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20,'bossx,('bossy+10),-50;
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20,'bossx,('bossy-10),-50;
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20,('bossx-8),('bossy+8),-50;
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20,('bossx-8),('bossy-8),-50;
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20,('bossx+8),('bossy+8),-50;
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20,('bossx+8),('bossy-8),-50;
end;
OnTimer6000:
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20,('bossx-16),'bossy,-50;
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20,('bossx+16),'bossy,-50;
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20,'bossx,('bossy+16),-50;
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20,'bossx,('bossy-16),-50;
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20,('bossx-12),('bossy+12),-50;
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20,('bossx-12),('bossy-12),-50;
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20,('bossx+12),('bossy+12),-50;
unitskillusepos 'boss_id,"MG_THUNDERSTORM",20,('bossx+12),('bossy-12),-50;
end;
OnTimer7000:
stopnpctimer;
donpcevent instance_npcname("#ma_combo") + "::OnStart";
end;
}
1@eom,1,1,0 script #despair_event_3 -1,{
end;
OnEvent:
initnpctimer;
unittalk 'boss_id, "This is the thunderbolt of death!";
end;
OnTimer2000:
unitskilluseid 'boss_id, "NPC_WIDEWEB",1;
end;
OnTimer4000:
unitskilluseid 'boss_id, "NPC_WIDEFREEZE",5;
end;
OnTimer6000:
getunitdata 'boss_id, .@data;
unitskillusepos 'boss_id,"WZ_VERMILION",5,(.@data[UMOB_X]-7),.@data[UMOB_Y],-50;
unitskillusepos 'boss_id,"WZ_VERMILION",5,(.@data[UMOB_X]+7),.@data[UMOB_Y],-50;
unitskillusepos 'boss_id,"WZ_VERMILION",5,.@data[UMOB_X],(.@data[UMOB_Y]+7),-50;
unitskillusepos 'boss_id,"WZ_VERMILION",5,.@data[UMOB_X],(.@data[UMOB_Y]-7),-50;
end;
OnTimer10000:
unittalk 'boss_id, "Burn and make beautiful flames!";
end;
OnTimer12000:
getunitdata 'boss_id, .@data;
unitskillusepos 'boss_id,"WZ_VERMILION",21,.@data[UMOB_X],.@data[UMOB_Y],-50;
end;
OnTimer14000:
stopnpctimer;
donpcevent instance_npcname("#ma_combo") + "::OnStart";
end;
}
1@eom,1,1,0 script #despair_event_4 -1,{
end;
OnEvent:
initnpctimer;
unittalk 'boss_id, "I'll take your life.";
unitskilluseid 'boss_id, "NPC_FLAMECROSS",1;
end;
OnTimer1000:
getunitdata 'boss_id, .@data;
unitskillusepos 'boss_id,"NPC_WIDESUCK",1,.@data[UMOB_X],.@data[UMOB_Y],-50;
end;
OnTimer5000:
stopnpctimer;
donpcevent instance_npcname("#ma_combo") + "::OnStart";
end;
}
1@eom,1,1,0 script #despair_event_5 -1,{
end;
OnEvent:
initnpctimer;
unittalk 'boss_id, "*Chuckle*";
end;
OnTimer2000:
unitskilluseid 'boss_id, "NPC_FIRESTORM",3;
end;
OnTimer4000:
getunitdata 'boss_id, .@data;
unitskillusepos 'boss_id,"WZ_FIREPILLAR",10,.@data[UMOB_X],.@data[UMOB_Y],-50;
end;
OnTimer8000:
stopnpctimer;
donpcevent instance_npcname("#ma_combo") + "::OnStart";
end;
}
1@eom,103,194,3 script Nidhogg#eomnyd04 4_F_NYDHOG,{
if ('step < 11)
end;
if (isbegin_quest(7597) == 0 && checkquest(7593,HUNTING) == 2) {
mes "[Nidhogg]";
mes "I don't know what to say.";
mes "We stopped the god-in-waiting.";
mes "We accomplished our goal.";
mes "But I'm still unnerved.";
cutin "ep14_nyd03.bmp",2;
next;
mes "[Nidhogg]";
mes "This world is created in the mind of Morroc's.";
mes "He'll live forever in this garden he couldn't finish.";
cutin "ep14_nyd02.bmp",2;
next;
mes "[Nidhogg]";
mes "He probably doesn't know his body is destroyed forever.";
mes "He was far too ambitious, even for him.";
mes "He wanted to create a new world and become its creator,";
next;
mes "[Nidhogg]";
mes "but he couldn't create anything on his own.";
mes "He abandoned his Demon body, just to become a mere facsimile of an existing god.";
cutin "ep14_nyd03.bmp",2;
next;
mes "[Nidhogg]";
mes "He took the shape of a man.";
mes "He wasn't creative enough to reinvent the concept of God.";
mes "He was a paradox.";
next;
mes "[Nidhogg]";
mes "Now we need to get out of this trap in time and end; to reality.";
mes "This world only exists in the Demon God's mind. The same day repeats forever.";
next;
mes "[Nidhogg]";
mes "Everyone who enters this world will be dragged into the same loop.";
mes "In that sense, he succeeded in making his own world.";
cutin "ep14_nyd02.bmp",2;
next;
mes "[Nidhogg]";
mes "Today's despair will repeat day after day.";
mes "Even though we know this, we'll come back to walk the same path again. I hope I'll be able to fight by you every time...";
cutin "ep14_nyd03.bmp",2;
next;
cutin "ep14_nyd04.bmp",2;
mes "[Nidhogg]";
mes "I've talked too much. The Commander must be waiting. Let me validate your feat, so you can report to him.";
mes "You did great today.";
if (isbegin_quest(7593) == 1) {
erasequest 7593;// Demon God Subjugation
setquest 7597;// Fall of the False God
}
if (checkquest(7601,HUNTING) == 1)
erasequest 7601;
if (isbegin_quest(7602) > 0)
erasequest 7602;// Temple of the Demon God Phase 1 Completed
if (isbegin_quest(7603) == 1)
erasequest 7603;
if (isbegin_quest(7604) > 0)
erasequest 7604;// Temple of the Demon God Phase 2 Completed
if (isbegin_quest(7596) == 1)
erasequest 7596;
}
else { // todo, custom text
mes "[Nidhogg]";
mes "...It feels like things are not over yet,";
mes "This is very close to Morroc's spiritual world,";
mes "He should be here to keep thinking about the past!";
cutin "ep14_nyd03.bmp",2;
}
next;
select("Exit.");
mes "[Nidhogg]";
mes "Of course. You must be exhausted.";
mes "Let me send you to the other members of your Expedition, free of charge.";
close2;
warp "moro_vol",91,87;
end;
}
1@eom,5,1,0 script Little Helper#eomtest 4_ENERGY_BLUE,{
mes "What?";
next;
if (callfunc("F_GM_NPC",1854,0) < 1) {
mes "Wrong.";
close;
}
mes "What Boss?";
next;
switch( select( "Brinaranea", "Muspellskoll", "Demigod", "Despair God" ) ) {
case 1:
mes "Brinaranea health was set to 2.000.000.";
donpcevent instance_npcname("Brinaranea#brinpc01") + "::OnTest_hp";
close;
case 2:
mes "Muspellskoll health was set to 2.000.000.";
donpcevent instance_npcname("#skollmaster") + "::OnTest_hp";
close;
case 3:
mes "Demigod health was set to 2.000.000.";
donpcevent instance_npcname("#despair_god_main") + "::OnTest_hp";
close;
case 4:
mes "Despair God health was set to 2.000.000.";
donpcevent instance_npcname("#despair_main") + "::OnTest_hp";
close;
}
end;
}