rathena/npc/re/instances/OsOccupation.txt
Everade ff7bbb9d0c
Episode 17.1 - Illusion (#6643)
Fixes https://github.com/rathena/rathena/issues/6463
Implements Episode 17.1 - Illusion

Adds viewpointmap script command
Adds getbaseexp_ratio and getjobexp_ratio script command

Comments quest log support for the Nameless Island Quest, Nameless Island Access Quest and Geoborg Family Curse Quest due to utilizing quest IDs that are used elsewhere.


Credits to @crazy-arashi for the initial content release

Co-authored-by: crazy-arashi <meganekiho@gmail.com>
Co-authored-by: aleos <aleos89@users.noreply.github.com>
Co-authored-by: Atemo <capucrath@gmail.com>
Co-authored-by: Lemongrass3110 <lemongrass@kstp.at>

Thanks to @crazy-arashi  @Atemo  @aleos89  @Lemongrass3110  @secretdataz  @Dia  @humanwizzard  @idk-whoami  @Megelith  @Daegaladh
2022-04-13 11:23:48 +02:00

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