//================= Hercules Script =======================================
//= _ _ _
//= | | | | | |
//= | |_| | ___ _ __ ___ _ _| | ___ ___
//= | _ |/ _ \ '__/ __| | | | |/ _ \/ __|
//= | | | | __/ | | (__| |_| | | __/\__ \
//= \_| |_/\___|_| \___|\__,_|_|\___||___/
//================= License ===============================================
//= This file is part of Hercules.
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
//= Copyright (C) 2013-2015 Hercules Dev Team
//= Copyright (C) Euphy
//=
//= Hercules is free software: you can redistribute it and/or modify
//= it under the terms of the GNU General Public License as published by
//= the Free Software Foundation, either version 3 of the License, or
//= (at your option) any later version.
//=
//= This program is distributed in the hope that it will be useful,
//= but WITHOUT ANY WARRANTY; without even the implied warranty of
//= MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
//= GNU General Public License for more details.
//=
//= You should have received a copy of the GNU General Public License
//= along with this program. If not, see <http://www.gnu.org/licenses/>.
//=========================================================================
//= Buwaya Cave
//================= Description ===========================================
//= Defeat Buwaya in his cave.
//= Part of the "Secret in the Woods" quest.
//================= Current Version =======================================
//= 1.0
//=========================================================================
1@ma_c mapflag src4instance
ma_fild02,312,317,5 script Guard#buwaya_cave 4_MAL_SOLDIER,{
if (BaseLevel < 130) {
mes "[Guard]";
mes "People under ^ff0000level 130^000000";
mes "cannot enter this place.";
mes "This place is dangerous. Please go back.";
close;
}
.@party_id = getcharid(1);
.@md_name$ = "Buwaya Cave";
if (!.@party_id) {
mes "[Guard]";
mes "Buwaya is dangerous.";
mes "Please come back after you form a";
mes "team with other people.";
close;
}
if (getcharid(0) == getpartyleader(.@party_id,2)) {
mes "[Guard]";
mes "This place is dangerous. Please go back.";
mes "If you dont have any business here, please go back.";
next;
while(1) {
switch(select("Why is it so dangerous?", "I'm here to hunt down Buwaya.", "End conversation.")) {
case 1:
mes "[Guard]";
mes "Recently, there has been a case";
mes "where villagers have disappeared.";
mes "After investigating the tracks, ";
mes "we found out the giant monster Buwaya";
mes "was responsible.";
next;
mes "[Guard]";
mes "Soldiers and mercenaries have been dispatched to ";
mes "hunt down Buwaya, but were never";
mes "completely successful.";
next;
mes "[Guard]";
mes "Buwaya is still kidnapping";
mes "the villagers to this day.";
mes "Please gather some people to get rid of Buwaya.";
next;
break;
case 2:
.@playtime = questprogress(4229,PLAYTIME);
if (!.@playtime) {
// fall through
} else if (.@playtime == 1) {
mes "[Guard]";
mes "Buwaya is still hiding.";
mes "Even if you enter now, Buwaya will not come out. ";
mes "Please come back later.";
close;
} else {
erasequest 4229;
// fall through
}
.@instance = instance_create(.@md_name$,.@party_id);
if (.@instance < 0) {
mes "[Guard]";
mes "Party name is... "+getpartyname(.@party_id)+".";;
mes "Party leader is... "+strcharinfo(PC_NAME);
mes "^0000ff"+.@md_name$+"^000000 cannot be opened now.";
mes "Please try a moment later.";
close;
}
if (instance_attachmap("1@ma_c",.@instance) == "") {
mes "^0000ff"+.@md_name$+"^000000 - Reservation Failed!";
instance_destroy(.@instance);
close;
}
instance_set_timeout 3600,300,.@instance;
instance_init(.@instance);
mes "[Guard]";
mes "I will open up the tunnel to ^0000ff"+.@md_name$+"^000000.";
mes "I wish you good luck.";
close;
case 3:
mes "[Guard]";
mes "This place is dangerous. You cannot enter.";
close;
}
}
} else {
mes "[Guard]";
mes "Let me talk with the party leader.";
mes "Please call forth the leader.";
close;
}
}
ma_fild02,315,323,0 script Cave Entrance#buwaya WARPNPC,2,2,{
end;
OnTouch:
if (BaseLevel < 130) {
mes "[Guard]";
mes "People under ^ff0000level 130^000000";
mes "cannot enter this place.";
mes "This place is dangerous. Please go back.";
close;
}
.@playtime = questprogress(4229,PLAYTIME);
if (!.@playtime) {
// fall through
} else if (.@playtime == 1) {
mes "[Guard]";
mes "Buwaya is still hiding.";
mes "Even if you enter now, Buwaya will not come out.";
mes "Please come back later.";
close;
} else {
erasequest 4229;
// fall through
}
switch(select("Enter.", "Turn back.")) {
case 1:
if( has_instance("1@ma_c") == "" ) {
mes "The memorial dungeon Buwaya Cave does not exist.";
mes "The party leader did not generate the dungeon yet.";
close;
} else {
mapannounce "ma_fild02",getpartyname(getcharid(1))+" party's "+strcharinfo(PC_NAME)+" member began hunting Buwaya in Buwaya Cave.",bc_map,"0x00ff99"; //FW_NORMAL 12 0 0
setquest 4229;
warp "1@ma_c",35,57;
end;
}
case 2:
mes "[Guard]";
mes "You must value your life.";
mes "It is better to think carefully before you act.";
close;
}
}
1@ma_c,33,112,0 script #damage HIDDEN_WARP_NPC,7,7,{
end;
OnInstanceInit:
initnpctimer;
disablenpc instance_npcname("#damage");
end;
OnTimer1000:
enablenpc instance_npcname("#damage");
specialeffect EF_POISONHIT;
end;
OnTimer2000:
stopnpctimer;
initnpctimer;
disablenpc instance_npcname("#damage");
end;
OnTouch:
percentheal -10,-10;
sc_start SC_BLOODING,60000,0;
sc_start SC_POISON,60000,0;
end;
}
1@ma_c,29,110,5 script Kidnapped People#1 4_F_BARYO_OLD,{
mes "[Kidnapped Residents]";
mes "Buwaya was running around,";
mes "and new people got caught.";
mes "We will be stuck in here for the rest of our lives.";
next;
switch(select("Get me outta here!!", "Ca...can't escape?")) {
case 1:
mes "[Kidnapped Residents]";
mes "We don't have enough power to destroy it but Buwaya has a weakness.";
mes "Look at the wall over there.";
mes "If you knock there, Buywaya will feel pain and spit you out.";
donpcevent instance_npcname("#box_mob_call")+"::OnEnable";
close2;
disablenpc instance_npcname("Kidnapped People#1");
end;
case 2:
mes "[Kidnapped People]";
mes "Somthing is wrong here...";
mes "Have you experienced this before?";
close;
}
end;
OnInstanceInit:
disablenpc instance_npcname("Kidnapped People#1");
end;
OnEnable:
enablenpc instance_npcname("Kidnapped People#1");
donpcevent instance_npcname("#box_mob_call")+"::OnDisable";
end;
}
1@ma_c,36,110,5 script Kidnapped People#2 4_M_BARYO_OLD,{
mes "[Kidnapped Residents]";
mes "Ahaa! I wish I had a little more power...";
mes "I know its weakness...";
next;
switch(select("Tell me.", "Do you really know?")) {
case 1:
mes "[Kidnapped Residents]";
mes "Are you sure you can do it...?";
mes "Ok, listen carefully,";
mes "its weakness is...";
next;
mes "[Kidnapped Residents]";
mes "...behind us on the walls.";
sc_start SC_ATKPOTION,60000,45;
sc_start SC_MATKPOTION,60000,45;
disablenpc instance_npcname("Kidnapped People#2");
close;
case 2:
mes "[Kidnapped Residents]";
mes "WHAT?!";
mes "Are you ignoring me";
mes "because I'm captured in here?";
close;
}
end;
OnInstanceInit:
disablenpc instance_npcname("Kidnapped People#2");
end;
OnEnable:
enablenpc instance_npcname("Kidnapped People#2");
end;
}
1@ma_c,3,3,0 script #box_mob_call HIDDEN_WARP_NPC,1,1,{
end;
OnInstanceInit:
setcell instance_mapname("1@ma_c"),30,118,35,118,cell_shootable,1; //custom
disablenpc instance_npcname("#box_mob_call");
end;
OnEnable:
enablenpc instance_npcname("#box_mob_call");
.@label$ = instance_npcname("#box_mob_call")+"::OnMyMobDead";
.@map$ = instance_mapname("1@ma_c");
monster .@map$,30,118,"Buwaya's Weakness",2333,1,.@label$;
monster .@map$,35,118,"Buwaya's Weakness",2333,1,.@label$;
end;
OnDisable:
killmonster instance_mapname("1@ma_c"),instance_npcname("#box_mob_call")+"::OnMyMobDead";
disablenpc instance_npcname("#box_mob_call");
end;
OnMyMobDead:
if (mobcount(instance_mapname("1@ma_c"),instance_npcname("#box_mob_call")+"::OnMyMobDead") < 1)
donpcevent instance_npcname("#box_out")+"::OnEnable";
end;
}
1@ma_c,38,118,0 script #box_out WARPNPC,2,2,{
OnInstanceInit:
OnDisable:
disablenpc instance_npcname("#box_out");
end;
OnEnable:
enablenpc instance_npcname("#box_out");
end;
OnTouch:
.@x = rand(1,20) + 97;
.@y = rand(1,20) + 74;
warp instance_mapname("1@ma_c"),.@x,.@y;
end;
}
1@ma_c,97,74,0 script #box_call HIDDEN_WARP_NPC,50,50,{
end;
OnInstanceInit:
disablenpc instance_npcname("#box_call");
initnpctimer;
end;
OnTimer30000:
mapannounce instance_mapname("1@ma_c"),"Buwaya : I will put you in my treasure box!",bc_map,"0x00ff99"; //FW_NORMAL 12 0 0
// Should execute OnTimer33000, but client doesn't render the effect fast enough.
for(.@i = 1; .@i<=9; ++.@i)
donpcevent instance_npcname("#yunobi"+.@i)+"::OnEnable";
end;
OnTimer33000:
donpcevent instance_npcname("#box_out")+"::OnDisable";
donpcevent instance_npcname("#box_mob_call")+"::OnDisable";
donpcevent instance_npcname("Kidnapped People#1")+"::OnEnable";
donpcevent instance_npcname("Kidnapped People#2")+"::OnEnable";
end;
OnTimer34000:
enablenpc instance_npcname("#box_call");
end;
OnTimer35000:
stopnpctimer;
initnpctimer;
disablenpc instance_npcname("#box_call");
end;
OnTouch:
specialeffect2 EF_GUIDEDATTACK;
warp instance_mapname("1@ma_c"),33,112;
end;
OnDisable:
stopnpctimer;
disablenpc instance_npcname("#box_call");
end;
}
1@ma_c,97,74,0 script #yunobi1 HIDDEN_WARP_NPC,{
end;
OnInstanceInit:
hideonnpc instance_npcname(strnpcinfo(NPC_NAME));
end;
OnEnable:
specialeffect EF_MAPPILLAR2;
end;
}
1@ma_c,97,94,0 duplicate(#yunobi1) #yunobi2 HIDDEN_WARP_NPC
1@ma_c,117,94,0 duplicate(#yunobi1) #yunobi3 HIDDEN_WARP_NPC
1@ma_c,117,74,0 duplicate(#yunobi1) #yunobi4 HIDDEN_WARP_NPC
1@ma_c,117,54,0 duplicate(#yunobi1) #yunobi5 HIDDEN_WARP_NPC
1@ma_c,97,54,0 duplicate(#yunobi1) #yunobi6 HIDDEN_WARP_NPC
1@ma_c,77,54,0 duplicate(#yunobi1) #yunobi7 HIDDEN_WARP_NPC
1@ma_c,77,74,0 duplicate(#yunobi1) #yunobi8 HIDDEN_WARP_NPC
1@ma_c,77,94,0 duplicate(#yunobi1) #yunobi9 HIDDEN_WARP_NPC
1@ma_c,1,1,0 script #bunshin HIDDEN_WARP_NPC,{
end;
OnInstanceInit:
initnpctimer;
end;
OnTimer58000:
mapannounce instance_mapname("1@ma_c"),"Buwaya : I had enough with this, let's go till the end!",bc_map,"0x00ff99"; //FW_NORMAL 12 0 0
end;
OnTimer61000:
mapannounce instance_mapname("1@ma_c"),"Buwaya : This is!",bc_map,"0x00ff99"; //FW_NORMAL 12 0 0
end;
OnTimer62000:
mapannounce instance_mapname("1@ma_c"),"Buwaya : This is...MY!",bc_map,"0x00ff99"; //FW_NORMAL 12 0 0
end;
OnTimer63000:
mapannounce instance_mapname("1@ma_c"),"Buwaya : This is...MY...Deadly!",bc_map,"0x00ff99"; //FW_NORMAL 12 0 0
end;
OnTimer64000:
mapannounce instance_mapname("1@ma_c"),"Buwaya : This is...MY...Deadly... ATTACK!",bc_map,"0x00ff99"; //FW_NORMAL 12 0 0
end;
OnTimer65000:
.@label$ = instance_npcname("#bunshin")+"::OnMyMobDead";
.@map$ = instance_mapname("1@ma_c");
areamonster .@map$,112,89,122,99,"Buwaya",2332,1,.@label$;
areamonster .@map$,112,49,122,59,"Buwaya",2332,1,.@label$;
areamonster .@map$,72,49,82,59,"Buwaya",2332,1,.@label$;
areamonster .@map$,72,89,82,99,"Buwaya",2332,1,.@label$;
end;
OnTimer66000:
mapannounce instance_mapname("1@ma_c"),"Buwaya : Are you scared?",bc_map,"0x00ff99"; //FW_NORMAL 12 0 0
end;
OnTimer105000:
killmonster instance_mapname("1@ma_c"),instance_npcname("#bunshin")+"::OnMyMobDead";
stopnpctimer;
initnpctimer;
end;
OnMyMobDead:
if (mobcount(instance_mapname("1@ma_c"),instance_npcname("#bunshin")+"::OnMyMobDead") < 1) {
stopnpctimer;
initnpctimer;
}
end;
OnDisable:
stopnpctimer;
killmonster instance_mapname("1@ma_c"),instance_npcname("#bunshin")+"::OnMyMobDead";
disablenpc instance_npcname("#bunshin");
end;
}
1@ma_c,2,2,0 script #buwaya_con HIDDEN_WARP_NPC,{
end;
OnInstanceInit:
areamonster instance_mapname("1@ma_c"),90,67,104,81,"Buwaya",2319,1,instance_npcname("#buwaya_con")+"::OnMyMobDead";
end;
OnMyMobDead:
.@map$ = instance_mapname("1@ma_c");
if (mobcount(.@map$,instance_npcname("#buwaya_con")+"::OnMyMobDead") < 1) {
donpcevent instance_npcname("#box_call")+"::OnDisable";
donpcevent instance_npcname("#bunshin")+"::OnDisable";
donpcevent instance_npcname("#exit_mob")+"::OnDisable";
donpcevent instance_npcname("#cave_out")+"::OnEnable";
mapannounce .@map$,"Guard : You did great work. Please hurry up and escape to the way you came in!",bc_map,"0x00ff99"; //FW_NORMAL 12 0 0
}
end;
}
1@ma_c,3,3,0 script #exit_mob HIDDEN_WARP_NPC,{
end;
OnInstanceInit:
initnpctimer;
end;
OnTimer60000:
.@label$ = instance_npcname("#exit_mob")+"::OnMyMobDead";
.@map$ = instance_mapname("1@ma_c");
if (mobcount(.@map$,.@label$) < 30)
.@amount = 10;
else
.@amount = 1;
areamonster .@map$,43,58,47,60,"Water Plant",2331,.@amount,.@label$;
areamonster .@map$,43,58,47,60,"Egg",2329,.@amount,.@label$;
stopnpctimer;
initnpctimer;
end;
OnDisable:
stopnpctimer;
killmonster instance_mapname("1@ma_c"),instance_npcname("#exit_mob")+"::OnMyMobDead";
disablenpc instance_npcname("#exit_mob");
end;
OnMyMobDead:
end;
}
1@ma_c,28,57,0 script #cave_out WARPNPC,2,2,{
OnInstanceInit:
disablenpc instance_npcname("#cave_out");
end;
OnEnable:
enablenpc instance_npcname("#cave_out");
end;
OnTouch:
mes "Would like to go out?";
next;
if(select("Yes!", "No, I will stay.") == 1)
warp "ma_fild02",315,315;
close;
}
1@ma_c,1,1,0 script #buwaya_spawn_mobs FAKE_NPC,{
OnInstanceInit:
.@map$ = instance_mapname("1@ma_c");
areamonster .@map$,73,81,93,101,"Seaweed",2331,18;
areamonster .@map$,110,97,116,103,"Seaweed",2331,8;
areamonster .@map$,59,63,63,67,"Seaweed",2331,8;
areamonster .@map$,73,55,77,59,"Seaweed",2331,4;
areamonster .@map$,103,69,107,73,"Seaweed",2331,4;
areamonster .@map$,108,45,122,63,"Seaweed",2331,15;
areamonster .@map$,73,81,93,101,"Buwaya's Egg",2329,10;
areamonster .@map$,110,97,116,103,"Buwaya's Egg",2329,8;
areamonster .@map$,59,63,63,67,"Buwaya's Egg",2329,4;
areamonster .@map$,73,55,77,59,"Buwaya's Egg",2329,3;
areamonster .@map$,103,69,107,73,"Buwaya's Egg",2329,3;
areamonster .@map$,108,45,122,63,"Buwaya's Egg",2329,15;
monster .@map$,0,0,"Seaweed",2331,5;
monster .@map$,0,0,"Buwaya's Slave",2330,5;
end;
}