//================= 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/>.
//=========================================================================
//= Bakonawa Lake
//================= Description ===========================================
//= Defeat Bakonawa before he eats the moon.
//= Part of the "Bakonawa Extermination" quest.
//================= Current Version =======================================
//= 1.1
//=========================================================================
1@ma_b mapflag src4instance
ma_scene01,174,179,4 script Taho 4_M_DEWZATIMAN,{
disable_items;
if (checkweight(Knife,1) == 0) {
mes "You are carrying too many items. Come back after taking off some of them.";
close;
}
if (MaxWeight - Weight < 10000) {
mes "You are carrying too much weight. Come back after reducing the weight.";
close;
}
if (BaseLevel < 140) {
mes "[Taho]";
mes "Hey. This is too dangerous a place for you. You cannot keep yourself safe. Get out of here and go to the village right now!";
close;
}
if (malaya_bakona1 < 7 && malaya_bakona2 < 15) {
mes "[Taho]";
mes "We are gonna be killed all by that Bakonawa. Ah, we must slay him but unfortunately we are not prepared.";
close;
}
.@party_id = getcharid(1);
.@md_name$ = "Bakonawa Lake";
.@baku_time = questprogress(12278,PLAYTIME);
if (!.@baku_time) {
if (!questprogress(12279)) setquest 12279;
}
if (!.@party_id) {
mes "[Taho]";
mes "Isn't there any company who can go with you? Or even if you wanna go alone, come after organizing a party.";
close;
}
if (!.@baku_time) {
if (getcharid(0) == getpartyleader(.@party_id,2)) {
mes "[Taho]";
mes "Are you the leader of the Bakonawa slayers? The road is not well so we have to go down the cliff with a rope, is that OK?";
next;
.@i = select("Please weave a rope.", "Now I will go down.", "Cancel.");
} else {
mes "[Taho]";
mes "You came for slaying Bakonawa. The leader of your party has to help me weaving the rope for going down.";
next;
.@i = select("", "Now I will go down.", "Cancel.");
}
switch(.@i) {
case 1:
.@instance = instance_create(.@md_name$,.@party_id);
if (.@instance < 0) {
mes "[Taho]";
mes "Oh, the rope got dropped. I have to make a new one.";
close;
}
if (instance_attachmap("1@ma_b",.@instance) == "") {
mes "^0000ff"+.@md_name$+"^000000 - Reservation Failed!";
instance_destroy(.@instance);
close;
}
instance_set_timeout 7200,300,.@instance;
instance_init(.@instance);
mes "[Taho]";
mes "Now I'm weaving, so you can go down when I'm done.";
close;
case 2:
if( has_instance("1@ma_b") == "" ) {
mes "The memorial dungeon "+.@md_name$+" does not exist.";
mes "The party leader did not generate the dungeon yet.";
close;
} else {
mapannounce "ma_scene01","A party member, "+strcharinfo(0)+" of the party "+getpartyname(.@party_id)+" is entering the dungeon, "+.@md_name$+".",bc_map,"0x00ff99"; //FW_NORMAL 12 0 0
setquest 12278;
warp "1@ma_b",64,51;
end;
}
case 3:
close;
}
} else if (.@baku_time == 1) {
mes "[Taho]";
mes "The rope used for getting to the Lake is already broken. We are now cleaning up the surroundings so come back after some time.";
close;
} else if (.@baku_time == 2) {
mes "[Taho]";
mes "It's all cleaned up around here. Now you can go down again after getting a rope.";
erasequest 12278;
close;
}
}
sec_in02,26,26,4 script Bakonawa's Rage 4_M_DEWZATIMAN,{
callfunc "F_GM_NPC";
mes "[Taho]";
mes "My name is Minky.";
if (callfunc("F_GM_NPC",1854,0) == 1) {
erasequest 12278;
erasequest 12279;
malaya_bakona1 = 7;
malaya_bakona2 = 15;
}
close;
}
1@ma_b,62,52,4 script Taho#nf 4_M_DEWZATIMAN,{
mes "[Taho]";
mes "Heehee, I could join the Bakonawa hunt, but I'd rather hide behind that rock and cheer you guys on.";
next;
mes "[Taho]";
mes "Bakonawa becomes invincible at some point. When that time comes, listen to my guides carefully. Just trust me and all will be good.";
next;
if (getcharid(0) == getpartyleader(getcharid(1),2)) {
mes "[Taho]";
mes "Now I will make Bakonawa spring out from the lake.";
next;
switch(select("Hold on! I'm not ready yet!", "Let's do it!")) {
case 1:
mes "[Taho]";
mes "Oh... alright... tell me when you are ready.";
close;
case 2:
mes "[Taho]";
mes "Then I will drop a drop of Albopal to this lake.";
next;
mes "[Taho]";
mes "Once Bakonawa tastes this, he will surface...";
donpcevent instance_npcname("#Bakonawan1")+"::OnStart";
disablenpc instance_npcname("Taho#nf");
close;
}
} else {
mes "[Taho]";
mes "I am dropping the Alpopal to make Bakonawa mad. Bakonawa can be a good source of protein once we get him.";
close;
}
}
1@ma_b,36,111,4 script #Bakonawan1 CLEAR_NPC,{
end;
OnInstanceInit:
disablenpc instance_npcname("#Bakonawan1");
end;
OnStart:
enablenpc instance_npcname("#Bakonawan1");
.@map$ = instance_mapname("1@ma_b");
mapannounce .@map$,"Taho: I can see him there on the surface! ATTACK!!!",bc_map,"0x00ffff"; //FW_NORMAL 15 0 0
monster .@map$,78,81,"Bakonawa",2320,1,instance_npcname("#Bakonawan1")+"::OnMyMobDead"; //original: (78,83)
initnpctimer;
end;
OnFail:
killmonster instance_mapname("1@ma_b"),instance_npcname("#Bakonawan1")+"::OnMyMobDead";
end;
OnMyMobDead:
.@map$ = instance_mapname("1@ma_b");
if (mobcount(.@map$,instance_npcname("#Bakonawan1")+"::OnMyMobDead") < 1) {
donpcevent instance_npcname("#BakonawaDeadn1")+"::OnStart";
killmonster .@map$,instance_npcname("#Bakonawan1")+"::OnMyMobDead";
stopnpctimer;
disablenpc instance_npcname("#Bakonawan1");
}
end;
OnTimer1000: callsub OnAnnounce,"10 minutes";
OnTimer60000: callsub OnAnnounce,"9 minutes";
OnTimer120000: callsub OnAnnounce,"8 minutes";
OnTimer180000: callsub OnAnnounce,"7 minutes";
OnTimer240000: callsub OnAnnounce,"6 minutes";
OnTimer300000: callsub OnAnnounce,"5 minutes";
OnTimer360000: callsub OnAnnounce,"4 minutes";
OnTimer420000: callsub OnAnnounce,"3 minutes";
OnTimer480000: callsub OnAnnounce,"2 minutes";
OnTimer540000: callsub OnAnnounce,"1 minute";
OnTimer570000:
mapannounce instance_mapname("1@ma_b"),"Time Limit: 30 seconds",bc_map,"0xff4400"; //FW_NORMAL 18 0 0
donpcevent instance_npcname("#SummonPuppetsn1")+"::OnStart";
end;
OnTimer600000:
.@map$ = instance_mapname("1@ma_b");
mapannounce .@map$,"Bakonawa has escaped deep into the lake.",bc_map,"0xffff00"; //FW_NORMAL 20 0 0
donpcevent instance_npcname("Taho#Fail")+"::OnStart";
donpcevent instance_npcname("#Bakonawan1")+"::OnFail";
killmonster .@map$,instance_npcname("#Bakonawan1")+"::OnMyMobDead";
stopnpctimer;
disablenpc instance_npcname("#Bakonawan1");
end;
OnAnnounce:
mapannounce instance_mapname("1@ma_b"),"Time Limit: "+getarg(0),bc_map,"0xff4400"; //FW_NORMAL 15 0 0
donpcevent instance_npcname("#SummonPuppetsn1")+"::OnStart";
end;
}
1@ma_b,78,81,0 script #SummonPuppetsn1 HIDDEN_WARP_NPC,4,5,{
end;
OnInstanceInit:
disablenpc instance_npcname("#SummonPuppetsn1");
end;
OnStart:
stopnpctimer;
enablenpc instance_npcname("#SummonPuppetsn1");
initnpctimer;
end;
OnTouch:
stopnpctimer;
disablenpc instance_npcname("#SummonPuppetsn1");
end;
OnTimer5000:
setarray .@x[0],79,71,60,61,57,89,95,96,99;
setarray .@y[0],71,72,80,90,99,73,82,90,99;
.@map$ = instance_mapname("1@ma_b");
for(.@i = 0; .@i<9; ++.@i) {
.@rand = rand(1,10);
if (.@rand > 7)
monster .@map$,.@x[.@i],.@y[.@i],"Bakonawa's Will",2337,1,instance_npcname("#SummonPuppetsn1")+"::OnMyMobDead";
else if (.@rand < 4)
monster .@map$,.@x[.@i],.@y[.@i],"Bakonawa's Will",2343,1,instance_npcname("#SummonPuppetsn1")+"::OnMyMobDead";
}
end;
OnTimer50000:
killmonster instance_mapname("1@ma_b"),instance_npcname("#SummonPuppetsn1")+"::OnMyMobDead";
stopnpctimer;
disablenpc instance_npcname("#SummonPuppetsn1");
end;
OnMyMobDead:
end;
}
1@ma_b,1,5,4 script #BakonawaDeadn1 CLEAR_NPC,{
end;
OnInstanceInit:
disablenpc instance_npcname("#BakonawaDeadn1");
end;
OnStart:
enablenpc instance_npcname("#BakonawaDeadn1");
initnpctimer;
end;
OnTimer100:
mapannounce instance_mapname("1@ma_b"),"Taho: Good! Bakonawa is hidden under water. He will now try to swallow the moon.",bc_map,"0x00ffff"; //FW_NORMAL 15 0 0
end;
OnTimer5000:
mapannounce instance_mapname("1@ma_b"),"Taho: We must make loud noises with caldron and gong so he can never concentrate on the moon!",bc_map,"0x00ffff"; //FW_NORMAL 15 0 0
end;
OnTimer10000:
mapannounce instance_mapname("1@ma_b"),"Taho: Do not engage on him even if he come above the surface. Just make loud noises!",bc_map,"0x00ffff"; //FW_NORMAL 15 0 0
end;
OnTimer15000:
mapannounce instance_mapname("1@ma_b"),"Mission - Destroy 2 caldrons and 2 gongs on left and right sides of the lake.",bc_map,"0xff3300"; //FW_NORMAL 15 0 0
donpcevent instance_npcname("#Bakonawan2")+"::OnStart";
stopnpctimer;
disablenpc instance_npcname("#BakonawaDeadn1");
end;
}
1@ma_b,36,111,4 script #Bakonawan2 CLEAR_NPC,{
end;
OnInstanceInit:
disablenpc instance_npcname("#Bakonawan2");
end;
OnStart:
enablenpc instance_npcname("#Bakonawan2");
.@label$ = instance_npcname("#Bakonawan2")+"::OnMyMobDead";
.@map$ = instance_mapname("1@ma_b");
monster .@map$,95,98,"Caldron",2328,1,.@label$;
monster .@map$,60,98,"Caldron",2328,1,.@label$;
monster .@map$,97,104,"Gong",2328,1,.@label$;
monster .@map$,58,104,"Gong",2328,1,.@label$;
donpcevent instance_npcname("#Bakonawan2-1")+"::OnStart";
initnpctimer;
end;
OnMyMobDead:
.@map$ = instance_mapname("1@ma_b");
.@mob_dead_num = mobcount(.@map$,instance_npcname("#Bakonawan2")+"::OnMyMobDead");
if (.@mob_dead_num < 1) {
donpcevent instance_npcname("#Bakonawan2-1")+"::OnEnd";
stopnpctimer;
disablenpc instance_npcname("#Bakonawan2");
} else
mapannounce .@map$,"Taho: Good! "+.@mob_dead_num+" left to go!",bc_map,"0x00ffff"; //FW_NORMAL 15 0 0
end;
OnTimer1000: callsub OnAnnounce,"5 minutes",15,1;
OnTimer60000: callsub OnAnnounce,"4 minutes",15,1;
OnTimer120000: callsub OnAnnounce,"3 minutes",15,1;
OnTimer180000: callsub OnAnnounce,"2 minutes",15,1;
OnTimer240000: callsub OnAnnounce,"1 minute",15,1;
OnTimer270000: callsub OnAnnounce,"30 seconds",15,0;
OnTimer280000: callsub OnAnnounce,"20 seconds",15,0;
OnTimer290000: callsub OnAnnounce,"10 seconds",15,0;
OnTimer295000: callsub OnAnnounce,"5 seconds",16,0;
OnTimer296000: callsub OnAnnounce,"4 seconds",17,0;
OnTimer297000: callsub OnAnnounce,"3 seconds",18,0;
OnTimer298000: callsub OnAnnounce,"2 seconds",19,0;
OnTimer299000: callsub OnAnnounce,"1 second",20,0;
OnTimer300000:
.@map$ = instance_mapname("1@ma_b");
mapannounce .@map$,"Bakonawa has escaped deep into the lake.",bc_map,"0xffff00"; //FW_NORMAL 20 0 0
donpcevent instance_npcname("Taho#Fail")+"::OnStart";
donpcevent instance_npcname("#Bakonawan2-1")+"::OnFail";
killmonster .@map$,instance_npcname("#Bakonawan2")+"::OnMyMobDead";
stopnpctimer;
disablenpc instance_npcname("#Bakonawan2");
end;
OnAnnounce:
mapannounce instance_mapname("1@ma_b"),"Time Limit: "+getarg(0),bc_map,"0xff4400"; //FW_NORMAL getarg(1) 0 0
if (getarg(2)) donpcevent instance_npcname("#SummonPuppetsn1")+"::OnStart";
end;
}
1@ma_b,36,111,4 script #Bakonawan2-1 CLEAR_NPC,{
end;
OnInstanceInit:
disablenpc instance_npcname("#Bakonawan2-1");
end;
OnStart:
enablenpc instance_npcname("#Bakonawan2-1");
monster instance_mapname("1@ma_b"),78,81,"Enraged Bakonawa",2321,1,instance_npcname("#Bakonawan2-1")+"::OnMyMobDead"; //original: (78,93)
end;
OnFail:
killmonster instance_mapname("1@ma_b"),instance_npcname("#Bakonawan2-1")+"::OnMyMobDead";
end;
OnEnd:
enablenpc instance_npcname("#Bakonawan2-1");
killmonster instance_mapname("1@ma_b"),instance_npcname("#Bakonawan2-1")+"::OnMyMobDead";
initnpctimer;
end;
OnTimer1000:
mapannounce instance_mapname("1@ma_b"),"Taho: He is back into the lake again. Is it over?",bc_map,"0x00ffff"; //FW_NORMAL 15 0 0
end;
OnTimer5000:
mapannounce instance_mapname("1@ma_b"),"Taho: UHM! Something is moving up rapidly under the water! Ba... Bakonawa is coming!!",bc_map,"0x00ffff"; //FW_NORMAL 15 0 0
end;
OnTimer10000:
mapannounce instance_mapname("1@ma_b"),"Mission - Eliminate Bakonawa who became more fierce.",bc_map,"0xff3300"; //FW_NORMAL 15 0 0
donpcevent instance_npcname("#Bakonawan3")+"::OnStart";
stopnpctimer;
disablenpc instance_npcname("#Bakonawan2-1");
end;
OnMyMobDead:
end;
}
1@ma_b,36,111,4 script #Bakonawan3 CLEAR_NPC,{
end;
OnInstanceInit:
disablenpc instance_npcname("#Bakonawan3");
end;
OnStart:
enablenpc instance_npcname("#Bakonawan3");
initnpctimer;
monster instance_mapname("1@ma_b"),78,81,"Enraged Bakonawa",2322,1,instance_npcname("#Bakonawan3")+"::OnMyMobDead"; //original: (78,83)
donpcevent instance_npcname("#Bakonawan3-1")+"::OnStart";
end;
OnMyMobDead:
.@map$ = instance_mapname("1@ma_b");
.@mob_dead_num = mobcount(.@map$,instance_npcname("#Bakonawan3")+"::OnMyMobDead");
if (.@mob_dead_num < 1) {
mapannounce .@map$,"Taho: We got him! I can see he has threw up something that looks like a box.",bc_map,"0x00ffff"; //FW_NORMAL 15 0 0
donpcevent instance_npcname("Taho#Completed")+"::OnStart";
donpcevent instance_npcname("#Bakonawan3-1")+"::OnEnd";
killmonster .@map$,instance_npcname("#Bakonawan3")+"::OnMyMobDead";
stopnpctimer;
disablenpc instance_npcname("#Bakonawan3");
}
end;
OnTimer1000:
callsub OnAnnounce,"10 minutes",15,1;
end;
OnTimer60000:
OnTimer120000:
OnTimer180000:
OnTimer240000:
donpcevent instance_npcname("#SummonPuppetsn1")+"::OnStart";
end;
OnTimer300000: callsub OnAnnounce,"5 minutes",15,1;
OnTimer360000: callsub OnAnnounce,"4 minutes",15,1;
OnTimer420000: callsub OnAnnounce,"3 minutes",15,1;
OnTimer480000: callsub OnAnnounce,"2 minutes",15,1;
OnTimer540000: callsub OnAnnounce,"1 minute",15,1;
OnTimer570000: callsub OnAnnounce,"30 seconds",15,0;
OnTimer580000: callsub OnAnnounce,"20 seconds",15,0;
OnTimer590000: callsub OnAnnounce,"10 seconds",15,0;
OnTimer595000: callsub OnAnnounce,"5 seconds",16,0;
OnTimer596000: callsub OnAnnounce,"4 seconds",17,0;
OnTimer597000: callsub OnAnnounce,"3 seconds",18,0;
OnTimer598000: callsub OnAnnounce,"2 seconds",19,0;
OnTimer599000: callsub OnAnnounce,"1 second",20,0;
OnTimer600000:
.@map$ = instance_mapname("1@ma_b");
mapannounce .@map$,"Bakonawa has escaped deep into the lake.",bc_map,"0xffff00"; //FW_NORMAL 20 0 0
donpcevent instance_npcname("Taho#Fail")+"::OnStart";
killmonster .@map$,instance_npcname("#Bakonawan3")+"::OnMyMobDead";
stopnpctimer;
disablenpc instance_npcname("#Bakonawan3");
end;
OnAnnounce:
mapannounce instance_mapname("1@ma_b"),"Time Limit: "+getarg(0),bc_map,"0xff4400"; //FW_NORMAL getarg(1) 0 0
if (getarg(2)) donpcevent instance_npcname("#SummonPuppetsn1")+"::OnStart";
end;
}
1@ma_b,36,111,4 script #Bakonawan3-1 CLEAR_NPC,{
end;
OnInstanceInit:
disablenpc instance_npcname("#Bakonawan3-1");
end;
OnStart:
initnpctimer;
end;
OnEnd:
killmonster instance_mapname("1@ma_b"),instance_npcname("#Bakonawan3-1")+"::OnMyMobDead";
//showdigit 0;
stopnpctimer;
end;
OnMyMobDead:
showdigit mobcount(instance_mapname("1@ma_b"),instance_npcname("#Bakonawan3-1")+"::OnMyMobDead");
end;
OnTimer120000: callsub OnMobSpawn,10;
OnTimer180000: callsub OnMobSpawn,15;
OnTimer240000: callsub OnMobSpawn,20;
//OnTimer300000: callsub OnMobSpawn,25;
OnTimer300000: callsub OnMobSpawn,30;
OnTimer360000: callsub OnMobSpawn,35;
OnTimer420000: callsub OnMobSpawn,40;
OnTimer480000: callsub OnMobSpawn,45;
OnTimer540000: callsub OnMobSpawn,50;
OnTimer600000:
killmonster instance_mapname("1@ma_b"),instance_npcname("#Bakonawan3-1")+"::OnMyMobDead";
stopnpctimer;
end;
OnMobSpawn:
.@label$ = instance_npcname("#Bakonawan3-1")+"::OnMyMobDead";
.@map$ = instance_mapname("1@ma_b");
killmonster .@map$,.@label$;
.@mob_dead_num = mobcount(.@map$,.@label$);
if (.@mob_dead_num < 50) {
.@mob_rg = 50 - .@mob_dead_num;
if (.@mob_rg > getarg(0))
.@mob_rg = getarg(0);
while(1) {
areamonster .@map$,74,74,82,74,"Bakonawa's Puppet",2334,1,.@label$;
.@mob_dead_num = mobcount(.@map$,.@label$);
if (.@mob_dead_num >= .@mob_rg) {
break;
}
}
}
end;
}
1@ma_b,62,52,4 script Taho#Completed 4_M_DEWZATIMAN,{
disable_items;
if (checkweight(Knife,1) == 0) {
mes "It seems you are carrying too many different kinds of items. Please try again after reducing it.";
close;
}
if (MaxWeight - Weight < 10000) {
mes "It seems you are already carrying items of too much weight. Please try again after reducing the weight.";
close;
}
if (questprogress(12279,HUNTING) == 2) {
erasequest 12279;
mes "[Taho]";
mes "This was found from Bakonawa's corpse. It would be better if you take this.";
// if (IsPremiumPcCafe == 10)
getitem Ancient_Grudge,7;
// else
// getitem Ancient_Grudge,5;
getexp 0,100000;
next;
}
mes "[Taho]";
mes "We better hurry and get out of this place. This place is still dangerous even without Bakonawa...";
next;
mes "[Taho]";
mes "Then let's use to the rope to go up!";
close2;
warp "ma_scene01",175,176;
end;
OnInstanceInit:
disablenpc instance_npcname("Taho#Completed");
end;
OnStart:
enablenpc instance_npcname("Taho#Completed");
initnpctimer;
end;
OnTimer1000:
monster instance_mapname("1@ma_b"),78,74,"Bakonawa Treasure Box",2335,1;
end;
OnTimer10000:
mapannounce instance_mapname("1@ma_b"),"Taho: After opening the treasure box, please visit me at the top of the hill. I've got something to give to you.",bc_map,"0x00ffff"; //FW_NORMAL 15 0 0
stopnpctimer;
end;
}
1@ma_b,62,52,4 script Taho#Fail 4_M_DEWZATIMAN,{
mes "[Taho]";
mes "HMM. We almost got him but he is one fast creature...";
next;
if (getcharid(0) == getpartyleader(getcharid(1),2)) {
mes "[Taho]";
mes "Are we going to try again?";
next;
switch(select("Hold on a sec!", "Of course! We cannot stand back now!")) {
case 1:
mes "[Taho]";
mes "AWW... I almost brought him out.";
close;
case 2:
mes "[Taho]";
mes "Then I will use Albopal once again to the lake.";
next;
mes "[Taho]";
mes "We are about to see Bakonawa with intenser anger...";
disablenpc instance_npcname("Taho#Fail");
donpcevent instance_npcname("#Bakonawan1")+"::OnStart";
close;
}
close;
} else {
mes "[Taho]";
mes "I am dropping Albopal like I did a while ago. I hope it pisses him off...";
close;
}
OnInstanceInit:
disablenpc instance_npcname("Taho#Fail");
end;
OnStart:
enablenpc instance_npcname("Taho#Fail");
end;
}