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.
713 lines
27 KiB
Plaintext
713 lines
27 KiB
Plaintext
//===== rAthena Script =======================================
|
|
//= OS Occupation Operation
|
|
//===== Description: =========================================
|
|
//= [Walkthrough Conversion]
|
|
//= Episode 17.1 - OS Occupation Operation
|
|
//= 2nd OS Search
|
|
//===== Changelog: ===========================================
|
|
//= 1.0 Initial release [crazyarashi]
|
|
//= 1.1 Optimizations and cleanup [Everade]
|
|
//============================================================
|
|
|
|
1@os_a,1,1,0 script #os_occupation_control HIDDEN_WARP_NPC,{
|
|
end;
|
|
|
|
OnInstanceInit:
|
|
'map$ = instance_mapname("1@os_a");
|
|
for (.@i = 1; .@i < 26; .@i++)
|
|
disablenpc instance_npcname("#ocp_rebel_" + .@i);
|
|
hideonnpc instance_npcname("Est#171_ocp_0");
|
|
disablenpc instance_npcname("#171_ocp_dev_0");
|
|
disablenpc instance_npcname("#171_ocp_dev_1");
|
|
disablenpc instance_npcname("#171_ocp_wrp_0");
|
|
disablenpc instance_npcname("#171_ocp_wrp_1");
|
|
disablenpc instance_npcname("#171_ocp_wrp_2");
|
|
disablenpc instance_npcname("#171_ocp_miguel");
|
|
disablenpc instance_npcname("Est#171_ocp_1");
|
|
disablenpc instance_npcname("Operation Officer#171_osd");
|
|
end;
|
|
|
|
OnStory01:
|
|
donpcevent instance_npcname("#171_ocp_mob") + "::OnPoisonStory";
|
|
for (.@i = 1; .@i < 26; .@i++)
|
|
enablenpc instance_npcname("#ocp_rebel_" + .@i);
|
|
enablenpc instance_npcname("#171_ocp_dev_0");
|
|
sleep2 1000;
|
|
hideoffnpc instance_npcname("Est#171_ocp_0");
|
|
doevent instance_npcname("Est#171_ocp_0") + "::OnEvent";
|
|
end;
|
|
|
|
OnStory02:
|
|
for (.@i = 1; .@i < 26; .@i++)
|
|
hideonnpc instance_npcname("#ocp_rebel_" + .@i);
|
|
disablenpc instance_npcname("Est#171_ocp_0");
|
|
sleep2 3000;
|
|
donpcevent instance_npcname("#171_ocp_mob") + "::OnSummonStory01";
|
|
doevent instance_npcname("#171_ocp_dev_0") + "::OnEvent01";
|
|
end;
|
|
|
|
OnStory03:
|
|
enablenpc instance_npcname("#171_ocp_dev_1");
|
|
for (.@i = 1; .@i < 26; .@i++)
|
|
disablenpc instance_npcname("#ocp_rebel_" + .@i);
|
|
end;
|
|
|
|
OnDaily01:
|
|
'osd = 1;
|
|
donpcevent instance_npcname("#171_ocp_mob") + "::OnSummon";
|
|
donpcevent instance_npcname("#171_ocp_mob") + "::OnPoisonDaily";
|
|
end;
|
|
}
|
|
|
|
1@os_a,30,352,0 script #os_occupation_ev_0 HIDDEN_WARP_NPC,4,4,{
|
|
end;
|
|
|
|
OnTouch:
|
|
if (!is_party_leader())
|
|
end;
|
|
disablenpc();
|
|
disablenpc instance_npcname("#os_occupation_ev_1");
|
|
doevent instance_npcname("#os_occupation_control") + "::OnStory01";
|
|
end;
|
|
}
|
|
|
|
1@os_a,335,34,0 script #os_occupation_ev_1 HIDDEN_WARP_NPC,4,4,{
|
|
end;
|
|
|
|
OnTouch:
|
|
if (!is_party_leader())
|
|
end;
|
|
disablenpc();
|
|
disablenpc instance_npcname("#os_occupation_ev_0");
|
|
doevent instance_npcname("#os_occupation_control") + "::OnDaily01";
|
|
disablenpc instance_npcname("Est#171_ocp_0");
|
|
end;
|
|
}
|
|
|
|
1@os_a,30,360,3 script Est#171_ocp_0 4_F_ESTLOVELOY,{
|
|
cutin "ep162_est01",2;
|
|
mes "[Est]";
|
|
mes "Focus on the briefing.";
|
|
close3;
|
|
|
|
OnEvent:
|
|
sleep2 3000;
|
|
npctalk "Est : I have confirmed that there's biogas spreading at the front and it's currently under treatment.";
|
|
sleep2 5000;
|
|
npctalk "Est : If you get too close, you'll die immediately, so don't move until the treatment is finished...";
|
|
sleep2 5000;
|
|
npctalk "Est : First, we need to establish bases here. We don't know how many individuals are lurking around.";
|
|
sleep2 5000;
|
|
npctalk "Est : There isn't much information, so it's our duty to create those information. From now on, we'll split into 3 groups and subdue this place.";
|
|
sleep2 5000;
|
|
npctalk "Est : Alpha Team, start searching around the southern waterway.";
|
|
sleep2 5000;
|
|
npctalk "Est : Bravo Team, you will be sweeping with me before the eastern boundary.";
|
|
sleep2 5000;
|
|
npctalk "Est : The Echo team is in charge of backups under the command of " + strcharinfo(0) + ". You will block this place and prevent individuals from going outside.";
|
|
sleep2 5000;
|
|
npctalk "Est : We shouldn't have situations where we'll ask for support, but if such situation occurs, the Echo team will be called.";
|
|
sleep2 5000;
|
|
mapannounce 'map$,"Chemical Treatment Unit : The biogas facilities locked has been completed. The residual gas will continue for the next few minutes.",bc_map,0xFFCC00;
|
|
sleep2 5000;
|
|
npctalk "Est : It's time. We're moving. " + strcharinfo(0) + "'s unit is a support team, wait here and respond to communications.";
|
|
sleep2 5000;
|
|
doevent instance_npcname("#os_occupation_control") + "::OnStory02";
|
|
end;
|
|
}
|
|
|
|
1@os_a,29,360,3 script #171_ocp_dev_0 4_SCR_MT_ROBOTS,{
|
|
if ('ocp >= 5) {
|
|
mes "## Received Message ##";
|
|
mes "## Team Alpha's last communication was at Oscar Sierra 52 177 ##";
|
|
navigateto("1@os_a",52,177);
|
|
close;
|
|
}
|
|
switch ('ocp) {
|
|
case 1:
|
|
mes "## Enter Message Input ##";
|
|
next;
|
|
setarray .@input$,
|
|
"Engaging with mutants on north.","Engaging with small mutants.","Ah~! I want to go home!";
|
|
.@menu$ = implode(.@input$,":");
|
|
.@s = select(.@menu$) - 1;
|
|
'ocp = 2;
|
|
mapannounce 'map$,strcharinfo(0) + " : " + .@input$[.@s],bc_map,0xEE66EE;
|
|
doevent instance_npcname(strnpcinfo(0)) + "::OnEvent02";
|
|
close;
|
|
case 3:
|
|
mes "## Enter Message Input ##";
|
|
next;
|
|
setarray .@input$,
|
|
"Echo is fighting too. Requesting for support.","There was an engagement, but it's over.","Save me!";
|
|
.@menu$ = implode(.@input$,":");
|
|
.@s = select(.@menu$) - 1;
|
|
'ocp = 4;
|
|
mapannounce 'map$,strcharinfo(0) + " : " + .@input$[.@s],bc_map,0xEE66EE;
|
|
doevent instance_npcname(strnpcinfo(0)) + "::OnEvent03";
|
|
close;
|
|
default:
|
|
mes "## No Communication Status ##";
|
|
close;
|
|
}
|
|
end;
|
|
|
|
OnEvent01:
|
|
mapannounce 'map$,"Alpha : Alpha is approaching south. We found a number of mutants heading north towards Echo.",bc_map,0xCCCC00;
|
|
sleep2 6000;
|
|
mapannounce 'map$,"Est : Reception sensitivity is good, Echo prepare for response, and report when anything occurs.",bc_map,0x00EEEE;
|
|
sleep2 6000;
|
|
mapannounce 'map$,"Alpha : Alpha found a number of mutants on southern drainage. We're going to engage in battle.",bc_map,0xCCCC00;
|
|
sleep2 9000;
|
|
mapannounce 'map$,"Est : ---Roger.",bc_map,0x00EEEE;
|
|
sleep2 3000;
|
|
mapannounce 'map$,"Est : Alpha, send a transmission after you're done with the engagement.",bc_map,0x00EEEE;
|
|
sleep2 6000;
|
|
mapannounce 'map$,"Alpha : The drainage channel is now clear of mutants. Residual biological experiments were confirmed. We are preparing for the second engagement.",bc_map,0xCCCC00;
|
|
sleep2 6000;
|
|
mapannounce 'map$,"Est : Alpha, roger. Echo, status report.",bc_map,0x00EEEE;
|
|
sleep2 3000;
|
|
mapannounce 'map$,"Est : " + strcharinfo(0) + "!! Response your current situation!!",bc_map,0x00EEEE;
|
|
'ocp = 1;
|
|
specialeffect EF_BIG_PORTAL;
|
|
end;
|
|
|
|
OnEvent02:
|
|
sleep2 3000;
|
|
mapannounce 'map$,"Est : Echo's reception is not smooth. Re-transmit the message.",bc_map,0x00EEEE;
|
|
sleep2 10000;
|
|
mapannounce 'map$,"Alpha : It's an ambush! Current coordinates are are Oscar Sierra 9...@$%**!",bc_map,0xCCCC00;
|
|
sleep2 6000;
|
|
mapannounce 'map$,"Est : Alpha retransmit your coordinates. Alpha!!! Please respond!!.",bc_map,0x00EEEE;
|
|
sleep2 6000;
|
|
mapannounce 'map$,"Alpha : ---- Tchhhhhhh ----",bc_map,0xCCCC00;
|
|
sleep2 6000;
|
|
mapannounce 'map$,"Est : Damn!... Echo, check if you can get support to Alpha's coordinates.",bc_map,0xCCCC00;
|
|
sleep2 3000;
|
|
mapannounce 'map$,"Est : " + strcharinfo(0) + "! Check Alpha's coordinates if it's available!",bc_map,0x00EEEE;
|
|
'ocp = 3;
|
|
specialeffect EF_BIG_PORTAL;
|
|
end;
|
|
|
|
OnEvent03:
|
|
sleep2 6000;
|
|
mapannounce 'map$,"?????? : This is Foxtrot. Ground artillery support has been prepared. Please send the coordinates that needs support.",bc_map,0x00FF44;
|
|
sleep2 6000;
|
|
mapannounce 'map$,"Est : Alpha is unresponsive. " + strcharinfo(0) + " please support them. The coordinates are Oscar Sierra 32 356",bc_map,0x00EEEE;
|
|
sleep2 6000;
|
|
specialeffect EF_CLOUD4,AREA,instance_npcname("#ocp_rebel_5");
|
|
mapannounce 'map$,"?????? : Foxtrot reporting, coordinates received. Please be careful to hit only the mutants.",bc_map,0x00FF44;
|
|
sleep2 6000;
|
|
mapannounce 'map$,"?????? : In 3 seconds, the mutant only ground artillery will be sent on the side of Echo.",bc_map,0x00FF44;
|
|
sleep2 3000;
|
|
for (.@i = 1; .@i < 26; .@i++) {
|
|
specialeffect EF_METEORSTORM,AREA,instance_npcname("#ocp_rebel_" + .@i);
|
|
killmonster 'map$,instance_npcname("#171_ocp_mob")+"::OnStoryKill";
|
|
sleep2 300;
|
|
}
|
|
killmonster 'map$,instance_npcname("#171_ocp_mob")+"::OnPoisonKill";
|
|
sleep2 1000;
|
|
mapannounce 'map$,"?????? : Echo-coordinates mutant artillery support is complete.",bc_map,0x00FF44;
|
|
sleep2 6000;
|
|
mapannounce 'map$,"Est : Engagement on our side has ended.",bc_map,0x00EEEE;
|
|
sleep2 6000;
|
|
mapannounce 'map$,"Est : I will send the estimated coordinates of their last contact point using the radio. Please send support after getting the information on the radio.",bc_map,0x00EEEE;
|
|
sleep2 3000;
|
|
'ocp = 5;
|
|
specialeffect EF_BIG_PORTAL;
|
|
donpcevent instance_npcname("#os_occupation_control") + "::OnStory03";
|
|
end;
|
|
}
|
|
|
|
1@os_a,52,177,3 script #171_ocp_dev_1 4_SCR_MT_ROBOTS,3,3,{
|
|
if ('ocp == 5) {
|
|
mes "## Send Message Input ##";
|
|
next;
|
|
select("There is no trace of alpha. Only the radio.");
|
|
'ocp = 6;
|
|
mapannounce 'map$,strcharinfo(0) + " : There is no trace of alpha. Only the radio is here.",bc_map,0xEE66EE;
|
|
sleep2 4000;
|
|
mapannounce 'map$,"Est : " + strcharinfo(0) + ". Please look around if there are any traces left.",bc_map,0x00EEEE;
|
|
sleep2 3000;
|
|
select("Nothing in particular.");
|
|
mapannounce 'map$,strcharinfo(0) + " : Nothing in particular.",bc_map,0xEE66EE;
|
|
sleep2 3000;
|
|
mapannounce 'map$,"Est : Bravo has completed the search on the east side.",bc_map,0x00EEEE;
|
|
sleep2 4000;
|
|
mapannounce 'map$,"Est : We are going to move south. I'll transmit the new coordinates. Please prepare yourselves for an engagement.",bc_map,0x00EEEE;
|
|
mes "## Coordinates Received ##";
|
|
enablenpc instance_npcname("#171_ocp_wrp_0");
|
|
hideonnpc instance_npcname("#171_ocp_wrp_0");
|
|
donpcevent instance_npcname("#171_ocp_wrp_0") + "::OnMobSpawn";
|
|
initnpctimer instance_npcname("#171_ocp_wrp_0");
|
|
}
|
|
navigateto("1@os_a",84,256);
|
|
end;
|
|
|
|
OnTouch:
|
|
if ('ocp == 5)
|
|
npctalk "Est : " + strcharinfo(0) + " can you hear me? If you can, please respond.";
|
|
end;
|
|
}
|
|
|
|
1@os_a,84,256,5 script #171_ocp_wrp_0 4_ENERGY_BLUE,4,4,{
|
|
end;
|
|
|
|
OnTouch:
|
|
.@event$ = instance_npcname(strnpcinfo(0)) + "::OnMobKill";
|
|
if (getd("'" + strnpcinfo(2)) && !mobcount('map$,.@event$)) {
|
|
disablenpc();
|
|
.@id = atoi(replacestr(strnpcinfo(2),"171_ocp_wrp_",""));
|
|
if (.@id < 2) {
|
|
enablenpc instance_npcname("#171_ocp_wrp_" + (.@id + 1));
|
|
hideonnpc instance_npcname("#171_ocp_wrp_" + (.@id + 1));
|
|
donpcevent instance_npcname("#171_ocp_wrp_" + (.@id + 1)) + "::OnSummon";
|
|
}else
|
|
donpcevent instance_npcname("#171_ocp_wrp_2") + "::OnBossSummon";
|
|
switch (.@id) {
|
|
case 0:
|
|
monster 'map$,144,275,"",2536,1,instance_npcname("#171_ocp_mob") + "::OnPoisonKill";
|
|
navigateto("1@os_a",163,266);
|
|
mapannounce 'map$,"Est : " + strcharinfo(0) + ", can you hear me?",bc_map,0x00EEEE;
|
|
sleep2 3000;
|
|
mapannounce 'map$,"Est : I transmitted the second search coordinates. Be careful not to lose your records.",bc_map,0x00EEEE;
|
|
sleep2 6000;
|
|
mapannounce 'map$,"Est : " + strcharinfo(0) + ", check if there are any traces around there.",bc_map,0x00EEEE;
|
|
initnpctimer instance_npcname("#171_ocp_wrp_1");
|
|
sleep2 3000;
|
|
mapannounce 'map$,strcharinfo(0) + " : I have found a troop of mutants along the route.",bc_map,0xEE66EE;
|
|
sleep2 3000;
|
|
mapannounce 'map$,"Est : If you see a mutant who can communicate, immediately capture it. Other than that... You can subdue them all.",bc_map,0x00EEEE;
|
|
break;
|
|
case 1:
|
|
navigateto("1@os_a",138,174);
|
|
initnpctimer instance_npcname("#171_ocp_wrp_2");
|
|
mapannounce 'map$,"Est : " + strcharinfo(0) + ", are you still alive?",bc_map,0x00EEEE;
|
|
sleep2 3000;
|
|
mapannounce 'map$,strcharinfo(0) + " : Team Echo is still alive. We are moving towards the southern point.",bc_map,0xEE66EE;
|
|
sleep2 3000;
|
|
mapannounce 'map$,"Est : Bravo is also moving towards there, we're skipping the eastern point.",bc_map,0x00EEEE;
|
|
sleep2 3000;
|
|
mapannounce 'map$,strcharinfo(0) + " : I hope that Bravo arrive safely.",bc_map,0xEE66EE;
|
|
sleep2 3000;
|
|
mapannounce 'map$,"Est : I wish the same for Team Echo.",bc_map,0x00EEEE;
|
|
break;
|
|
case 2:
|
|
navigateto("1@os_a",161,178);
|
|
mapannounce 'map$,"???? : Grrr...",bc_map,0xFF9999;
|
|
}
|
|
}
|
|
end;
|
|
|
|
OnMobSpawn:
|
|
.@event$ = instance_npcname(strnpcinfo(0)) + "::OnMobKill";
|
|
setarray .@xy,63,214,20349,63,230,20349,63,218,20350,63,222,20350,63,226,20350,63,234,20350,63,238,20350,63,242,20350;
|
|
for (.@i = 0; .@i < getarraysize(.@xy); .@i += 3)
|
|
monster 'map$,.@xy[.@i],.@xy[.@i+1],"Incomplete " + getmonsterinfo(.@xy[.@i+2],MOB_NAME),.@xy[.@i+2],1,.@event$;
|
|
end;
|
|
|
|
OnSummon:
|
|
.@event$ = instance_npcname(strnpcinfo(0)) + "::OnMobKill";
|
|
.@id = atoi(replacestr(strnpcinfo(2),"171_ocp_wrp_",""));
|
|
switch (.@id) {
|
|
case 1: setarray .@xy,146,266,20349,166,266,20349,170,266,20349,154,266,20349,126,266,20350,130,266,20350,134,266,20350,138,266,20350,142,266,20350,150,266,20350,158,266,20350,162,266,20350,174,266,20350; break;
|
|
case 2: setarray .@xy,151,243,20348,144,216,20349,141,213,20349,137,210,20349,132,207,20349,139,200,20349,146,199,20349,139,196,20349,146,216,20350,141,213,20350,135,213,20350,137,212,20350,143,203,20350,139,209,20350,134,199,20350;
|
|
}
|
|
for (.@i = 0; .@i < getarraysize(.@xy); .@i += 3)
|
|
monster 'map$,.@xy[.@i],.@xy[.@i+1],"Incomplete " + getmonsterinfo(.@xy[.@i+2],MOB_NAME),.@xy[.@i+2],1,.@event$;
|
|
end;
|
|
|
|
OnMobKill:
|
|
end;
|
|
|
|
OnBossSummon:
|
|
setarray .@xy,161,178,20347;
|
|
.@event$ = instance_npcname("#171_ocp_mob") + "::OnBossKillStory";
|
|
monster 'map$,.@xy[.@i],.@xy[.@i+1],"????",.@xy[.@i+2],1,.@event$;
|
|
getunitdata $@mobid[0],.@boss_data;
|
|
.@DAMAGE = (.@boss_data[UMOB_MAXHP]/10) * 9;
|
|
.@HP = (.@boss_data[UMOB_MAXHP] - .@DAMAGE)/2;
|
|
setunitdata $@mobid[0],UMOB_HP,.@HP;
|
|
end;
|
|
|
|
OnTimer10000:
|
|
stopnpctimer;
|
|
.@event$ = instance_npcname(strnpcinfo(0)) + "::OnMobKill";
|
|
.@id = atoi(replacestr(strnpcinfo(2),"171_ocp_wrp_",""));
|
|
.@count = mobcount('map$,.@event$);
|
|
if (.@count) {
|
|
mapannounce 'map$,"Remaining Mutant Survivor - " + .@count,bc_map,0xFFFF00;
|
|
initnpctimer;
|
|
} else {
|
|
mapannounce 'map$,"Intermediate point secured.",bc_map,0xFFFF00;
|
|
setd("'" + strnpcinfo(2),1);
|
|
hideoffnpc();
|
|
}
|
|
end;
|
|
}
|
|
|
|
1@os_a,163,266,5 duplicate(#171_ocp_wrp_0) #171_ocp_wrp_1 4_ENERGY_BLUE,4,4
|
|
1@os_a,138,174,5 duplicate(#171_ocp_wrp_0) #171_ocp_wrp_2 4_ENERGY_BLUE,4,4
|
|
|
|
1@os_a,162,176,5 script #171_ocp_miguel 4_EP17_MIGUEL_D,{
|
|
if (isbegin_quest(12452) == 1) {
|
|
mes "^0000FFI think he stopped breathing.^000000";
|
|
close;
|
|
}
|
|
cutin "ep171_miguel01",0;
|
|
mes "[???]";
|
|
mes "Krrr. I guess you're not someone of Regenschirm. Can you move aside, I have something to say to that person.";
|
|
next;
|
|
cutin "",255;
|
|
mes "^0000FFThe mutant who's life is running out is trying to say something.^000000";
|
|
close;
|
|
}
|
|
|
|
1@os_a,165,176,3 script Est#171_ocp_1 4_F_ESTLOVELOY,{
|
|
if (isbegin_quest(12452) == 1) {
|
|
cutin "ep162_est01",2;
|
|
mes "[Est]";
|
|
mes strcharinfo(0) + ", I didn't think I'd survive and see you again. You're pretty good.";
|
|
next;
|
|
select("Ask about the fallen mutant.");
|
|
mes "[Est]";
|
|
mes "Well, even if you ask me... it's the first time that I'll talk to a mutant.";
|
|
emotion ET_SCRATCH;
|
|
next;
|
|
cutin "ep171_miguel03",0;
|
|
mes "[???]";
|
|
mes "... Est?";
|
|
next;
|
|
cutin "ep162_est01",2;
|
|
mes "[Est]";
|
|
mes "How do you know my name? Who are you! I'll finish you painlessly, so be honest.";
|
|
emotion ET_SURPRISE;
|
|
next;
|
|
cutin "ep171_miguel03",0;
|
|
mes "[???]";
|
|
mes "Est... Rebellion Ghost Squad... Do you remember uncle Miguel?";
|
|
next;
|
|
cutin "ep162_est01",2;
|
|
mes "[Est]";
|
|
mes "How do you know that name...";
|
|
next;
|
|
cutin "ep171_miguel03",0;
|
|
mes "[???]";
|
|
mes "Ha... haha... you still remember.";
|
|
next;
|
|
mes "^0000FFThe identification tag on the mutant's neck stands out.^000000";
|
|
next;
|
|
select("Get the identification tag and hand it to Est.");
|
|
cutin "ep162_est01",2;
|
|
mes "[Est]";
|
|
mes "Mi... guel...?";
|
|
next;
|
|
cutin "ep171_miguel03",0;
|
|
mes "[Miguel]";
|
|
mes "... Est, the last thing I'll see... is your face... That's a relief.";
|
|
next;
|
|
cutin "ep162_est01",2;
|
|
mes "[Est]";
|
|
mes "Uncle Miguel!? How did this happen!";
|
|
next;
|
|
cutin "ep171_miguel03",0;
|
|
mes "[Miguel]";
|
|
mes "Before I die... I always wanted to see my old colleagues... You fulfilled my wish.";
|
|
next;
|
|
cutin "ep162_est01",2;
|
|
mes "[Est]";
|
|
mes "Uncle! What is this! What happened to you?";
|
|
next;
|
|
cutin "ep171_miguel01",0;
|
|
mes "[Miguel]";
|
|
mes "Ugh... I don't have much time left... Listen carefully, Est.";
|
|
next;
|
|
mes "[Miguel]";
|
|
mes "Somewhere in here... the mad research results of Regenschirm... can be found somewhere in here.";
|
|
next;
|
|
mes "[Miguel]";
|
|
mes "Find everything... and you'll know what happened to me... you'll see things that can't be explained here.";
|
|
next;
|
|
cutin "ep162_est01",2;
|
|
mes "[Est]";
|
|
mes "Uncle! Wake up!! Let's go out. If we go out, we can save you!";
|
|
next;
|
|
cutin "ep171_miguel02",0;
|
|
mes "[Miguel]";
|
|
mes "Est... you still have a big heart... that kind of feeling... on the battlefield... I taught you...";
|
|
next;
|
|
cutin "ep162_est01",2;
|
|
mes "[Est]";
|
|
mes "Uncle! Uncle!!";
|
|
next;
|
|
cutin "",255;
|
|
mes "[Miguel]";
|
|
mes "...";
|
|
if (isbegin_quest(12452) == 1)
|
|
completequest 12452;
|
|
getitem 25668,1;
|
|
getitem 25723,5;
|
|
getexp 300000,300000;
|
|
close;
|
|
}
|
|
select("Ask about Miguel");
|
|
cutin "ep162_est01",2;
|
|
mes "[Est]";
|
|
mes strcharinfo(0) +", I'm sorry but I don't feel like talking about him right now.";
|
|
next;
|
|
select("Ask about the records.");
|
|
mes "[Est]";
|
|
mes "I checked the northeast section and saw a place over the railway that seemed to be a research facility.";
|
|
next;
|
|
mes "[Est]";
|
|
mes "Maybe the research Miguel was talking about... is somewhere in there. I'm going to have to start another operation right away.";
|
|
next;
|
|
mes "[Est]";
|
|
mes "I don't think there will be anything else to do here.";
|
|
next;
|
|
select("I want to go back.");
|
|
warp "sp_cor",162,63;
|
|
end;
|
|
}
|
|
|
|
1@os_a,187,195,5 script Operation Officer#171_osd 4_M_ILYA,{
|
|
if (isbegin_quest(12454) == 1) {
|
|
mes "[Operation Officer]";
|
|
mes "You've dealt with a CP7 Mutant by yourself... did the battle went well?";
|
|
next;
|
|
mes "[Operation Officer]";
|
|
mes "Here are the supplies and experience given to the troops that joined the operation. Take it.";
|
|
erasequest 12454;
|
|
getexp 150000,150000;
|
|
getitem 25669,5;
|
|
getitem 25723,1;
|
|
next;
|
|
mes "[Operation Officer]";
|
|
mes "Even though it's a CP7 Rated, sorry I couldn't give you more experience.";
|
|
close;
|
|
}
|
|
mes "[Operation Officer]";
|
|
mes "Let's go out now. We need to prepare for repairs quickly.";
|
|
next;
|
|
if (select("Look around more.:Go Out") == 1) {
|
|
mes "[Operation Officer]";
|
|
mes "Is that so? Don't delay it for too long.";
|
|
close;
|
|
}
|
|
warp "sp_cor",162,63;
|
|
end;
|
|
}
|
|
|
|
1@os_a,1,1,0 script #171_ocp_mob HIDDEN_WARP_NPC,{
|
|
end;
|
|
|
|
OnSummonStory01:
|
|
setarray .@mob,20348,20349,20350;
|
|
for (.@i = 0; .@i < 12; .@i++) { //Summons max 12 mobs randomly
|
|
.@id = .@mob[rand(3)];
|
|
areamonster 'map$,26,349,37,357,"Incomplete " + getmonsterinfo(.@id,MOB_NAME),.@id,1,instance_npcname(strnpcinfo(0))+"::OnStoryKill";
|
|
sleep 10000;
|
|
}
|
|
end;
|
|
|
|
OnStoryKill:
|
|
end;
|
|
|
|
OnSummon:
|
|
.@id = 'osd;
|
|
.@event$ = instance_npcname(strnpcinfo(0)) + "::OnMobKill";
|
|
switch (.@id) {
|
|
case 1: setarray .@xy,334,66,20348,291,95,20348,287,97,20348,280,95,20348,272,91,20348,265,89,20349,265,93,20349,263,95,20349,267,92,20350; break;
|
|
case 2: setarray .@xy,252,82,20348,257,72,20348,260,70,20348,254,64,20348,263,83,20350,254,70,20350,259,66,20350; break;
|
|
case 3: setarray .@xy,205,90,20348,201,90,20348,208,79,20348,204,71,20348,203,81,20348,200,81,20348,211,80,20349,202,75,20349,210,88,20349,207,93,20349,200,77,20349,206,79,20349,207,78,20350,208,83,20350; break;
|
|
case 4: setarray .@xy,209,118,20348,208,129,20348,214,136,20348,222,131,20348,215,134,20348,204,137,20348,205,127,20349,222,127,20349,225,136,20349,221,132,20349,206,132,20349,217,132,20349,208,135,20350,216,129,20350,210,136,20350; break;
|
|
case 5: setarray .@xy,257,153,20348,263,156,20348,261,158,20348,256,161,20348,252,161,20348,246,156,20349,240,156,20349,248,157,20349,256,158,20349,243,156,20350,249,156,20350,237,153,20350,252,161,20350,253,161,20350; break;
|
|
case 6: setarray .@xy,200,190,20348,213,189,20348,227,190,20348,206,191,20348,201,189,20348,198,183,20348,200,170,20348,197,187,20349,200,191,20349,215,190,20349,207,190,20349,209,183,20349,218,184,20349,212,184,20349,229,185,20349,219,184,20350,199,183,20350,207,184,20350,206,182,20350,226,188,20350,203,187,20350,197,183,20350; break;
|
|
case 7: donpcevent instance_npcname(strnpcinfo(0)) + "::OnSummonBoss"; end;
|
|
}
|
|
if (.@id == 1) {
|
|
'osd = 2;
|
|
donpcevent instance_npcname(strnpcinfo(0)) + "::OnSummon";
|
|
}
|
|
if (.@id != 2)
|
|
donpcevent instance_npcname(strnpcinfo(0)) + "::OnEvent0" + .@id;
|
|
for (.@i = 0; .@i < getarraysize(.@xy); .@i += 3)
|
|
monster 'map$,.@xy[.@i],.@xy[.@i+1],"CP" + .@id + " " + getmonsterinfo(.@xy[.@i+2],MOB_NAME),.@xy[.@i+2],1,.@event$;
|
|
end;
|
|
|
|
OnMobKill:
|
|
end;
|
|
|
|
OnTimer10000:
|
|
stopnpctimer;
|
|
.@event$ = instance_npcname(strnpcinfo(0)) + "::OnMobKill";
|
|
.@count = mobcount('map$,.@event$);
|
|
if (.@count) {
|
|
mapannounce 'map$,"Remaining Mutant Survivor - " + .@count,bc_map,0xFFFF00;
|
|
initnpctimer;
|
|
} else {
|
|
mapannounce 'map$,"Sector " + ('osd - 1) + " secured.",bc_map,0x00FF00;
|
|
.@id = 'osd + 1;
|
|
'osd = .@id;
|
|
if (.@id == 5)
|
|
killmonster 'map$,instance_npcname(strnpcinfo(0)) + "::OnPoisonKill";
|
|
donpcevent instance_npcname(strnpcinfo(0)) + "::OnSummon";
|
|
}
|
|
end;
|
|
|
|
OnEvent01:
|
|
mapannounce 'map$,"Operation Officer : The Alpha team should be prepare to fight the moment you felt a Mutant's reaction near you.",bc_map,0x00EEEE;
|
|
sleep 6000;
|
|
mapannounce 'map$,"Operation Officer : There are no civilian in the main search area, so you can safely subdue any moving creatures.",bc_map,0x00EEEE;
|
|
sleep 6000;
|
|
mapannounce 'map$,"Operation Officer : Charlie, and Delta Team, if there is an engagement situation, immediately go into battle without reporting.",bc_map,0x00EEEE;
|
|
initnpctimer;
|
|
end;
|
|
|
|
OnEvent03:
|
|
mapannounce 'map$,"Operation Officer : We received a precaution within this area.",bc_map,0x00EEEE;
|
|
sleep 6000;
|
|
mapannounce 'map$,"Operation Officer : A mutant labeled with A013 is a independent mutant unrelated to its base.",bc_map,0x00EEEE;
|
|
sleep 6000;
|
|
mapannounce 'map$,"Operation Officer : It is said that it's combat ability is stronger than of ordinary mutants, avoid combat unless you are willing to fight.",bc_map,0x00EEEE;
|
|
initnpctimer;
|
|
end;
|
|
|
|
OnEvent04:
|
|
mapannounce 'map$,"Operation Officer : Be careful when dealing with CP4 or higher grade mutants.",bc_map,0x00EEEE;
|
|
sleep 6000;
|
|
mapannounce 'map$,"Operation Officer : They are the same type as CP1, but their destructive power increases with their grade. Be careful not to be surrounded.",bc_map,0x00EEEE;
|
|
initnpctimer;
|
|
end;
|
|
|
|
OnEvent05:
|
|
mapannounce 'map$,"Operation Officer : Sector 4 is said to be a confidential documents storage room.",bc_map,0x00EEEE;
|
|
sleep 6000;
|
|
mapannounce 'map$,"Operation Officer : The advanced team already searched the area, but there was nothing special, so focus on the battle and be careful to not get surrounded.",bc_map,0x00EEEE;
|
|
initnpctimer;
|
|
end;
|
|
|
|
OnEvent06:
|
|
mapannounce 'map$,"Operation Officer : Bravo Team. Is engaged with CP6 Mutants. Their offense is very powerful.",bc_map,0x00EEEE;
|
|
sleep 6000;
|
|
mapannounce 'map$,"Operation Officer : Alpha, Charlie, Delta team should also be careful. Don't get surrounded by CP6 Grade mutants!",bc_map,0x00EEEE;
|
|
initnpctimer;
|
|
end;
|
|
|
|
OnSummonBoss:
|
|
sleep 3000;
|
|
mapannounce 'map$,"Operation Officer : To all team. If you find an S-Class mutant, please engage in the battle immediately.",bc_map,0x00EEEE;
|
|
sleep 3000;
|
|
mapannounce 'map$,"???? : Grrr...",bc_map,0xFF9999;
|
|
sleep 3000;
|
|
mapannounce 'map$,"Operation Officer : Be careful, it's difficult to deal with mutants with high CP grade!",bc_map,0x00EEEE;
|
|
monster 'map$,205,188,"CP7 Miguel",20346,1,instance_npcname(strnpcinfo(0)) + "::OnBossKill";
|
|
'boss_gid = $@mobid[0];
|
|
donpcevent instance_npcname(strnpcinfo(0)) + "::OnBossSkill";
|
|
end;
|
|
|
|
OnBossKillStory:
|
|
enablenpc instance_npcname("#171_ocp_miguel");
|
|
enablenpc instance_npcname("Est#171_ocp_1");
|
|
end;
|
|
|
|
OnBossKill:
|
|
.@event$ = instance_npcname(strnpcinfo(0)) + "::OnSummonKill";
|
|
killmonster 'map$,.@event$;
|
|
mapannounce 'map$,"Operation Officer : Guess I'm a little late!",bc_map,0x00EEEE;
|
|
enablenpc instance_npcname("Operation Officer#171_osd");
|
|
end;
|
|
|
|
OnBossSkill:
|
|
.@gid = 'boss_gid;
|
|
freeloop(true);
|
|
while(unitexists(.@gid)) {
|
|
if (unitexists(.@gid)) {
|
|
getunitdata .@gid,.@data;
|
|
if (.@data[UMOB_HP] <= ((.@data[UMOB_MAXHP]/10) * 7)) {
|
|
donpcevent instance_npcname(strnpcinfo(0)) + "::OnSummonSkill";
|
|
break;
|
|
}
|
|
}
|
|
sleep 100;
|
|
}
|
|
freeloop(false);
|
|
end;
|
|
|
|
OnSummonSkill:
|
|
.@gid = 'boss_gid;
|
|
.@event$ = instance_npcname(strnpcinfo(0)) + "::OnSummonKill";
|
|
freeloop(true);
|
|
while(unitexists(.@gid)) {
|
|
sleep 100;
|
|
if(!unitexists(.@gid))
|
|
end;
|
|
getunitdata .@gid,.@data;
|
|
if (.@data[UMOB_HP] <= ((.@data[UMOB_MAXHP]/10) * 3) && 'skill == 0)
|
|
'skill = 1;
|
|
if (.@data[UMOB_X] == 'gid_x && .@data[UMOB_Y] == 'gid_y)
|
|
continue;
|
|
killmonster 'map$,.@event$;
|
|
if (unitexists(.@gid)) {
|
|
'gid_x = .@data[UMOB_X];
|
|
'gid_y = .@data[UMOB_Y];
|
|
monster 'map$,.@data[UMOB_X] - 7,.@data[UMOB_Y],"",20351,1,.@event$;
|
|
monster 'map$,.@data[UMOB_X] + 7,.@data[UMOB_Y],"",20351,1,.@event$;
|
|
monster 'map$,.@data[UMOB_X],.@data[UMOB_Y] - 7,"",20351,1,.@event$;
|
|
monster 'map$,.@data[UMOB_X],.@data[UMOB_Y] + 7,"",20351,1,.@event$;
|
|
if ('skill) {
|
|
monster 'map$,.@data[UMOB_X] - 5,.@data[UMOB_Y] + 5,"",20351,1,.@event$;
|
|
monster 'map$,.@data[UMOB_X] + 5,.@data[UMOB_Y] + 5,"",20351,1,.@event$;
|
|
monster 'map$,.@data[UMOB_X] - 5,.@data[UMOB_Y] - 5,"",20351,1,.@event$;
|
|
monster 'map$,.@data[UMOB_X] + 5,.@data[UMOB_Y] - 5,"",20351,1,.@event$;
|
|
}
|
|
} else
|
|
break;
|
|
}
|
|
freeloop(false);
|
|
end;
|
|
|
|
OnSummonKill:
|
|
end;
|
|
|
|
OnPoisonStory:
|
|
monster 'map$,44,340,"",2536,1,instance_npcname(strnpcinfo(0)) + "::OnPoisonKill";
|
|
monster 'map$,44,344,"",2536,1,instance_npcname(strnpcinfo(0)) + "::OnPoisonKill";
|
|
monster 'map$,43,360,"",2536,1,instance_npcname(strnpcinfo(0)) + "::OnPoisonKill";
|
|
end;
|
|
|
|
OnPoisonDaily:
|
|
monster 'map$,252,107,"",2536,1,instance_npcname(strnpcinfo(0)) + "::OnPoisonKill";
|
|
monster 'map$,255,107,"",2536,1,instance_npcname(strnpcinfo(0)) + "::OnPoisonKill";
|
|
end;
|
|
|
|
OnPoisonKill:
|
|
end;
|
|
}
|
|
|
|
1@os_a,26,345,7 duplicate(dummy_npc) #ocp_rebel_1 4_M_GUNSLINGER3
|
|
1@os_a,38,357,1 duplicate(dummy_npc) #ocp_rebel_2 4_F_GUNSLINGER3
|
|
1@os_a,29,348,7 duplicate(dummy_npc) #ocp_rebel_3 4_M_REBELLION2
|
|
1@os_a,29,351,7 duplicate(dummy_npc) #ocp_rebel_4 4_M_REBELLION2
|
|
1@os_a,32,351,7 duplicate(dummy_npc) #ocp_rebel_5 4_M_REBELLION3
|
|
1@os_a,29,345,7 duplicate(dummy_npc) #ocp_rebel_6 4_M_REBELLION2
|
|
1@os_a,26,348,7 duplicate(dummy_npc) #ocp_rebel_7 4_M_REBELLION2
|
|
1@os_a,29,357,7 duplicate(dummy_npc) #ocp_rebel_8 4_M_REBELLION2
|
|
1@os_a,38,348,1 duplicate(dummy_npc) #ocp_rebel_9 4_F_GUNSLINGER3
|
|
1@os_a,32,348,7 duplicate(dummy_npc) #ocp_rebel_10 4_M_REBELLION3
|
|
1@os_a,26,351,7 duplicate(dummy_npc) #ocp_rebel_11 4_M_GUNSLINGER3
|
|
1@os_a,35,345,1 duplicate(dummy_npc) #ocp_rebel_12 4_F_GUNSLINGER2
|
|
1@os_a,35,348,1 duplicate(dummy_npc) #ocp_rebel_13 4_F_GUNSLINGER2
|
|
1@os_a,26,357,7 duplicate(dummy_npc) #ocp_rebel_14 4_M_GUNSLINGER3
|
|
1@os_a,26,354,7 duplicate(dummy_npc) #ocp_rebel_15 4_M_GUNSLINGER3
|
|
1@os_a,32,354,7 duplicate(dummy_npc) #ocp_rebel_16 4_M_REBELLION3
|
|
1@os_a,29,354,7 duplicate(dummy_npc) #ocp_rebel_17 4_M_REBELLION2
|
|
1@os_a,35,351,1 duplicate(dummy_npc) #ocp_rebel_18 4_F_GUNSLINGER2
|
|
1@os_a,35,354,1 duplicate(dummy_npc) #ocp_rebel_19 4_F_GUNSLINGER2
|
|
1@os_a,32,345,7 duplicate(dummy_npc) #ocp_rebel_20 4_M_REBELLION3
|
|
1@os_a,38,351,1 duplicate(dummy_npc) #ocp_rebel_21 4_F_GUNSLINGER3
|
|
1@os_a,35,357,1 duplicate(dummy_npc) #ocp_rebel_22 4_F_GUNSLINGER2
|
|
1@os_a,38,354,1 duplicate(dummy_npc) #ocp_rebel_23 4_F_GUNSLINGER3
|
|
1@os_a,38,345,1 duplicate(dummy_npc) #ocp_rebel_24 4_F_GUNSLINGER3
|
|
1@os_a,32,357,7 duplicate(dummy_npc) #ocp_rebel_25 4_M_REBELLION3
|