//================= Hercules Script ======================================= //= _ _ _ //= | | | | | | //= | |_| | ___ _ __ ___ _ _| | ___ ___ //= | _ |/ _ \ '__/ __| | | | |/ _ \/ __| //= | | | | __/ | | (__| |_| | | __/\__ \ //= \_| |_/\___|_| \___|\__,_|_|\___||___/ //================= License =============================================== //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= //= Copyright (C) 2013-2020 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 . //========================================================================= //= Buwaya Cave //================= Description =========================================== //= Defeat Buwaya in his cave. //= Part of the "Secret in the Woods" quest. //================= Current Version ======================================= //= 1.0 //========================================================================= 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(CHAR_ID_PARTY); .@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(CHAR_ID_CHAR) == 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 (true) { 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) { if (instance_attachmap("1@ma_c", .@instance) == "") { mes("[Guard]"); mesf("Party name is... %s.", getpartyname(.@party_id)); mesf("Party leader is... %s", strcharinfo(PC_NAME)); mesf("^0000ff%s^000000 cannot be opened now.", .@md_name$); mes("Please try a moment later."); instance_destroy(.@instance); close(); } instance_set_timeout(3600, 300, .@instance); instance_init(.@instance); } mes("[Guard]"); mesf("I will open up the tunnel to ^0000ff%s^000000.", .@md_name$); 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", sprintf(_$("%s party's %s member began hunting Buwaya in Buwaya Cave."), getpartyname(getcharid(CHAR_ID_PARTY)), strcharinfo(PC_NAME)), bc_map, C_SPRINGGREEN); //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"), BUWAYA_WEAK, 1, .@label$); monster(.@map$, 35, 118, _("Buwaya's Weakness"), BUWAYA_WEAK, 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, C_SPRINGGREEN); //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: specialeffect(EF_GUIDEDATTACK, AREA, playerattached()); 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, C_SPRINGGREEN); //FW_NORMAL 12 0 0 end; OnTimer61000: mapannounce(instance_mapname("1@ma_c"), _("Buwaya : This is!"), bc_map, C_SPRINGGREEN); //FW_NORMAL 12 0 0 end; OnTimer62000: mapannounce(instance_mapname("1@ma_c"), _("Buwaya : This is...MY!"), bc_map, C_SPRINGGREEN); //FW_NORMAL 12 0 0 end; OnTimer63000: mapannounce(instance_mapname("1@ma_c"), _("Buwaya : This is...MY...Deadly!"), bc_map, C_SPRINGGREEN); //FW_NORMAL 12 0 0 end; OnTimer64000: mapannounce(instance_mapname("1@ma_c"), _("Buwaya : This is...MY...Deadly... ATTACK!"), bc_map, C_SPRINGGREEN); //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"), BUWAYA_GHOST, 1, .@label$); areamonster(.@map$, 112, 49, 122, 59, _("Buwaya"), BUWAYA_GHOST, 1, .@label$); areamonster(.@map$, 72, 49, 82, 59, _("Buwaya"), BUWAYA_GHOST, 1, .@label$); areamonster(.@map$, 72, 89, 82, 99, _("Buwaya"), BUWAYA_GHOST, 1, .@label$); end; OnTimer66000: mapannounce(instance_mapname("1@ma_c"), _("Buwaya : Are you scared?"), bc_map, C_SPRINGGREEN); //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"), BUWAYA, 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, C_SPRINGGREEN); //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"), MA_SEAW, .@amount, .@label$); areamonster(.@map$, 43, 58, 47, 60, _("Egg"), BUWAYA_EGG, .@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"), MA_SEAW, 18); areamonster(.@map$, 110, 97, 116, 103, _("Seaweed"), MA_SEAW, 8); areamonster(.@map$, 59, 63, 63, 67, _("Seaweed"), MA_SEAW, 8); areamonster(.@map$, 73, 55, 77, 59, _("Seaweed"), MA_SEAW, 4); areamonster(.@map$, 103, 69, 107, 73, _("Seaweed"), MA_SEAW, 4); areamonster(.@map$, 108, 45, 122, 63, _("Seaweed"), MA_SEAW, 15); areamonster(.@map$, 73, 81, 93, 101, _("Buwaya's Egg"), BUWAYA_EGG, 10); areamonster(.@map$, 110, 97, 116, 103, _("Buwaya's Egg"), BUWAYA_EGG, 8); areamonster(.@map$, 59, 63, 63, 67, _("Buwaya's Egg"), BUWAYA_EGG, 4); areamonster(.@map$, 73, 55, 77, 59, _("Buwaya's Egg"), BUWAYA_EGG, 3); areamonster(.@map$, 103, 69, 107, 73, _("Buwaya's Egg"), BUWAYA_EGG, 3); areamonster(.@map$, 108, 45, 122, 63, _("Buwaya's Egg"), BUWAYA_EGG, 15); monster(.@map$, 0, 0, _("Seaweed"), MA_SEAW, 5); monster(.@map$, 0, 0, _("Buwaya's Slave"), BUWAYA_SLAVE, 5); end; }