From 93f61040ac281b84c038af72e322a03f60bc6e03 Mon Sep 17 00:00:00 2001 From: shennetsind Date: Sat, 19 Oct 2013 16:22:04 -0300 Subject: Instance Dungeons Update As requested by the community in http://hercules.ws/board/topic/1702-implement-rathena-npc/ we're merging in the latest of rAthena's dungeons, this includes the rewriting of all instance dungeons and the addition of 4 dungeons that were not present previously (BakonawaLake, BangungotHospital, BuwayaCave and OldGlastHeim). Update also includes the ability for instances to reset (or be destroyed if instance files were disabled/removed) upon @reloadscript, instance scripts are able to control to what stage the instances are to be reset via the instance_set_respawn (reload spawn) script command, OnInstanceInit labels are now triggered when the instance starts via instance_init (and upon reload), they may be used alongside instance variables (which are persistent to @reloadscript) to save players' progress. - NPC Changelog: -- npc/instances/EndlessTower.txt --- 2.2 Instance system rewrite. [Euphy] --- 2.3 Added some missing announcements. [Euphy] --- 2.4 Added GM management function. [Euphy] -- npc/instances/NydhoggsNest.txt --- 1.5 Instance system rewrite. [Euphy] --- 1.6 Added GM management NPCs. [Euphy] -- npc/instances/OrcsMemory.txt --- 1.7 Instance system rewrite. [Euphy] -- npc/instances/SealedShrine.txt --- 2.3 Instance system rewrite. [Euphy] -- npc/other/gm_npcs.txt --- 1.0 First version. [Euphy] -- npc/re/instances/BakonawaLake.txt --- 1.0 First version. [Euphy] --- 1.1 Added GM management NPC. [Euphy] -- npc/re/instances/BangungotHospital.txt --- 1.0 First version. [Euphy] --- 1.1 Added GM management function. [Euphy] -- npc/re/instances/BuwayaCave.txt --- 1.0 First version. [Euphy] -- npc/re/instances/HazyForest.txt --- 1.1 Instance system rewrite. [Euphy] -- npc/re/instances/MalangdoCulvert.txt --- 1.0b Fixed incorrect use of 'close'. [Joseph] --- 1.1 Instance system rewrite. [Euphy] -- npc/re/instances/OctopusCave.txt --- 1.1 Instance system rewrite. [Euphy] -- npc/re/instances/OldGlastHeim.txt --- 1.0 First version. [Euphy] Special Thanks to Haru, Uziel for their contributions to this update, and ossi0110 for helping us debug it. Signed-off-by: shennetsind --- npc/re/instances/BuwayaCave.txt | 459 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 459 insertions(+) create mode 100644 npc/re/instances/BuwayaCave.txt (limited to 'npc/re/instances/BuwayaCave.txt') diff --git a/npc/re/instances/BuwayaCave.txt b/npc/re/instances/BuwayaCave.txt new file mode 100644 index 000000000..0f8117170 --- /dev/null +++ b/npc/re/instances/BuwayaCave.txt @@ -0,0 +1,459 @@ +//===== Hercules Script ====================================== +//= Buwaya Cave +//===== By: ================================================== +//= Euphy +//===== Current Version: ===================================== +//= 1.0 +//===== Description: ========================================= +//= [Official Conversion] +//= Defeat Buwaya in his cave. +//= Part of the "Secret in the Woods" quest. +//===== Additional Comments: ================================= +//= 1.0 First version. [Euphy] +//============================================================ + +1@ma_c mapflag src4instance +//============================================================ +ma_fild02,312,317,5 script Guard#buwaya_cave 570,{ + 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; + } + + set .@party_id,getcharid(1); + set .@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: + set .@playtime, checkquest(4229,PLAYTIME); + if (.@playtime == -1) { + // fall through + } else if (.@playtime == 0 || .@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 + } + set .@instance,instance_create(.@md_name$,.@party_id); + if (.@instance < 0) { + mes "[Guard]"; + mes "Party name is... "+getpartyname(.@party_id)+".";; + mes "Party leader is... "+strcharinfo(0); + 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 45,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; + } + set .@playtime, checkquest(4229,PLAYTIME); + if (.@playtime == -1) { + // fall through + } else if (.@playtime == 0 || .@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(0)+" 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 139,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_BLEEDING,60000,0; + sc_start SC_POISON,60000,0; + end; +} + +1@ma_c,29,110,5 script Kidnapped People#1 575,{ + 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 574,{ + 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 139,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"); + set .@label$, instance_npcname("#box_mob_call")+"::OnMyMobDead"; + set .@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 45,2,2,{ +OnInstanceInit: +OnDisable: + disablenpc instance_npcname("#box_out"); + end; +OnEnable: + enablenpc instance_npcname("#box_out"); + end; +OnTouch: + set .@x, rand(1,20) + 97; + set .@y, rand(1,20) + 74; + warp instance_mapname("1@ma_c"),.@x,.@y; + end; +} + +1@ma_c,97,74,0 script #box_call 139,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(set .@i,1; .@i<=9; set .@i,.@i+1) + 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 139,{ + end; +OnInstanceInit: + hideonnpc instance_npcname(strnpcinfo(0)); + end; +OnEnable: + specialeffect EF_MAPPILLAR2; + end; +} +1@ma_c,97,94,0 duplicate(#yunobi1) #yunobi2 139 +1@ma_c,117,94,0 duplicate(#yunobi1) #yunobi3 139 +1@ma_c,117,74,0 duplicate(#yunobi1) #yunobi4 139 +1@ma_c,117,54,0 duplicate(#yunobi1) #yunobi5 139 +1@ma_c,97,54,0 duplicate(#yunobi1) #yunobi6 139 +1@ma_c,77,54,0 duplicate(#yunobi1) #yunobi7 139 +1@ma_c,77,74,0 duplicate(#yunobi1) #yunobi8 139 +1@ma_c,77,94,0 duplicate(#yunobi1) #yunobi9 139 + +1@ma_c,1,1,0 script #bunshin 139,{ + 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: + set .@label$, instance_npcname("#bunshin")+"::OnMyMobDead"; + set .@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 139,{ + end; +OnInstanceInit: + areamonster instance_mapname("1@ma_c"),90,67,104,81,"Buwaya",2319,1,instance_npcname("#buwaya_con")+"::OnMyMobDead"; + end; +OnMyMobDead: + set .@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 139,{ + end; +OnInstanceInit: + initnpctimer; + end; +OnTimer60000: + set .@label$, instance_npcname("#exit_mob")+"::OnMyMobDead"; + set .@map$, instance_mapname("1@ma_c"); + if (mobcount(.@map$,.@label$) < 30) + set .@amount,10; + else + set .@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 45,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 -1,{ +OnInstanceInit: + set .@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; +} -- cgit v1.2.3-60-g2f50