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
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;
|
|
}
|