From 1e1d7e54f0462fed22a93d18f5b7e6cd295339f8 Mon Sep 17 00:00:00 2001 From: Atemo Date: Tue, 9 May 2017 13:34:19 +0200 Subject: [PATCH] =?UTF-8?q?Merged=20Faceworm=20Instance=20from=20idathena?= =?UTF-8?q?=20https://github.com/idathena/tr=E2=80=A6=20(#1889)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Merged Faceworm Instance from idathena https://github.com/idathena/trunk/commit/20f71d8c62f2fab2f63a47d177a240dabfaa7468 Credits to @exneval ! --- db/pre-re/skill_cast_db.txt | 2 + db/pre-re/skill_db.txt | 2 +- db/pre-re/skill_unit_db.txt | 2 +- db/re/instance_db.txt | 1 + db/re/item_db.txt | 16 +- db/re/mob_db.txt | 26 +- db/re/mob_skill_db.txt | 79 + db/re/skill_cast_db.txt | 3 + db/re/skill_db.txt | 2 +- db/re/skill_unit_db.txt | 2 +- npc/other/gm_npcs.txt | 1 + npc/re/instances/FacewormsNest.txt | 2846 ++++++++++++++++++++++++++++ npc/re/mapflag/restricted.txt | 1 + npc/re/other/Global_Functions.txt | 15 + npc/re/scripts_athena.conf | 1 + src/map/battle.c | 3 + src/map/skill.c | 2 + 17 files changed, 2979 insertions(+), 25 deletions(-) create mode 100644 npc/re/instances/FacewormsNest.txt diff --git a/db/pre-re/skill_cast_db.txt b/db/pre-re/skill_cast_db.txt index 006a1d05b8..b8ca6384f7 100644 --- a/db/pre-re/skill_cast_db.txt +++ b/db/pre-re/skill_cast_db.txt @@ -1027,6 +1027,8 @@ //========================================== //===== New Monster Skills (12.1) ========== +//-- NPC_VENOMFOG +706,0,0,0,3000,0,0,0 //-- NPC_MAXPAIN 716,0,0,0,10000,0,0,0 diff --git a/db/pre-re/skill_db.txt b/db/pre-re/skill_db.txt index 0bc453f8a0..8d2752afb1 100644 --- a/db/pre-re/skill_db.txt +++ b/db/pre-re/skill_db.txt @@ -849,7 +849,7 @@ //703,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0, NPC_WIDECOLD,Wide Crystalize //704,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0, NPC_WIDE_DEEP_SLEEP,Wide Deep Sleep //705,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0, NPC_WIDESIREN,Wide Siren's Voice -//706,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0, NPC_VENOMFOG,Venom Fog +706,0,6,4,5,0,0,10,1,no,0,0x2,0,magic,0,0x1, NPC_VENOMFOG,Venom Fog //707,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0, NPC_MILLENNIUMSHIELD,Millenium Shield 2 //708,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0, NPC_COMET,Comet 2 //709,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0, NPC_ICEMINE,Ice Mine diff --git a/db/pre-re/skill_unit_db.txt b/db/pre-re/skill_unit_db.txt index 270a3ad84a..f45c23bdf0 100644 --- a/db/pre-re/skill_unit_db.txt +++ b/db/pre-re/skill_unit_db.txt @@ -107,7 +107,7 @@ 541,0x86, , 2:2:3:3:4, 0,1000,enemy, 0x010 //NJ_RAIGEKISAI 670,0xc7, , 1, 5:5:5:5:5:5:5:5:5:13,1000,all,0x008 //NPC_EVILLAND -//706,0xfd, , 0, 0,1000,all, 0x000 //NPC_VENOMFOG +706,0xfd, , 2, 0,1000,enemy, 0x018 //NPC_VENOMFOG 2044,0xca, , 0, 2,1000,all, 0x018 //AB_EPICLESIS diff --git a/db/re/instance_db.txt b/db/re/instance_db.txt index 3e7f671468..9b585d55db 100644 --- a/db/re/instance_db.txt +++ b/db/re/instance_db.txt @@ -21,3 +21,4 @@ 14,Sara's Memories,3600,300,1@sara,250,155 15,Geffen Magic Tournament,7200,300,1@gef,119,209,1@gef_in,1@ge_st 16,Horror Toy Factory,3600,300,1@xm_d,111,22 +17,Faceworm's Nest,3600,300,1@face,112,374 diff --git a/db/re/item_db.txt b/db/re/item_db.txt index a53f12b7f9..7a31e1dfe8 100644 --- a/db/re/item_db.txt +++ b/db/re/item_db.txt @@ -4626,12 +4626,12 @@ // 6697,Costumes_Exchange_Coupons,Costumes Exchange Coupons,3,10,,10,,,,,,,,,,,,,{},{},{} 6646,Poring_Badge,Poring Badge,3,0,,0,,,,,,,,,,,,,{},{},{} -6648,Aged_Crown,Aged Crown,3,10,,10,,,,0,,,,,,,,,{},{},{} +6648,Shabby_Crown,Old Crown,3,10,,10,,,,0,,,,,,,,,{},{},{} 6649,Broken_Horn,Broken Horn,3,10,,10,,,,0,,,,,,,,,{},{},{} -6650,Aged_Ring,Aged Ring,3,10,,10,,,,0,,,,,,,,,{},{},{} -6651,Rusted_Bracalet,Rusted Bracalet,3,10,,10,,,,0,,,,,,,,,{},{},{} -6652,Aged_Photo_Album,Aged Photo Album,3,10,,10,,,,0,,,,,,,,,{},{},{} -6653,Aged_Tablet,Aged Tablet,3,10,,10,,,,0,,,,,,,,,{},{},{} +6650,Shabby_Ring,Old Ring,3,10,,10,,,,0,,,,,,,,,{},{},{} +6651,Rusty_Bracelet,Rusty Bracalet,3,10,,10,,,,0,,,,,,,,,{},{},{} +6652,Old_Photo_Album,Old Photo Album,3,10,,10,,,,0,,,,,,,,,{},{},{} +6653,Shabby_Pill,Old Pill,3,10,,10,,,,0,,,,,,,,,{},{},{} 6654,Needle_And_Thread,Needle And Thread,3,0,,0,,,,,,,,,,,,,{},{},{} 6655,Firm_Pumpkin,Firm Pumpkin,3,0,,0,,,,,,,,,,,,,{},{},{} 6656,Goast_Free_Charm,Goast Free Charm,3,0,,0,,,,,,,,,,,,,{},{},{} @@ -7209,8 +7209,8 @@ 13085,Volcano_Knife,Volcano Knife,5,10,,200,80,,,0,0x280002E,63,2,2,4,60,,1,{ bonus bAgi,2; bonus bMaxHPrate,2; bonus2 bSubEle,Ele_Fire,2; bonus2 bSubEle,Ele_Water,-5; .@r = getrefine(); if(.@r==7){ bonus bMaxHPrate,1; bonus2 bSubEle,Ele_Fire,3; } if (.@r>7) { bonus bMaxHPrate,.@r-7; bonus2 bSubEle,Ele_Fire,.@r-7; } },{},{} 13086,Goldsmithing_Dagger,Goldsmithing Dagger,5,20,,500,35:25,,1,0,0x02800066,63,2,2,1,1,1,1,{},{},{} 13088,Greater_Lease,Greater Lease,5,10,,500,110:50,,,1,0x280006E,63,2,2,4,30,1,1,{ .@r = getrefine(); if (.@r >= 5) bonus bMatk,30; if (.@r >= 7) bonus bMatk,10; if (.@r >= 9) bonus bMatk,10; },{},{} -13089,FaceWorm_Leg,FaceWorm Leg,5,10,,500,0:50,110,,1,0x3FFFFFFF,63,2,2,3,24,1,1,{ bonus bAtkEle,Ele_Poison; },{},{} -13090,Faceworm_Queen's_Leg,Faceworm Queen's Leg,5,10,,500,180:120,,,2,0x028F5EEF,63,2,2,4,100,1,1,{ bonus bInt,3; },{},{} +13089,FaceWorm_Leg,Faceworm Leg,5,20,,500,110:50,,1,1,0x028F5EEF,63,2,2,3,24,1,1,{ bonus bAtkEle,Ele_Poison; autobonus "{}",30,5000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; active_transform 2528,5000; }"; },{},{} +13090,FaceWormQueen_Leg,Faceworm Queen Leg,5,20,,500,180:120,,1,2,0x028F5EEF,63,2,2,4,100,1,1,{ bonus bInt,3; autobonus "{ bonus3 bAutoSpell,\"NPC_EARTHQUAKE\",1,200; }",8,5000,BF_NORMAL,"{ specialeffect2 EF_POTION_BERSERK; active_transform 2529,5000; }"; },{},{} 13092,RWC_Memory_Knife,RWC Memory Knife,5,1000,500,650,50,0,1,1,0x02800075,63,2,2,3,1,1,1,{ .@r = getrefine(); bonus bBaseAtk,20*(.@r/3); bonus bMatk,20*(.@r/3); if(.@r>=9){ .@i = 1; bonus4 bAutoSpell,"BS_WEAPONPERFECT",1,20,0; } if(.@r>=6){ .@rate = 5*(.@i+1); bonus2 bAddClass,Class_All,.@rate; bonus2 bMagicAddClass,Class_All,.@rate; } },{},{} 13093,Tanos_Dagger,Tanos Dagger,5,10,,800,100:130,,,1,0x000E5CEB,63,2,2,4,120,1,1,{ bonus bInt,6; bonus bVit,6; bonus bLuk,-6; bonus bAtkRate,5; bonus2 bHPLossRate,100,10000; },{},{} 13094,Devil_Pierced_Dagger,Devil Pierced Dagger,5,10,,900,120,,,1,0x3E9F7EEF,63,2,2,3,100,1,1,{ bonus2 bAddRace,RC_Undead,10; .@r = getrefine(); bonus bAtkRate,(.@r>=12)?(7):((.@r>=9)?(5):(0)); },{},{} @@ -10871,7 +10871,7 @@ // New Usable items //=================================================================== 22508,Para_Team_Mark_,Eden Group Mark,11,0,,0,,,,0,0xFFFFFFFF,63,2,,,,,,{ warp "moc_para01",171,115; },{},{} -22507,Worn-Out-Scroll,Worn-Out-Scroll,3,10,,10,,,,0,,,,,,,,,{},{},{} +22507,ShabbyOldScroll,Old Scroll,2,10,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ callfunc "F_22507"; },{},{} 22510,King_Wolf_Scroll,King Wolf Scroll,2,10,,10,,,,0,0xFFFFFFFF,63,2,,,,,,{ /*TODO, confirm the rates*/ getitem callfunc("F_Rand",6635,19598,5658,6238,6239),1; },{},{} 22511,Fenrirs_Power_Scroll,Fenrir's Power Scroll,2,10,,10,,,,0,0xFFFFFFFF,63,2,,,,,,{ bonus_script "bonus bMatk,25; bonus bFixedCastRate,-50;",300,1025; },{},{} 22513,King_of_Gift_Box,King of Gift Box,2,10,,100,,,,0,0xFFFFFFFF,63,2,,,,,,{ /*TODO, confirm the rates*/ getitem callfunc("F_Rand",12817,4403,14512),1; },{},{} diff --git a/db/re/mob_db.txt b/db/re/mob_db.txt index 44ee959cfc..797ed28af4 100644 --- a/db/re/mob_db.txt +++ b/db/re/mob_db.txt @@ -1682,20 +1682,20 @@ //2525,WATERMELON_16 //2526,E_BANDIT //2527,ME_ANOPHELES -//2528,FACEWORM -//2529,FACEWORM_QUEEN -//2530,FACEWORM_DARK -//2531,VENOM_BUG -//2532,FACEWORM_QUEEN_R -//2533,FACEWORM_QUEEN_G -//2534,FACEWORM_QUEEN_B -//2535,FACEWORM_QUEEN_Y -//2536,HIDDEN_MOB3 -//2537,HIDDEN_MOB4 +2528,FACEWORM,Faceworm,Faceworm,140,482427,1,38800,3960,2,1818,727,50,30,100,50,100,100,100,50,10,12,2,4,25,0x2000085,200,384,720,480,0,0,0,0,0,0,0,971,100,22507,100,0,0,0,0,0,0,0,0,13089,10,7326,1000,972,100,0,0 +2529,FACEWORM_QUEEN,Faceworm Queen,Faceworm Queen,155,50000000,1,200000,200000,2,4024,1609,100,60,200,100,200,200,200,100,10,12,2,4,85,0x6283695,200,768,540,480,90909,0,0,617,2500,12246,2500,607,1000,0,0,0,0,0,0,0,0,13090,100,0,0,6649,5000,0,0,0,0 +2530,FACEWORM_DARK,Faceworm Dark,Dark Faceworm,144,5000000,1,100000,80000,2,2012,805,100,30,150,100,150,150,150,100,10,12,2,4,45,0x6283695,180,576,480,480,0,0,0,0,0,0,0,13089,10,22507,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2531,VENOM_BUG,Venom Bug,Venom Bug,140,10000,1,0,0,1,340,0,200,100,200,200,200,200,200,200,12,12,0,4,25,0x2200084,2000,384,0,480,0,0,0,0,0,0,0,938,5000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7326,1000,0,0 +2532,FACEWORM_QUEEN_R,Faceworm Queen (Red),Red Faceworm Queen,155,50000000,1,200000,200000,2,12000,4800,400,400,500,100,200,200,200,100,10,12,2,4,23,0x6283695,200,768,540,480,90909,12246,2500,617,2500,0,0,994,5000,0,0,0,0,0,0,0,0,13090,100,0,0,6649,5000,0,0,0,0 +2533,FACEWORM_QUEEN_G,Faceworm Queen (Green),Green Faceworm Queen,155,50000000,1,200000,200000,2,5000,2000,500,60,200,100,400,200,200,100,10,12,2,4,22,0x6283695,200,768,540,480,90909,617,2500,12246,2500,0,0,6649,5000,13090,100,997,5000,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2534,FACEWORM_QUEEN_B,Faceworm Queen (Blue),Blue Faceworm Queen,155,50000000,1,200000,200000,2,5000,2000,100,400,200,100,200,400,200,100,10,12,2,4,21,0x6283695,200,768,540,480,90909,617,2500,12246,2500,0,0,6649,5000,13090,100,995,5000,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2535,FACEWORM_QUEEN_Y,Faceworm Queen (Yellow),Yellow Faceworm Queen,155,50000000,1,200000,200000,2,5000,2000,100,60,200,400,200,200,200,100,10,12,2,4,24,0x6283695,200,768,540,480,90909,617,2500,12246,2500,0,0,6649,5000,13090,100,996,5000,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2536,HIDDEN_MOB3,Hidden Mob 3,Monster 3,151,10000,200,0,0,1,2000,0,200,100,100,100,100,100,100,100,12,12,0,4,88,0x2370084,2000,0,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2537,HIDDEN_MOB4,Hidden Mob 4,Monster 4,151,10000,200,0,0,1,2000,0,200,100,100,100,100,100,100,100,12,12,0,0,88,0x0370084,2000,0,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //2538,E_KING_PORING -//2539,HIDDEN_MOB5 -//2540,FACEWORM_EGG -//2541,FACEWORM_LARVA +2539,HIDDEN_MOB5,Hidden Mob 5,Monster 5,151,10000,200,0,0,9,500,0,200,100,100,100,100,100,100,100,12,12,0,0,88,0x2370084,2000,0,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2540,FACEWORM_EGG,Faceworm Egg,Faceworm Egg,140,10,1,10,12,1,150,150,10,10,10,10,10,10,10,10,10,12,1,4,25,0x2370000,150,24,0,0,0,0,0,0,0,0,0,7032,5000,938,5000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2541,FACEWORM_LARVA,Faceworm Larva,Faceworm Larva,145,260380,1,10,12,1,1286,1851,10,10,10,50,50,50,180,50,10,12,1,4,45,0x2000085,150,1000,792,336,0,0,0,0,0,0,0,912,225,0,0,0,0,0,0,0,0,0,0,1096,1750,943,400,938,1500,0,0 2542,IRENE_ELDER,Irene Elder,Doyen Irene,101,433110,1,11360,27032,1,1749,2281,145,73,82,36,55,100,182,88,10,12,1,7,20,102774421,170,73,384,288,0,0,0,0,0,0,0,12072,100,12082,100,12087,100,12077,100,12092,100,12097,100,7481,1,12129,1,0,0,0,0 2543,PAYONSOLDIER,1st Payon Soldier,1st Payon Soldier,101,20099,1,1083,2688,1,545,596,66,36,20,46,35,35,64,30,10,12,1,7,20,0x3095,225,73,348,288,0,0,0,0,0,0,0,12054,533,12044,533,12059,533,12069,533,12049,533,12127,266,12064,533,7479,1,0,0,0,0 2544,PAYONSOLDIER2,2nd Payon Soldier,2nd Payon Soldier,101,21099,1,1136,2703,1,697,748,66,36,20,46,25,35,64,30,10,12,1,7,20,0x3095,200,73,348,288,0,0,0,0,0,0,0,12071,400,12076,400,12091,400,12081,400,12096,400,12086,400,12128,133,7480,1,0,0,0,0 diff --git a/db/re/mob_skill_db.txt b/db/re/mob_skill_db.txt index 23988385a2..510ad74480 100644 --- a/db/re/mob_skill_db.txt +++ b/db/re/mob_skill_db.txt @@ -8846,6 +8846,85 @@ 2485,Chimera (Nightmare)@NPC_SHIELDBRAKE,attack,346,5,500,0,5000,yes,target,always,,,,,,,6, 2485,Chimera (Nightmare)@NPC_SUMMONSLAVE,idle,196,4,10000,2000,60000,yes,self,slavele,0,1253,,,,,, +2528,Faceworm@NPC_POISON,attack,176,4,10000,0,0,yes,target,always,,,,,,,, +2528,Faceworm@NPC_POISONATTACK,attack,188,2,10000,0,0,yes,target,always,,,,,,,, +2529,Faceworm Queen@AS_VENOMDUST,idle,140,5,10000,1000,5000,no,target,always,,,,,,,, +2529,Faceworm Queen@NPC_EARTHQUAKE,attack,653,1,10000,5000,10000,no,self,always,,,,,,,, +2529,Faceworm Queen@RG_CLOSECONFINE,chase,1005,1,10000,1000,10000,no,target,always,,,,,,,9, +//2529,Faceworm Queen@NPC_DRAGONFEAR,attack,659,5,10000,1000,5000,no,self,always,,,,,,,9, +//2529,Faceworm Queen@NPC_DRAGONFEAR,chase,659,5,10000,1000,5000,no,self,always,,,,,,,9, +2529,Faceworm Queen@NPC_ACIDBREATH,chase,657,10,10000,5000,10000,no,target,always,,,,,,,, +2529,Faceworm Queen@KN_PIERCE,chase,56,10,10000,500,0,yes,target,always,,,,,,,9, +2529,Faceworm Queen@KN_PIERCE,attack,56,10,10000,500,0,yes,target,always,,,,,,,9, +2529,Faceworm Queen@NPC_CRITICALWOUND,attack,673,3,10000,500,10000,yes,target,always,,,,,,,, +2529,Faceworm Queen@NPC_CRITICALWOUND,chase,673,3,10000,500,10000,yes,target,always,,,,,,,, +2530,Faceworm Dark@AS_VENOMDUST,idle,140,3,10000,1000,10000,yes,target,always,,,,,,,, +2530,Faceworm Dark@AS_VENOMDUST,attack,140,3,10000,1000,10000,yes,target,always,,,,,,,, +2530,Faceworm Dark@AS_VENOMDUST,chase,140,3,10000,1000,10000,yes,target,always,,,,,,,, +//2530,Faceworm Dark@NPC_DRAGONFEAR,attack,659,3,10000,1000,0,yes,self,always,,,,,,,9, +//2530,Faceworm Dark@NPC_DRAGONFEAR,chase,659,3,10000,1000,0,yes,self,always,,,,,,,9, +2530,Faceworm Dark@NPC_ACIDBREATH,chase,657,5,10000,5000,0,yes,target,always,,,,,,,, +2530,Faceworm Dark@KN_PIERCE,chase,56,5,10000,500,0,yes,target,always,,,,,,,9, +2530,Faceworm Dark@KN_PIERCE,attack,56,5,10000,500,0,yes,target,always,,,,,,,9, +2530,Faceworm Dark@NPC_CRITICALWOUND,attack,673,1,10000,500,10000,yes,target,always,,,,,,,, +2530,Faceworm Dark@NPC_CRITICALWOUND,chase,673,1,10000,500,10000,yes,target,always,,,,,,,, +2531,Venom Bug@NPC_SELFDESTRUCTION,idle,173,1,10000,5000,0,no,self,always,,,,,,,9, +2531,Venom Bug@NPC_SELFDESTRUCTION,attack,173,1,10000,5000,0,no,self,always,,,,,,,9, +2531,Venom Bug@NPC_SELFDESTRUCTION,chase,173,1,10000,5000,0,no,self,always,,,,,,,9, +2532,Red Faceworm Queen@NPC_POWERUP,attack,349,5,10000,0,30000,yes,self,always,,,,,,,6, +2532,Red Faceworm Queen@NPC_POWERUP,chase,349,5,10000,0,30000,yes,self,always,,,,,,,6, +2532,Red Faceworm Queen@NPC_AGIUP,attack,350,10,10000,0,30000,yes,self,always,,,,,,,7, +2532,Red Faceworm Queen@NPC_AGIUP,chase,350,10,10000,0,30000,yes,self,always,,,,,,,7, +2532,Red Faceworm Queen@NPC_PULSESTRIKE,chase,661,10,1000,3000,30000,no,self,always,,,,,,,, +2532,Red Faceworm Queen@NPC_PULSESTRIKE,attack,661,10,1000,3000,30000,no,self,always,,,,,,,, +2532,Red Faceworm Queen@NPC_EARTHQUAKE,chase,653,5,10000,3000,30000,yes,self,always,,,,,,,36, +2532,Red Faceworm Queen@NPC_EARTHQUAKE,attack,653,5,10000,3000,30000,yes,self,always,,,,,,,36, +2532,Red Faceworm Queen@NPC_SLOWCAST,attack,672,5,10000,500,30000,no,self,always,,,,,,,, +2532,Red Faceworm Queen@NPC_HELLJUDGEMENT,attack,662,5,10000,3000,30000,yes,self,always,,,,,,,36, +2532,Red Faceworm Queen@MO_BODYRELOCATION,chase,264,1,10000,500,5000,no,target,always,,,,,,,, +2532,Red Faceworm Queen@NPC_DARKSTRIKE,attack,340,10,5000,700,5000,no,target,always,,,,,,,, +2532,Red Faceworm Queen@NPC_DARKSTRIKE,chase,340,10,5000,700,5000,no,target,always,,,,,,,, +2533,Green Faceworm Queen@WZ_HEAVENDRIVE,attack,91,5,1000,1000,5000,no,target,always,,,,,,,, +2533,Green Faceworm Queen@WZ_HEAVENDRIVE,chase,91,5,1000,1000,5000,no,target,always,,,,,,,, +2533,Green Faceworm Queen@NPC_WIDESTUN,chase,678,5,10000,2000,30000,no,self,always,,,,,,,36, +2533,Green Faceworm Queen@NPC_WIDESTUN,attack,678,5,10000,2000,30000,no,self,always,,,,,,,36, +2533,Green Faceworm Queen@AL_HEAL,attack,28,9,10000,500,5000,no,self,always,,,,,,,, +2533,Green Faceworm Queen@AL_HEAL,chase,28,9,10000,500,5000,no,self,always,,,,,,,, +2533,Green Faceworm Queen@WZ_QUAGMIRE,attack,92,5,500,700,5000,no,target,always,,,,,,,, +2533,Green Faceworm Queen@NPC_GROUNDATTACK,attack,185,9,3000,500,5000,no,target,always,,,,,,,, +2534,Blue Faceworm Queen@WZ_FROSTNOVA,chase,88,10,3000,1000,10000,no,self,always,,,,,,,, +2534,Blue Faceworm Queen@WZ_FROSTNOVA,attack,88,10,3000,1000,10000,no,self,always,,,,,,,, +2534,Blue Faceworm Queen@NPC_WIDEFREEZE,chase,664,5,10000,2000,30000,no,self,always,,,,,,,36, +2534,Blue Faceworm Queen@NPC_WIDEFREEZE,attack,664,5,10000,2000,30000,no,self,always,,,,,,,36, +2534,Blue Faceworm Queen@WZ_STORMGUST,chase,89,10,2000,1000,5000,no,target,always,,,,,,,, +2534,Blue Faceworm Queen@WZ_STORMGUST,attack,89,10,2000,1000,5000,no,target,always,,,,,,,, +2534,Blue Faceworm Queen@NPC_WATERATTACK,attack,184,9,3000,500,5000,no,target,always,,,,,,,, +2534,Blue Faceworm Queen@MG_FROSTDIVER,chase,15,10,10000,500,5000,yes,target,always,,,,,,,, +2535,Yellow Faceworm Queen@WZ_VERMILION,attack,85,10,2000,1000,10000,no,target,always,,,,,,,, +2535,Yellow Faceworm Queen@WZ_VERMILION,chase,85,10,5000,1000,10000,no,target,always,,,,,,,, +2535,Yellow Faceworm Queen@NPC_WIDEBLEEDING,chase,665,3,10000,2000,30000,no,self,always,,,,,,,36, +2535,Yellow Faceworm Queen@NPC_WIDEBLEEDING,attack,665,3,10000,2000,30000,no,self,always,,,,,,,36, +2535,Yellow Faceworm Queen@WZ_JUPITEL,attack,84,9,1000,500,5000,yes,target,always,,,,,,,, +2535,Yellow Faceworm Queen@WZ_JUPITEL,chase,84,9,1000,500,5000,yes,target,always,,,,,,,, +2535,Yellow Faceworm Queen@NPC_WINDATTACK,attack,187,9,3000,500,5000,no,target,always,,,,,,,, +2535,Yellow Faceworm Queen@MG_THUNDERSTORM,attack,21,10,2000,1000,5000,no,target,always,,,,,,,, +2536,Monster 3@NPC_INVISIBLE,idle,353,1,10000,0,30000,yes,self,always,,,,,,,, +2536,Monster 3@NPC_INVISIBLE,attack,353,1,10000,0,30000,yes,self,always,,,,,,,, +2536,Monster 3@NPC_VENOMFOG,idle,706,1,10000,0,3000,yes,self,always,,,,,,,, +2536,Monster 3@NPC_VENOMFOG,attack,706,1,10000,0,3000,yes,self,always,,,,,,,, +2537,Monster 4@NPC_INVISIBLE,idle,353,1,10000,0,30000,yes,self,always,,,,,,,, +2537,Monster 4@NPC_INVISIBLE,attack,353,1,10000,0,30000,yes,self,always,,,,,,,, +2537,Monster 4@NPC_VENOMFOG,idle,706,3,10000,0,3000,yes,self,always,,,,,,,, +2537,Monster 4@NPC_VENOMFOG,attack,706,3,10000,0,3000,yes,self,always,,,,,,,, +2539,Monster 5@NPC_INVISIBLE,idle,353,1,10000,0,30000,yes,self,always,,,,,,,, +2539,Monster 5@NPC_INVISIBLE,attack,353,1,10000,0,30000,yes,self,always,,,,,,,, +2539,Monster 5@WZ_WATERBALL,idle,86,5,10000,0,5000,no,target,always,,,,,,,, +2539,Monster 5@WZ_WATERBALL,attack,86,5,10000,0,5000,no,target,always,,,,,,,, +2540,Faceworm Egg@NPC_SUMMONMONSTER,idle,209,1,10000,10000,10000,no,self,always,0,2541,,,,,, +2541,Faceworm Larva@NPC_BLEEDING,attack,660,5,2000,1000,1000,yes,target,always,,,,,,,, +2541,Faceworm Larva@NPC_POISON,attack,176,5,500,800,5000,no,target,always,,,,,,,, +2541,Faceworm Larva@NPC_POISONATTACK,attack,188,10,2000,2000,2000,yes,target,always,,,,,,,, + // Heroes' Trail Part 1 - Sara's Memory // Not Yet Implemented skill //2542,Irene Elder@NPC_MILLENNIUMSHIELD,idle,707,1,5000,1000,30000,no,self,always,0,,,,,,, diff --git a/db/re/skill_cast_db.txt b/db/re/skill_cast_db.txt index 3ed8f43e38..d43791e74f 100644 --- a/db/re/skill_cast_db.txt +++ b/db/re/skill_cast_db.txt @@ -1043,8 +1043,11 @@ //========================================== //===== New Monster Skills (12.1) ========== +//-- NPC_VENOMFOG +706,0,0,0,3000,0,0,-1 //-- NPC_MAXPAIN 716,0,0,0,10000,0,0,0 + //===== 2nd Jobs Quest Skills ============== //-- KN_CHARGEATK 1001,250,0,0,0,0,0,250 diff --git a/db/re/skill_db.txt b/db/re/skill_db.txt index 40f877c9e3..3b5378b85c 100644 --- a/db/re/skill_db.txt +++ b/db/re/skill_db.txt @@ -849,7 +849,7 @@ //703,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0, NPC_WIDECOLD,Wide Crystalize //704,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0, NPC_WIDE_DEEP_SLEEP,Wide Deep Sleep //705,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0, NPC_WIDESIREN,Wide Siren's Voice -//706,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0, NPC_VENOMFOG,Venom Fog +706,0,6,4,5,0,0,10,1,no,0,0x2,0,magic,0,0x1, NPC_VENOMFOG,Venom Fog //707,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0, NPC_MILLENNIUMSHIELD,Millenium Shield 2 //708,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0, NPC_COMET,Comet 2 //709,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0, NPC_ICEMINE,Ice Mine diff --git a/db/re/skill_unit_db.txt b/db/re/skill_unit_db.txt index 0c6fa42464..359be00630 100644 --- a/db/re/skill_unit_db.txt +++ b/db/re/skill_unit_db.txt @@ -108,7 +108,7 @@ 541,0x86, , 1:1:2:2:3, 0,1000,enemy, 0x010 //NJ_RAIGEKISAI 670,0xc7, , 1, 5:5:5:5:5:5:5:5:5:13,1000,all,0x008 //NPC_EVILLAND -//706,0xfd, , 0, 0,1000,all, 0x000 //NPC_VENOMFOG +706,0xfd, , 2, 0,1000,enemy, 0x018 //NPC_VENOMFOG 2044,0xca, , 0, 2,1000,all, 0x018 //AB_EPICLESIS diff --git a/npc/other/gm_npcs.txt b/npc/other/gm_npcs.txt index 996e00595a..5097055d7b 100644 --- a/npc/other/gm_npcs.txt +++ b/npc/other/gm_npcs.txt @@ -89,6 +89,7 @@ List of GM Management NPCs (incomplete) - Bakonawa's Rage (RE) - Bangungot Gate (RE) - Horror Toy Factory (RE) +- Faceworm's Nest (RE) [ Job-related ] ----- 3rd Class (RE) ----- diff --git a/npc/re/instances/FacewormsNest.txt b/npc/re/instances/FacewormsNest.txt new file mode 100644 index 0000000000..a8d4935e07 --- /dev/null +++ b/npc/re/instances/FacewormsNest.txt @@ -0,0 +1,2846 @@ +//===== rAthena Script ======================================= +//= Faceworm's Nest +//===== Description: ========================================= +//= [Official Conversion] +//= Faceworm Nest Instance +//===== Changelogs: ========================================== +//= 1.0 First version. [exneval] +//= 1.1 Conversion & style change for rAthena. [Capuche] +//============================================================ + +// Timeless Item Quests +// The Owner Of Old Ring +//============================================================ +payon,157,54,5 script An Old Woman#pa0829 8_F_GRANDMOTHER,{ + if (!checkweight(1201,1)) { + mes "You have too many kind of belongings. Let's try again after reducing the kind of items."; + close; + } + if (MaxWeight - Weight < 1000) { + mes "Your belongings are too heavy to continue. Let's try again after reducing the weight."; + close; + } + if (BaseLevel < 140) { + mes "[Jeum-sun]"; + mes "I am still living in the memory. Make more memories..."; + next; + mes "[Jeum-sun]"; + mes "Oh are you level 140 yet? I won't talk to any weak adventurers."; + close; + } + switch( checkquest(12326,PLAYTIME) ) { + case -1: + mes "[Jeum-sun]"; + mes "When I was a young girl many years ago there was a man who I had crush on. I didn't know to tell him how I felt..."; + next; + mes "[Jeum-sun]"; + mes "I used to tease his Peco Peco and wanted him to notice that I was interested. This went on and on for a while."; + next; + mes "[Jeum-sun]"; + mes "Then we started dating somehow. It's still embarrasing to talk about it."; + next; + mes "[Jeum-sun]"; + mes "Anyway, we got married when we became old enough to marry. He used to say sorry for not being able to afford to buy a ring for me."; + next; + mes "[Jeum-sun]"; + mes "It has been 40 years since we were married and he still says ^0000ff'Darling~ Do you want to have a ring?'^000000."; + next; + mes "[Jeum-sun]"; + mes "I told him.. What good is a ring for an old lady?"; + next; + mes "[Jeum-sun]"; + mes "I should have stopped him. I still remember his face early."; + next; + select("What happened to him?"); + mes "[Jeum-sun]"; + mes "He had not came back since he left home to buy a ring."; + next; + mes "^0000ffThe old lady turned her face down with reddened eyes.^000000"; + if (countitem(6650)) {// Shabby_Ring + next; + if (select("Stop talking.:Show the ring from the Faceworm's Nest.") == 2) { + mes "[Jeum-sun]"; + mes "What about this ring?"; + next; + mes "[Jeum-sun]"; + mes "Oh... Darling~"; + next; + mes "^0000ffThe lady read an inscription inside the ring and started weeping."; + mes "[Jeum-sun, my darling flower]^000000"; + next; + mes "^0000ffYou sense a warm energy emanating. Maybe this is the wish of the man who made this ring.^000000"; + specialeffect EF_SPHERE; + next; + mes "The warm energy has inspired you with strength."; + delitem 6650,1;// Shabby_Ring + setquest 12326;// The owner of old ring + getexp 70000,55000; + } + } + close; + case 0: + case 1: + mes "The lady keeps crying over and over holding a ring. It seems to be no use talking to her right now."; + close; + case 2: + mes "Sadly, this woman does not seem to remember the past because of abrupt emotional changes. Let's talk carefully and listen to her story."; + erasequest 12326; + close; + } +} + +// The Memory Of Old Photo Album +//============================================================ +payon,161,54,3 script Exotic Merchant#pa0829 4W_M_03,{ + if (!checkweight(1201,1)) { + mes "You have too many types of belongings. Let's try again after reducing the types of items."; + close; + } + if (MaxWeight - Weight < 1000) { + mes "Your belongings are too heavy to continue. Let's try again after reducing the weight."; + close; + } + if (BaseLevel < 140) { + mes "[Sergio]"; + mes "Fortune or fame is not important. The most important thing is family."; + next; + mes "[Sergio]"; + mes "Are you at least level 140 yet?"; + close; + } + switch( checkquest(12327,PLAYTIME) ) { + case -1: + mes "[Sergio]"; + mes "I have a blurry memory of when I used to travel with my father's armed-merchant group."; + next; + mes "[Sergio]"; + mes "I vaguely remember everyone of the group were scattered after being attacked by a giant snake-like creature."; + next; + mes "[Sergio]"; + mes "I had lost my family at that time. I do not clearly remember even their faces."; + next; + mes "[Sergio]"; + mes "Now I've made my own armed-merchant group and got my life back. But the memory of my past keeps haunting me."; + next; + mes "[Sergio]"; + mes "I just stopped by this town to possibly find a record of my family and the armed-merchant group but so far I've found nothing."; + if (countitem(6652)) { + next; + if (select("Stop talking.:Show him the Old Photo Album") == 2) { + mes "[Sergio]"; + mes "Yes! I remembered. This is the one who used to work for my father's armed-merchant group."; + next; + mes "[Sergio]"; + mes "Oh my... There are other pictures here too..."; + next; + mes "^0000ffA smile of lonely satisfaction spreads over the face of Sergio while looking at a photo album.^000000"; + next; + mes "^0000ffA gentle energy surrounds Sergio.^000000"; + specialeffect EF_SPHERE; + next; + mes "You are touched by seeing the satisfaction on Sergio's face."; + delitem 6652,1;// Aged_Photo_Album + setquest 12327;// The memory of old photo album + getexp 70000,55000; + } + } + close; + case 0: + case 1: + mes "Sergio keeps looking at the photo album. Let's leave him alone."; + close; + case 2: + mes "You can talk to Sergio again when you pick up a new photo album from the Faceworm's Nest."; + erasequest 12327; + close; + } +} + +// Dol-Seoi's Sorrow +//============================================================ +payon,161,50,1 script Strong Looking Man#pa829 4_M_ORIENT01,{ + if (!checkweight(1201,1)) { + mes "You have too many types of belongings. Let's try again after reducing the types of items."; + close; + } + if (MaxWeight - Weight < 1000) { + mes "Your belongings are too heavy to continue. Let's try again after reducing the weight."; + close; + } + if (BaseLevel < 140) { + mes "[Dol-Seoi]"; + mes "What can I do for you?"; + next; + mes "[Dol-Seoi]"; + mes "Are you at least level 140 yet?"; + close; + } + switch( checkquest(12328,PLAYTIME) ) { + case -1: + mes "[Dol-Seoi]"; + mes "I used to be a servant to a very wealthy lady. She was always kind to me but she suffered from a severe cough that wouldn't go away unless she took a special pill."; + next; + mes "[Dol-Seoi]"; + mes "I used to get the pill from a group of armed-merchants but I heard that they were attacked by a snake and that's when I couldn't get any more pills."; + next; + mes "[Dol-Seoi]"; + mes "I searched everywhere but no one could get that pill for me so eventually my lady passed away. If it wasn't for that slithering..."; + next; + select("Do you want to revenge?"); + mes "[Dol-Seoi]"; + mes "Well..."; + next; + mes "[Dol-Seoi]"; + mes "Yes... But, I have nothing to do with that snake. I am just a worthless servant who once served for my lady."; + next; + mes "^0000ffYou catch a glimpse of complicated rage and sorrow in his eyes.^000000"; + if (countitem(6653)) { + next; + if (select("Stop talking.:Show him the Old Pill.") == 2) { + mes "[Dol-Seoi]"; + mes "Wait! Where did you get this?"; + next; + select("I killed a snake..."); + mes "[Dol-Seoi]"; + mes "This pill... My lady, if I had this pill..."; + next; + mes "^0000ffHe begins to weep like a wounded Muka. She must have meant a lot to him...^000000"; + next; + mes "^0000ffI feel gentle energy around Dol-Seoi.^000000"; + specialeffect EF_SPHERE; + delitem 6653,1;// Aged_Tablet + setquest 12328;// Dol-Seoi's Sorrow + getexp 70000,55000; + } + } + close; + case 0: + case 1: + mes "Dol-Seoi is standing absent-mindedly clutching the Old Pill. Let's leave him alone now."; + close; + case 2: + mes "You can talk to Dol-Seoi again if you get another Old Pill from the Faceworm's Nest."; + erasequest 12328; + close; + } +} + +// Keaton's Bracelet +//============================================================ +payon,139,68,4 script A dreary man#pa0829 4_M_NFDEADMAN,{ + if (!checkweight(1201,1)) { + mes "You have too many types of belongings. Let's try again after reducing the types of items."; + close; + } + if (MaxWeight - Weight < 1000) { + mes "Your belongings are too heavy to continue. Let's try again after reducing the weight."; + close; + } + if (BaseLevel < 140) { + mes "[Keaton]"; + mes "..."; + next; + mes "[Keaton]"; + mes "Unless you're level 140, I won't have a real conversation with you."; + close; + } + switch( checkquest(12329,PLAYTIME) ) { + case -1: + mes "^0000ffIt looks like a dead soul but you don't feel maliciousness from it. His thoughts have been delivered piece by piece so it isn't easy to understand.^000000"; + next; + mes "^999999[Keaton]"; + mes "Keaton... Not good at speaking.^000000"; + next; + mes "^999999[Keaton]"; + mes "Keaton has died long time ago. Keaton is not bad.^000000"; + next; + mes "^999999[Keaton]"; + mes "Keaton... Need bracelet, that is important. Keaton's friend gave the bracelet.^000000"; + next; + mes "^999999[Keaton]"; + mes "Keaton, will go after a snake to find a bracelet. The bad snake killed keaton.^000000"; + if (countitem(6651)) { + next; + if (select("Stop talking.:Show him the Rusty Bracelet.") == 2) { + mes "^999999[Keaton]"; + mes "It is the bracelet of Keaton!!^000000"; + specialeffect EF_MAPPILLAR2; + next; + mes "^999999[Keaton]"; + mes "Keaton...glad. Defeat bad snake!!^000000"; + next; + mes "^0000ffKeaton seems to shine brighter.^000000"; + delitem 6651,1;// Rusted_Bracalet + setquest 12329;// Keaton's Bracelet + getexp 70000,55000; + } + } + close; + case 0: + case 1: + mes "Keaton's soul seems to be smiling. Best to give him whatever peace he can have for now."; + close; + case 2: + mes "Keaton is very sad maybe it is because the bracelet was broken. Bring him any other Rusty Bracelets found in the Faceworm's Nest."; + erasequest 12329; + close; + } +} + +dali,83,67,5 script Old Sign#1 4_BOARD3,{ + .@face_name$ = $120719_str_face$; + .@face_timer = $120719_num_face; + .@face_member = $120903_num_face; + .@time_m = .@face_timer / 60; + .@time_s = .@face_timer - (.@time_m * 60); + if (.@face_name$ == "") { + mes "There's no sign because no one updates the record.";// Custom text + close; + } + if (.@face_timer < 60) + .@time_txt$ = callfunc( "F_InsertPlural", .@time_s, "Second" ); + else + .@time_txt$ = callfunc( "F_InsertPlural", .@time_m, "Minute" ) + " " + callfunc( "F_InsertPlural", .@time_s, "Second" ); + if (.@face_member > 0) + .@string$ = " with ^ff0044" + .@face_member + " party " + ( .@face_member > 1 ? "members" : "members" ) + "^000000"; + mes "-- Faceworm's Nest Records --"; + mes "Best time belongs to adventurer ^ff0044" + .@face_name$ + "^000000" + .@string$ + "."; + mes "Current record time is ^0000ff" + .@time_txt$ + "^000000."; + close; + +OnInit: + if (!$120719_num_face) + $120719_num_face = 3600; + if (rand(1,100) > 97) { + $120719_num_face = 3600; + $120719_str_face$ = ""; + } + end; +} + +dali,80,60,4 script Magic Scholar 4_M_SAGE_C,{ + if (BaseLevel < 140) { + mes "[Magic Scholar]"; + mes "You are not qualified enough to enter here. How about visiting other places until you become level 140."; + close; + } + .@party_id = getcharid(1); + .@md_name$ = "Faceworm's Nest"; + if (.@party_id < 1) { + mes "[Magic Scholar]"; + mes "You don't have a party? Please come back again after creating a party even if you've come alone."; + close; + } + switch( checkquest(12325,PLAYTIME) ) { + case -1: + if (getcharid(0) == getpartyleader(.@party_id,2)) { + mes "[Magic Scholar]"; + mes "What can I do for you?"; + next; + switch( select("Reserve Faceworm's Nest:What are you doing here?:Stop Talking.") ) { + case 1: + switch( instance_create(.@md_name$) ) { + case -3: + dispbottom "Memorial Dungeon, '" + .@md_name$ + "' is already in progress.",0xFFFFFF; + break; + case -4: + case -2: + case -1: + mes "[Magic Scholar]"; + mes "Oops, my hands are slip off. It is required to activate the craks again."; + close; + } + mes "[Magic Scholar]"; + mes "The spaces are under control."; + mes "Please wait for a minute."; + close; + case 2: + break; + case 3: + mes "[Magic Scholar]"; + mes "Okay, I got it. Please come back again if you change your mind."; + close; + } + } + mes "[Magic Scholar]"; + mes "I am researching the dimensional cracks in space here."; + next; + mes "[Magic Scholar]"; + mes "My research is to stabilize the space here with magic to utilize it for dimensional travel."; + next; + mes "[Magic Scholar]"; + mes "This particular crack in space goes to a memory of the past. Many adventurers have been in there but no one will tell me what is in there..."; + next; + mes "[Magic Scholar]"; + mes "And there's this strange sign here that records names and times on it which I can only assume belongs to those adventurers."; + next; + mes "[Magic Scholar]"; + mes "Anyways, I can activate the passage for you if you're a party leader."; + close; + case 0: + case 1: + mes "[Magic Scholar]"; + mes "The crack in time is not safe enough to pass back and forth. Please come back again if the after effect timer has passed."; + close; + case 2: + mes "^0000ffThe trace of dimensional space travelling has disappeared. You can now move between dimensions.^000000"; + erasequest 12325; + close; + } +} + +dali,72,55,4 script Interdimensional Device CLEAR_NPC,{ + if (BaseLevel < 140) { + mes "[Interdimensional Device]"; + mes "Your power level is not high enough to travel the space. Please come back again when you reach at least level 140."; + close; + } + .@party_id = getcharid(1); + .@md_name$ = "Faceworm's Nest"; + if (.@party_id < 1) { + mes "[Interdimensional Device]"; + mes "No party? Please come back again after creating a party even if you've come alone."; + close; + } + switch( checkquest(12325,PLAYTIME) ) { + case -1: + switch( instance_enter(.@md_name$) ) { + case 3: + mes "[Interdimensional Device]"; + mes "An unknown error has occurred."; + close; + case 2: + mes "[Interdimensional Device]"; + mes "The passage for space travel is not activated yet."; + close; + case 1:// Custom text + mes "[Interdimensional Device]"; + mes "You are not allowed to access the device."; + close; + case 0: + mapannounce "dali", getpartyname(.@party_id) + " party's party member " + strcharinfo(0) + " enters " + .@md_name$ + ".",bc_map,"0x00ff99"; + setquest 12325;// Faceworm's Nest after-effects + //warp "1@face",112,374; + end; + } + case 0: + case 1: + mes "[Interdimensional Device]"; + mes "Traces of recent space travel have been detected. Access is denied."; + close; + case 2: + mes "^0000ffThe trace of dimensional space travelling has disappeared. You can now move between dimensions.^000000"; + erasequest 12325; + close; + } +} + +// Instance Scripts :: in_face +// 1st Stage +//============================================================ +1@face,110,348,6 script Chaos#0 4_M_CHAOS,{ + cutin "h_chaos01",2; + if (getcharid(0) != getpartyleader(getcharid(1),2)) { + mes "[Chaos]"; + mes "I do not know what this is about, but I'm talking to your leader so please wait for a while ok?"; + close2; + cutin "",255; + end; + } + .@account_id = getcharid(3); + .@player_name$ = strcharinfo(0); + mes "[Chaos]"; + mes "Really? I didn't know that a bounty hunter was coming here."; + npctalk "Chaos: Really? I didn't know that a bounty hunter was coming here."; + next; + select("Wait! It's a misunderstanding."); + cutin "",255; + mes "[" + .@player_name$ + "]"; + mes "No! I think you're mistaken! We are not bounty hunters..."; + unittalk .@account_id, .@player_name$ + ": No! I think you're mistaken! We are not bounty hunters..."; + next; + cutin "h_chaos01",2; + mes "[Chaos]"; + mes "No, No need to make an excuse... The faceworm belongs to nobody."; + npctalk "Chaos: No, No need to make an excuse... The faceworm belongs to nobody."; + next; + select("Faceworm?"); + cutin "",255; + mes "[" + .@player_name$ + "]"; + mes "Faceworm? I've never heard about it."; + unittalk .@account_id, .@player_name$ + ": Faceworm? I've never heard about it."; + close2; + donpcevent instance_npcname("Chaos#01") + "::OnStart"; + end; +} + +1@face,110,348,6 script Chaos#01 4_M_CHAOS,{ + end; +OnStart: + .@iris_name$ = instance_npcname("Iris#0"); + donpcevent instance_npcname("#globaltimer22") + "::OnT_s"; + hideoffnpc instance_npcname("Chaos#01"); + hideonnpc instance_npcname("Chaos#0"); + sleep 5000; + npctalk "Chaos: Hahaha, you really never heard about it? Faceworm is the name of a monster which has recently showed up in this area."; + sleep 5000; + npctalk "Chaos: I don't care. I would not care as long as you don't disturb me."; + sleep 5000; + npctalk "Iris: Ah~ A gentle breeze~", .@iris_name$; + sleep 3000; + npctalk "Iris: Hehe, the weather has been great. I'm so happy~", .@iris_name$; + sleep 3000; + npctalk "Iris: How about you Chaos?", .@iris_name$; + sleep 3000; + npctalk "Chaos: It will only be for the time being."; + sleep 3000; + npctalk "Chaos: A black wind has started blowing."; + sleep 4000; + npctalk "Chaos: Iris! I feel like faceworms are around here. Maybe, the queen's nest is in the deepest side of this forest!"; + sleep 5000; + npctalk "Iris: Ahah~ Let's take care of it as always like usual ok?", .@iris_name$; + sleep 3000; + npctalk "Chaos: Yes, let's take care of it and go back. Hey, adventurers. Watch out! I'm sure lots of faceworms will be here soon."; + sleep 6000; + hideonnpc instance_npcname("Chaos#01"); + hideonnpc instance_npcname("Iris#0"); + donpcevent instance_npcname("#fwormcontrol1") + "::OnStart"; + mapannounce 'map_name$, "Faceworm time attack has started. Faster kill times gives a higher percentage of rewards.",bc_map,"0xffffff"; + donpcevent instance_npcname("#fwormprize1") + "::OnStart"; + end; +OnInstanceInit: + hideonnpc instance_npcname("Chaos#01"); + end; +} + +1@face,116,346,3 script Iris#0 4_F_IRIS,{ + cutin "h_iris02",2; + mes "[Iris]"; + mes "Sorry~ I enjoy a gentle breeze so talk to me next time."; + close2; + cutin "",255; + end; +} + +1@face,1,5,3 script #fwormcontrol1 CLEAR_NPC,{ + end; +OnStart: + .@mob_c = getmapusers('map_name$) + 1; + .@event$ = instance_npcname("#fwormcontrol1") + "::OnMyMobDead"; + areamonster 'map_name$,65,330,179,336,"Faceworm",2528, (.@mob_c*2), .@event$; + areamonster 'map_name$,62,62,68,332,"Faceworm",2528, (.@mob_c*7), .@event$; + areamonster 'map_name$,66,59,172,65,"Faceworm",2528, (.@mob_c*2), .@event$; + end; +OnMyMobDead: + .@mob_dead_num = mobcount( 'map_name$, instance_npcname("#fwormcontrol1") +"::OnMyMobDead" ); + mapannounce 'map_name$, "There " + ( .@mob_dead_num > 1 ? "are" : "is" ) + " " + callfunc( "F_InsertPlural", .@mob_dead_num, "faceworm" ) + " still alive.",bc_map,"0xffffff"; + if (.@mob_dead_num < 3) + initnpctimer; + end; +OnTimer1000: + killmonster 'map_name$, instance_npcname("#fwormcontrol1") + "::OnMyMobDead"; + donpcevent instance_npcname("#fwormboss1") + "::OnStart"; + mapannounce 'map_name$, "A giant faceworm has suddenly appeared.",bc_map,"0xffffff"; + stopnpctimer; + end; +OnInstanceInit: + hideonnpc instance_npcname("#fwormcontrol1"); + end; +} + +1@face,1,4,3 script #fwormboss1 CLEAR_NPC,{ + end; +OnStart: + areamonster 'map_name$,140,69,150,79,"Dark Faceworm",2530,1,instance_npcname("#fwormboss1") + "::OnMyMobDead"; + 'BOSS[1] = $@mobid[0]; + .@dfacehp = ( 13 - getmapusers('map_name$) ) * 200000; + .@MOB_HP = 5200000 - .@dfacehp; + if (.@MOB_HP < 1500000) + .@MOB_HP = 1500000; + setunitdata 'BOSS[1], UMOB_HP, .@MOB_HP; + initnpctimer; + end; +OnTimer1111: + .@mapcount = getmapusers('map_name$); + if (.@mapcount < 1) + setunitdata 'BOSS[1], UMOB_HP, 5000000;// Note : weird behaviour. + else if (rand(1,(22-.@mapcount)) < 17) { + getunitdata 'BOSS[1], .@arr; + if (.@arr[UMOB_HP] > 3000000 && .@arr[UMOB_HP] < 4900000) + donpcevent instance_npcname("#fwormboss12") + "::OnStart1"; + else if (.@arr[UMOB_HP] > 10000 && .@arr[UMOB_HP] < 2500001) + donpcevent instance_npcname("#fwormboss12") + "::OnStart2"; + } + end; +OnTimer14000: + stopnpctimer; + getunitdata 'BOSS[1], .@arr; + if (.@arr[UMOB_HP] > 10000) + initnpctimer; + end; + +OnMyMobDead: + if (mobcount( 'map_name$,instance_npcname("#fwormboss1") +"::OnMyMobDead" ) < 1) { + hideoffnpc instance_npcname("#fwormprize1"); + enablenpc instance_npcname("#fwormenter1"); + enablenpc instance_npcname("#fwormexit1"); + hideoffnpc instance_npcname("Chaos#1"); + hideoffnpc instance_npcname("Iris#1"); + donpcevent instance_npcname("#fwormboss12") + "::OnEnd"; + mapannounce 'map_name$, "A hole appears after killing the dark faceworm.",bc_map,"0xffffff"; + stopnpctimer; + } + end; + +OnInstanceInit: + hideonnpc instance_npcname("#fwormboss1"); + end; +} + +1@face,1,4,3 script #fwormboss12 CLEAR_NPC,{ + end; +OnStart1: + callsub S_Spawn,3; +OnStart2: + callsub S_Spawn,6; +S_Spawn: + initnpctimer; + .@arg = getarg(0); + .@event$ = instance_npcname("#fwormboss12") +"::OnMyMobDead"; + if (mobcount( 'map_name$,.@event$ ) > .@arg) + killmonster 'map_name$, .@event$; + getunitdata 'BOSS[1], .@arr; + .@mobx = .@arr[UMOB_X]; + .@moby = .@arr[UMOB_Y]; + monster 'map_name$,(.@mobx-4),.@moby,"Faceworm Egg",2540,1,.@event$; + monster 'map_name$,(.@mobx+4),.@moby,"Faceworm Egg",2540,1,.@event$; + if (.@arg == 6) { + monster 'map_name$,.@mobx,(.@moby+4),"Faceworm Egg",2540,1,.@event$; + monster 'map_name$,.@mobx,(.@moby-4),"Faceworm Egg",2540,1,.@event$; + } + end; +OnTimer12000: + .@mob_dead_num = mobcount( 'map_name$,instance_npcname("#fwormboss12") +"::OnMyMobDead" ); + if (.@mob_dead_num > 3) + callsub S_Heal,4,150000; + else if (.@mob_dead_num > 2) + callsub S_Heal,3,55000; + else if (.@mob_dead_num > 1) + callsub S_Heal,2,20000; + else if (.@mob_dead_num > 0) + callsub S_Heal,1,7200; + donpcevent instance_npcname("#fwormboss12") + "::OnEnd"; + end; +S_Heal: + .@mapcount = getmapusers('map_name$); + getunitdata 'BOSS[1], .@arr; + .@r_hpp = (.@mapcount + 1) * getarg(1); + .@dfacehp = .@arr[UMOB_HP] + .@r_hpp; + .@r_hpp2 = 5200000 - ( (13-.@mapcount) * 200000 ); + if (.@dfacehp > .@r_hpp2) + .@dfacehp = .@r_hpp2; + setunitdata 'BOSS[1], UMOB_HP, .@dfacehp; + mapannounce 'map_name$, "Dark faceworm absorbs the energy of " + getarg(0) + " unbroken eggs recovering " + .@r_hpp + " energy.",bc_map,"0xff00ee"; + return; + +OnEnd: + killmonster 'map_name$, instance_npcname("#fwormboss12") + "::OnMyMobDead"; + stopnpctimer; + end; +OnMyMobDead: + end; + +OnInstanceInit: + hideonnpc instance_npcname("#fwormboss12"); + end; +} + +1@face,149,92,0 script #fwormenter1 WARPNPC,2,2,{ + end; +OnTouch: + warp 'map_name$,127,95; + end; +OnInstanceInit: + disablenpc instance_npcname("#fwormenter1"); + end; +} + +1@face,129,86,0 script #fwormexit1 WARPNPC,2,2,{ + end; +OnTouch: + warp 'map_name$,156,76; + end; +OnInstanceInit: + disablenpc instance_npcname("#fwormexit1"); + end; +} + +// 2nd Stage +//============================================================ +1@face,120,97,6 script Chaos#1 4_M_CHAOS,{ + cutin "h_chaos01",2; + if (getcharid(0) != getpartyleader(getcharid(1),2)) { + mes "[Chaos]"; + mes "I do not know what this is about, but I'm talking to your leader so please wait for a while ok?"; + close2; + cutin "",255; + end; + } + mes "[Chaos]"; + mes "Wow, you're fast enough to follow me."; + npctalk "Chaos: Wow, you're fast enough to follow me."; + next; + select("The big one, just right before..."); + cutin "",255; + mes "[" + strcharinfo(0) + "]"; + mes "The big one just right before we saw is a boss here?"; + unittalk getcharid(3), strcharinfo(0) + ": The big one just right before we saw is a boss here?"; + next; + cutin "h_chaos01",2; + mes "[Chaos]"; + mes "No~~ It can't be the faceworm queen."; + close2; + donpcevent instance_npcname("Chaos#11") + "::OnStart"; + cutin "",255; + end; + +OnInstanceInit: + hideonnpc instance_npcname("Chaos#1"); + end; +} + +1@face,120,97,6 script Chaos#11 4_M_CHAOS,{ + end; +OnStart: + .@iris_name$ = instance_npcname("Iris#1"); + hideoffnpc instance_npcname("Chaos#11"); + hideonnpc instance_npcname("Chaos#1"); + npctalk "Chaos: No~~ It can't be the faceworm queen."; + sleep 4000; + npctalk "Chaos: The one we just saw before is a mutant faceworm."; + sleep 5000; + npctalk "Chaos: Wait! The dead faceworm's castoff skin might be useful."; + sleep 3000; + npctalk "Iris: But, if the fight takes too long. The scales might be damaged. They'll be worthless!", .@iris_name$; + sleep 5000; + npctalk "Iris: I heard that skillful hunters are good at taking the scales off super fast.", .@iris_name$; + sleep 6000; + npctalk "Iris: Chaos, are you any good at it?", .@iris_name$; + sleep 3000; + npctalk "Chaos: No... Not at all! I use Magnum Break only, so the scales will probably get burned..."; + sleep 3000; + npctalk "Iris: Useless Chaos.", .@iris_name$; + sleep 3000; + npctalk "Chaos: Besides, the one we are looking for is not here. I will go back first, so take care of the rest ok?"; + sleep 5000; + hideonnpc instance_npcname("Chaos#11"); + npctalk "Iris: Chaos! Are you leaving me alone?", .@iris_name$; + sleep 3000; + hideonnpc .@iris_name$; + donpcevent instance_npcname("#fwormcontrol2") + "::OnStart"; + donpcevent instance_npcname("#fwormprize2") + "::OnStart"; + end; +OnInstanceInit: + hideonnpc instance_npcname("Chaos#11"); + end; +} + +1@face,129,97,3 script Iris#1 4_F_IRIS,{ + cutin "h_iris02",2; + mes "[Iris]"; + mes "Chaos is a good friend even though he's only able to use Magnum Break..."; + close2; + cutin "",255; + end; + +OnInstanceInit: + hideonnpc instance_npcname("Iris#1"); + end; +} + +1@face,2,5,3 script #fwormcontrol2 CLEAR_NPC,{ + end; +OnStart: + .@mob_c = getmapusers('map_name$) + 1; + .@event$ = instance_npcname("#fwormcontrol2") + "::OnMyMobDead"; + areamonster 'map_name$,107,102,113,154,"Faceworm",2528, (.@mob_c*2), .@event$; + areamonster 'map_name$,115,175,121,209,"Faceworm",2528, (.@mob_c*2), .@event$; + areamonster 'map_name$,118,240,204,292,"Faceworm",2528, (.@mob_c*7), .@event$; + end; +OnMyMobDead: + .@mob_dead_num = mobcount( 'map_name$,instance_npcname("#fwormcontrol2") +"::OnMyMobDead" ); + mapannounce 'map_name$, "There " + ( .@mob_dead_num > 1 ? "are" : "is" ) + " " + callfunc( "F_InsertPlural", .@mob_dead_num, "faceworm" ) + " still alive.",bc_map,"0xffffff"; + if (.@mob_dead_num < 3) + initnpctimer; + end; +OnTimer1000: + killmonster 'map_name$, instance_npcname("#fwormcontrol2") + "::OnMyMobDead"; + donpcevent instance_npcname("#fwormboss2") + "::OnStart"; + mapannounce 'map_name$, "A giant faceworm has suddenly appeared.",bc_map,"0xffffff"; + stopnpctimer; + end; +OnInstanceInit: + hideonnpc instance_npcname("#fwormcontrol2"); + end; +} + +1@face,2,5,3 script #fwormboss2 CLEAR_NPC,{ + end; +OnStart: + areamonster 'map_name$,156,267,166,277,"Dark Faceworm",2530,1,instance_npcname("#fwormboss2") + "::OnMyMobDead"; + 'BOSS[2] = $@mobid[0]; + .@dfacehp = ( 13 - getmapusers('map_name$) ) * 200000; + .@MOB_HP = 5200000 - .@dfacehp; + if (.@MOB_HP < 1500000) + .@MOB_HP = 1500000; + setunitdata 'BOSS[2], UMOB_HP, .@MOB_HP; + initnpctimer; + end; +OnTimer1111: + .@mapcount = getmapusers('map_name$); + if (.@mapcount < 1) + setunitdata 'BOSS[2], UMOB_HP, 5000000; + else if (rand(1,(22-.@mapcount)) < 17) { + getunitdata 'BOSS[2], .@arr; + if (.@arr[UMOB_HP] > 2000000 && .@arr[UMOB_HP] < 5000000) + donpcevent instance_npcname("#fwormboss22") + "::OnStart1"; + else if (.@arr[UMOB_HP] > 10000 && .@arr[UMOB_HP] < 2000000) + donpcevent instance_npcname("#fwormboss22") + "::OnStart2"; + } + end; +OnTimer12000: + stopnpctimer; + getunitdata 'BOSS[2], .@arr; + if (.@arr[UMOB_HP] > 10000) + initnpctimer; + end; + +OnMyMobDead: + if (mobcount( 'map_name$,instance_npcname("#fwormboss2") +"::OnMyMobDead" ) < 1) { + enablenpc instance_npcname("#fwormenter2"); + enablenpc instance_npcname("#fwormexit2"); + hideoffnpc instance_npcname("#fwormprize2"); + hideoffnpc instance_npcname("Chaos#2"); + hideoffnpc instance_npcname("Iris#2"); + donpcevent instance_npcname("#fwormboss22") + "::OnEnd"; + mapannounce 'map_name$, "You hear something loud in the south. It must be the nest of the one we just got rid of.",bc_map,"0xffffff"; + stopnpctimer; + } + end; + +OnInstanceInit: + hideonnpc instance_npcname("#fwormboss2"); + end; +} + +1@face,1,4,3 script #fwormboss22 CLEAR_NPC,{ + end; +OnEnd: + killmonster 'map_name$, instance_npcname("#fwormboss22") +"::OnMyMobDead"; + stopnpctimer; + end; +OnStart1: + initnpctimer; + if (mobcount( 'map_name$,instance_npcname("#fwormboss22") +"::OnMyMobDead" ) > 6) + killmonster 'map_name$, instance_npcname("#fwormboss22") + "::OnMyMobDead"; + getunitdata 'BOSS[2], .@arr; + .@mobx = .@arr[UMOB_X]; + .@moby = .@arr[UMOB_Y]; + monster 'map_name$,.@mobx-4,.@moby,"#waterball",2539,1,instance_npcname("#fwormboss22") + "::OnMyMobDead"; + monster 'map_name$,.@mobx+4,.@moby,"#waterball",2539,1,instance_npcname("#fwormboss22") + "::OnMyMobDead"; + end; +OnStart2: + initnpctimer; + if (mobcount( 'map_name$,instance_npcname("#fwormboss22") +"::OnMyMobDead" ) > 12) + killmonster 'map_name$, instance_npcname("#fwormboss22") + "::OnMyMobDead"; + getunitdata 'BOSS[2], .@arr; + .@mobx = .@arr[UMOB_X]; + .@moby = .@arr[UMOB_Y]; + monster 'map_name$,.@mobx-4,.@moby,"#waterball",2539,1,instance_npcname("#fwormboss22") + "::OnMyMobDead"; + monster 'map_name$,.@mobx,.@moby+4,"#waterball",2539,1,instance_npcname("#fwormboss22") + "::OnMyMobDead"; + monster 'map_name$,.@mobx+4,.@moby,"#waterball",2539,1,instance_npcname("#fwormboss22") + "::OnMyMobDead"; + monster 'map_name$,.@mobx,.@moby-4,"#waterball",2539,1,instance_npcname("#fwormboss22") + "::OnMyMobDead"; + end; +OnTimer20000: + donpcevent instance_npcname("#fwormboss22") + "::OnEnd"; + end; +OnMyMobDead: + end; +OnInstanceInit: + hideonnpc instance_npcname("#fwormboss22"); + end; +} + +1@face,139,100,0 script #fwormenter2 WARPNPC,2,2,{ + end; +OnTouch: + warp 'map_name$,156,117; + end; +OnInstanceInit: + disablenpc instance_npcname("#fwormenter2"); + end; +} + +1@face,151,106,0 script #fwormexit2 WARPNPC,2,2,{ + end; +OnTouch: + warp 'map_name$,127,95; + end; +OnInstanceInit: + disablenpc instance_npcname("#fwormexit2"); + end; +} + +// 3rd Stage +//============================================================ +1@face,153,113,7 script Chaos#2 4_M_CHAOS,{ + cutin "h_chaos01",2; + if (getcharid(0) != getpartyleader(getcharid(1),2)) { + mes "[Chaos]"; + mes "I do not know what this is about, but I'm talking to your leader so please wait for a while ok?"; + close2; + cutin "",255; + end; + } + mes "[Chaos]"; + mes "You're pretty good! But you have to be careful from now on. This narrow canyon seems to be full of dangers."; + npctalk "Chaos: You're pretty good! But you have to be careful from now on. This narrow canyon seems to be full of dangers."; + close2; + donpcevent instance_npcname("Chaos#22") + "::OnStart"; + cutin "",255; + end; + +OnInstanceInit: + hideonnpc instance_npcname("Chaos#2"); + end; +} + +1@face,153,113,7 script Chaos#22 4_M_CHAOS,{ + end; +OnStart: + hideoffnpc instance_npcname("Chaos#22"); + hideonnpc instance_npcname("Chaos#2"); + sleep 4000; + npctalk "Iris: I do not feel good here. Let's get outta here right now Chaos!", instance_npcname("Iris#2"); + sleep 4000; + npctalk "Chaos: Ok, let's get out of here. Carefully follow me!"; + sleep 4000; + hideonnpc instance_npcname("Chaos#22"); + hideonnpc instance_npcname("Iris#2"); + donpcevent instance_npcname("#fwormcontrol3") + "::OnStart"; + donpcevent instance_npcname("#fwormprize3") + "::OnStart"; + end; +OnInstanceInit: + hideonnpc instance_npcname("Chaos#22"); + end; +} + +1@face,160,113,1 script Iris#2 4_F_IRIS,{ + cutin "h_iris01",2; + mes "[Iris]"; + mes "This canyon. I am not feeling good here. I don't want to stay anymore."; + close2; + cutin "",255; + end; + +OnInstanceInit: + hideonnpc instance_npcname("Iris#2"); + end; +} + +1@face,2,5,3 script #fwormcontrol3 CLEAR_NPC,{ + end; +OnStart: + .@mon_num = ( getmapusers('map_name$) + 1 ) * 11; + areamonster 'map_name$,238,274,308,344,"Faceworm",2528,.@mon_num,instance_npcname("#fwormcontrol3") + "::OnMyMobDead"; + end; +OnMyMobDead: + .@mob_dead_num = mobcount('map_name$,instance_npcname("#fwormcontrol3") + "::OnMyMobDead"); + mapannounce 'map_name$, "There " + ( .@mob_dead_num > 1 ? "are" : "is" ) + " " + callfunc( "F_InsertPlural", .@mob_dead_num, "faceworm" ) + " still alive.",bc_map,"0xffffff"; + if (.@mob_dead_num < 3) + initnpctimer; + end; +OnTimer1000: + killmonster 'map_name$, instance_npcname("#fwormcontrol3") + "::OnMyMobDead"; + donpcevent instance_npcname("#fwormboss3") + "::OnStart"; + mapannounce 'map_name$, "A giant faceworm has suddenly appeared.",bc_map,"0xffffff"; + stopnpctimer; + end; +OnInstanceInit: + hideonnpc instance_npcname("#fwormcontrol3"); + end; +} + +1@face,2,5,3 script #fwormboss3 CLEAR_NPC,{ + end; +OnStart: + areamonster 'map_name$,273,303,283,313,"Dark Faceworm",2530,1,instance_npcname("#fwormboss3") + "::OnMyMobDead"; + 'BOSS[3] = $@mobid[0]; + .@MOB_HP = 5200000 - ( (13 - getmapusers('map_name$)) * 200000 ); + if (.@MOB_HP < 1500000) + .@MOB_HP = 1500000; + setunitdata 'BOSS[3], UMOB_HP, .@MOB_HP; + initnpctimer; + end; +OnTimer1111: + .@mapcount = getmapusers('map_name$); + if (.@mapcount < 1) + setunitdata 'BOSS[3], UMOB_HP, 5000000; + else if (rand(1,(22-.@mapcount)) < 17) { + getunitdata 'BOSS[3], .@arr; + if (.@arr[UMOB_HP] > 4200000 && .@arr[UMOB_HP] < 5000000 || .@arr[UMOB_HP] > 3200000 && .@arr[UMOB_HP] < 4000000 || .@arr[UMOB_HP] > 2200000 && .@arr[UMOB_HP] < 3000000) + donpcevent instance_npcname("#fwormboss32") + "::OnStart1"; + else if (.@arr[UMOB_HP] > 1200000 && .@arr[UMOB_HP] < 2000000 || .@arr[UMOB_HP] > 10000 && .@arr[UMOB_HP] < 1000000) + donpcevent instance_npcname("#fwormboss32") + "::OnStart2"; + } + end; +OnTimer7000: + stopnpctimer; + getunitdata 'BOSS[3], .@arr; + if (.@arr[UMOB_HP] > 10000) + initnpctimer; + end; +OnMyMobDead: + if (mobcount( 'map_name$,instance_npcname("#fwormboss3") +"::OnMyMobDead" ) < 1) { + hideoffnpc instance_npcname("#fwormprize3"); + enablenpc instance_npcname("#fwormenter3"); + enablenpc instance_npcname("#fwormexit3"); + enablenpc instance_npcname("#chaoson"); + donpcevent instance_npcname("#fwormboss32") + "::OnEnd"; + mapannounce 'map_name$, "You hear the pile of stones collapsing. This might be a gateway to go to other spaces.",bc_map,"0xffffff"; + stopnpctimer; + } + end; +OnHeal01: + .@mapcount = getmapusers('map_name$); + getunitdata 'BOSS[3], .@arr; + .@r_hpp = ((.@mapcount+1) * 5000) * rand(1,10); + .@dfacehp = .@arr[UMOB_HP] + .@r_hpp; + .@r_hpp2 = 5200000 - ((13-.@mapcount) * 200000); + if (.@dfacehp > .@r_hpp2) + .@dfacehp = .@r_hpp2; + setunitdata 'BOSS[3], UMOB_HP, .@dfacehp; + mapannounce 'map_name$, "Dark faceworm has dropped a sack of fatal poison and recovers " + .@r_hpp + " amount of energy.",bc_map,"0x66ff00"; + end; +OnInstanceInit: + hideonnpc instance_npcname("#fwormboss3"); + end; +} + +1@face,1,4,3 script #fwormboss32 CLEAR_NPC,{ + end; +OnEnd: + killmonster 'map_name$, instance_npcname("#fwormboss32") + "::OnMyMobDead"; + end; +OnStart1: + callsub S_Spawn, 3; +OnStart2: + callsub S_Spawn, 5; +S_Spawn: + getunitdata 'BOSS[3], .@arr; + .@num = getarg(0); + .@coord_x = .@arr[UMOB_X] + .@num; + .@coord_y = .@arr[UMOB_Y] - .@num; + .@vmobx = .@arr[UMOB_X] - .@num; + do { + .@vmoby = .@arr[UMOB_Y] + .@num; + do { + monster 'map_name$,.@vmobx,.@vmoby,"Venom Bug",2531,1,instance_npcname("#fwormboss32") + "::OnMyMobDead"; + .@vmoby -= 2; + } + while( .@vmoby >= .@coord_y ); + .@vmobx += 2; + } + while( .@vmobx <= .@coord_x ); + donpcevent instance_npcname("#fwormboss3") + "::OnHeal01"; + end; +OnMyMobDead: + end; +OnInstanceInit: + hideonnpc instance_npcname("#fwormboss32"); + end; +} + +1@face,248,185,0 script #fwormenter3 WARPNPC,2,2,{ + end; +OnTouch: + warp 'map_name$,261,170; + end; +OnInstanceInit: + disablenpc instance_npcname("#fwormenter3"); + end; +} + +1@face,254,175,0 script #fwormexit3 WARPNPC,2,2,{ + end; +OnTouch: + warp 'map_name$,244,192; + end; +OnInstanceInit: + disablenpc instance_npcname("#fwormexit3"); + end; +} + +// 4th Stage +//============================================================ +1@face,261,169,0 script #chaoson HIDDEN_WARP_NPC,7,7,{ + end; +OnTouch_: + disablenpc instance_npcname("#chaoson"); + donpcevent instance_npcname("#announcer1") + "::OnStart"; + end; +OnInstanceInit: + disablenpc instance_npcname("#chaoson"); + end; +} + +1@face,1,10,7 script #announcer1 CLEAR_NPC,{ + end; +OnStart: + mapannounce 'map_name$, "The voice of Chaos: Hey adventurers, you should be careful! Avoid the poison!",bc_map,"0xffff00"; + sleep 6000; + mapannounce 'map_name$, "The voice of Chaos: We are looking for another nest so let me know if you find anything.",bc_map,"0xffff00"; + donpcevent instance_npcname("#fwormcontrol4") + "::OnStart"; + donpcevent instance_npcname("#fwormcontrol42") + "::OnStart"; + donpcevent instance_npcname("#fwormprize4") + "::OnStart"; + end; +OnInstanceInit: + hideonnpc instance_npcname("#announcer1"); + end; +} + +1@face,2,5,3 script #fwormcontrol4 CLEAR_NPC,{ + end; +OnStart: + .@mob_c = getmapusers('map_name$) + 1; + .@mon_num = .@mob_c * 6; + areamonster 'map_name$,250,94,330,174,"Faceworm",2528,.@mon_num,instance_npcname("#fwormcontrol4") + "::OnMyMobDead"; + .@mon_num = .@mob_c * 5; + areamonster 'map_name$,223,51,303,111,"Faceworm",2528,.@mon_num,instance_npcname("#fwormcontrol4") + "::OnMyMobDead"; + end; +OnMyMobDead: + .@mob_dead_num = mobcount('map_name$,instance_npcname("#fwormcontrol4") + "::OnMyMobDead"); + mapannounce 'map_name$, "There " + ( .@mob_dead_num > 1 ? "are" : "is" ) + " " + callfunc( "F_InsertPlural", .@mob_dead_num, "faceworm" ) + " still alive.",bc_map,"0xffffff"; + if (.@mob_dead_num < 3) + initnpctimer; + end; +OnTimer1000: + killmonster 'map_name$, instance_npcname("#fwormcontrol4") + "::OnMyMobDead"; + donpcevent instance_npcname("#fwormboss4") + "::OnStart"; + mapannounce 'map_name$, "You hear something screaming to the west.",bc_map,"0xffffff"; + stopnpctimer; + end; +OnInstanceInit: + hideonnpc instance_npcname("#fwormcontrol4"); + end; +} + +1@face,2,6,3 script #fwormcontrol42 CLEAR_NPC,{ + end; +OnEnd: + killmonster 'map_name$, instance_npcname("#fwormcontrol42") + "::OnMyMobDead"; + end; +OnStart: + .@mon_num = ( getmapusers('map_name$) + 8 ) * 5; + areamonster 'map_name$,237,71,337,171,"#toxicarea",2536,.@mon_num,instance_npcname("#fwormcontrol42") + "::OnMyMobDead"; + end; +OnMyMobDead: + end; +OnInstanceInit: + hideonnpc instance_npcname("#fwormcontrol42"); + end; +} + +1@face,2,5,3 script #fwormboss4 CLEAR_NPC,{ + end; +OnStart: + areamonster 'map_name$,209,103,219,113,"Dark Faceworm",2530,1,instance_npcname("#fwormboss4") + "::OnMyMobDead"; + 'BOSS[4] = $@mobid[0]; + .@dfacehp = ( 13 - getmapusers('map_name$) ) * 200000; + .@MOB_HP = 5200000 - .@dfacehp; + if (.@MOB_HP < 1500000) + .@MOB_HP = 1500000; + setunitdata 'BOSS[4], UMOB_HP, .@MOB_HP; + initnpctimer; + end; +OnTimer1111: + .@mapcount = getmapusers('map_name$); + if (.@mapcount < 1) + setunitdata 'BOSS[4], UMOB_HP, 5000000; + else if (rand(1,22-.@mapcount) < 17) { + getunitdata 'BOSS[4], .@arr; + if (.@arr[UMOB_HP] > 4300000 && .@arr[UMOB_HP] < 5000000 || .@arr[UMOB_HP] > 3300000 && .@arr[UMOB_HP] < 4000000) + donpcevent instance_npcname("#fwormboss42") + "::OnStart1"; + else if (.@arr[UMOB_HP] > 2300000 && .@arr[UMOB_HP] < 3000000 || .@arr[UMOB_HP] > 1300000 && .@arr[UMOB_HP] < 2000000 || .@arr[UMOB_HP] > 10000 && .@arr[UMOB_HP] < 1000000) + donpcevent instance_npcname("#fwormboss42") + "::OnStart2"; + } + end; +OnTimer10000: + stopnpctimer; + getunitdata 'BOSS[4], .@arr; + if (.@arr[UMOB_HP] > 10000) + initnpctimer; + else + donpcevent instance_npcname("#fwormboss42") + "::OnEnd"; + end; +OnMyMobDead: + if (mobcount( 'map_name$,instance_npcname("#fwormboss4") +"::OnMyMobDead" ) < 1) { + donpcevent instance_npcname("#fwormcontrol42") + "::OnEnd"; + hideoffnpc instance_npcname("#fwormprize4"); + enablenpc instance_npcname("#fwormenter4"); + enablenpc instance_npcname("#fwormexit4"); + hideoffnpc instance_npcname("Chaos#4"); + hideoffnpc instance_npcname("Iris#4"); + enablenpc instance_npcname("#chaoson2"); + donpcevent instance_npcname("#fwormboss42") + "::OnEnd"; + mapannounce 'map_name$, "You hear the pile of stones collapsing. I think another gateway is found.",bc_map,"0xffffff"; + stopnpctimer; + } + end; +OnInstanceInit: + hideonnpc instance_npcname("#fwormboss4"); + end; +} + +1@face,1,4,3 script #fwormboss42 CLEAR_NPC,{ + end; +OnEnd: + killmonster 'map_name$, instance_npcname("#fwormboss42") + "::OnMyMobDead"; + stopnpctimer; + end; +OnStart1: + initnpctimer; + .@label$ = instance_npcname("#fwormboss42") + "::OnMyMobDead"; + if (mobcount( 'map_name$,.@label$ ) > 12) + killmonster 'map_name$, .@label$; + getunitdata 'BOSS[4], .@arr; + .@mobx = .@arr[UMOB_X]; + .@moby = .@arr[UMOB_Y]; + monster 'map_name$,.@mobx-3,.@moby+3,"#venomfog",2536,1, .@label$; + monster 'map_name$,.@mobx+3,.@moby+3,"#venomfog",2536,1, .@label$; + monster 'map_name$,.@mobx-3,.@moby-3,"#venomfog",2536,1, .@label$; + monster 'map_name$,.@mobx+3,.@moby-3,"#venomfog",2536,1, .@label$; + end; +OnStart2: + initnpctimer; + .@label$ = instance_npcname("#fwormboss42") + "::OnMyMobDead"; + if (mobcount( 'map_name$,.@label$ ) > 27) + killmonster 'map_name$, .@label$; + getunitdata 'BOSS[4], .@arr; + .@mobx = .@arr[UMOB_X]; + .@moby = .@arr[UMOB_Y]; + monster 'map_name$,.@mobx-5,.@moby+5,"#venomfog",2536,1, .@label$; + monster 'map_name$, .@mobx,.@moby+5,"#venomfog",2536,1, .@label$; + monster 'map_name$,.@mobx+5,.@moby+5,"#venomfog",2536,1, .@label$; + monster 'map_name$,.@mobx-5, .@moby,"#venomfog",2536,1, .@label$; + monster 'map_name$, .@mobx, .@moby,"#venomfog",2536,1, .@label$; + monster 'map_name$,.@mobx+5, .@moby,"#venomfog",2536,1, .@label$; + monster 'map_name$,.@mobx-5,.@moby-5,"#venomfog",2536,1, .@label$; + monster 'map_name$, .@mobx,.@moby-5,"#venomfog",2536,1, .@label$; + monster 'map_name$,.@mobx+5,.@moby-5,"#venomfog",2536,1, .@label$; + end; +OnTimer30000: + donpcevent instance_npcname("#fwormboss42") + "::OnEnd"; + end; +OnMyMobDead: + end; +OnInstanceInit: + hideonnpc instance_npcname("#fwormboss42"); + end; +} + +1@face,204,122,0 script #fwormenter4 WARPNPC,2,2,{ + end; +OnTouch: + warp 'map_name$,210,145; + end; +OnInstanceInit: + disablenpc instance_npcname("#fwormenter4"); + end; +} + +1@face,198,142,0 script #fwormexit4 WARPNPC,2,2,{ + end; +OnTouch: + warp 'map_name$,211,114; + end; +OnInstanceInit: + disablenpc instance_npcname("#fwormexit4"); + end; +} + +// 5th Stage (Final Boss Room) +//============================================================ +1@face,213,147,0 script #chaoson2 HIDDEN_WARP_NPC,7,7,{ + end; +OnTouch_: + disablenpc instance_npcname("#chaoson2"); + donpcevent instance_npcname("Chaos#4") + "::OnStart"; + end; +OnInstanceInit: + disablenpc instance_npcname("#chaoson2"); + end; +} + +1@face,213,153,6 script Chaos#5 4_M_CHAOS,{ + end; +OnInstanceInit: + hideonnpc instance_npcname("Chaos#5"); + end; +} + +1@face,208,149,7 script Chaos#4 4_M_CHAOS,{ + cutin "h_chaos01",2; + mes "[Chaos]"; + mes "Hew. This puddle is weird."; + close2; + cutin "",255; + end; + +OnStart: + .@iris$ = instance_npcname("Iris#4"); + .@chaos5$ = instance_npcname("Chaos#5"); + sleep 2000; + npctalk "Chaos: Iris, what is this puddle for?"; + sleep 3000; + npctalk "Iris: Well, I think it is too big to be the nest of a faceworm.", .@iris$; + sleep 4000; + npctalk "Chaos: Hmm, okay, should I go down there and check it out?"; + sleep 3000; + npctalk "Iris: Chaos! Cut the crap.", .@iris$; + sleep 3000; + npctalk "Chaos: Why not? It doesn't even look that dangerous!"; + sleep 5000; + hideonnpc instance_npcname("Chaos#4"); + sleep 3000; + npctalk "Iris: Arrghh, Chaos you're such a troublemaker.", .@iris$; + sleep 6000; + npctalk "Chaos: Ugh! Arrgh!! What is this?", .@chaos5$; + sleep 2000; + npctalk "Iris: Chaos! What is it?", .@iris$; + sleep 2000; + npctalk "Chaos: Ah", .@chaos5$; + sleep 100; + npctalk "Chaos: Argh", .@chaos5$; + sleep 100; + npctalk "Chaos: Argghh", .@chaos5$; + sleep 100; + npctalk "Chaos: Argghhhhh", .@chaos5$; + sleep 100; + npctalk "Chaos: Argghhhhhhh", .@chaos5$; + sleep 100; + npctalk "Chaos: Argghhhhhhhhh", .@chaos5$; + sleep 100; + npctalk "Chaos: Argghhhhhhhhhhh!!", .@chaos5$; + sleep 5000; + hideoffnpc instance_npcname("Chaos#4"); + sleep 3000; + npctalk "Chaos: Damn, I was close to being eaten alive."; + sleep 3000; + npctalk "Iris: I asked you what happened dummy!", .@iris$; + sleep 3000; + npctalk "Chaos: Uhh, the faceworm queen is crawling up now and it looks like really pissed off. So let's, uh, get outta here."; + sleep 6000; + hideonnpc instance_npcname("Chaos#4"); + sleep 1000; + npctalk "Iris: Chaos you idiot!!", .@iris$; + specialeffect EF_DUSTSTORM,AREA, .@chaos5$; + specialeffect EF_MAPPILLAR2,AREA, .@chaos5$; + sleep 5000; + hideonnpc instance_npcname("Iris#4"); + sleep 9000; + donpcevent instance_npcname("#fwormboss5") + "::OnStart"; + donpcevent instance_npcname("#fwormprize5") + "::OnStart"; + end; +OnInstanceInit: + hideonnpc instance_npcname("Chaos#4"); + end; +} + +1@face,220,149,1 script Iris#4 4_F_IRIS,{ + cutin "h_iris01",2; + mes "[Iris]"; + mes "Something seems fishy around here. It's dangerous."; + close2; + cutin "",255; + end; + +OnInstanceInit: + hideonnpc instance_npcname("Iris#4"); + end; +} + +1@face,1,4,3 script #fwormboss5 CLEAR_NPC,{ + if (callfunc("F_GM_NPC",1854,0) == 1) { + mes "" + mobcount('map_name$,instance_npcname("#fwormboss5") + "::OnMyMobDead"); + close; + } + end; + +OnHeal05: + callsub S_Heal, 5; +OnHeal04: + callsub S_Heal, 4, 1000000; +OnHeal03: + callsub S_Heal, 3, 250000; +OnHeal02: + callsub S_Heal, 2, 100000; +OnHeal01: + callsub S_Heal, 1, 50000; +S_Heal: + getunitdata 'BOSS[5],.@arr; + .@type = getarg(0); + .@mapcount = getmapusers('map_name$); + if (.@type == 5) + .@r_hpp = (.@mapcount+1) * 20000 * rand(1,10); + else + .@r_hpp = .@mapcount * getarg(1); + .@dfacehp = .@arr[UMOB_HP] + .@r_hpp; + .@r_hpp2 = 52000000 - ((13-.@mapcount) * 2000000); + if (.@dfacehp > .@r_hpp2) + .@dfacehp = .@r_hpp2; + setunitdata 'BOSS[5], UMOB_HP, .@dfacehp; + if (.@type == 5) + mapannounce 'map_name$, "The Faceworm Queen has dropped a sack of fatal poison and recovers " + .@r_hpp + " amount of energy.",bc_map,"0x66ff00",FW_NORMAL,14; + else + mapannounce 'map_name$, "The Faceworm Queen absorbs the energy of " + .@type + " unbroken " + ( .@type > 1 ? "eggs" : "egg" ) + " and recovers " + .@r_hpp + " amount of energy.",bc_map,"0x66ff00",FW_NORMAL,14; + end; +OnDamage: + getunitdata 'BOSS[5],.@arr; + .@r_hpp_1 = ( getmapusers('map_name$) + 7 ) * 25; + .@dr_hpp = rand(20,.@r_hpp_1) * 10000; + .@dfacehp = .@arr[UMOB_HP] - .@dr_hpp; + if (.@dfacehp < 5000000) + .@dfacehp = 5000000; + setunitdata 'BOSS[5], UMOB_HP, .@dfacehp; + mapannounce 'map_name$, "Chaos deals " + .@dr_hpp + " deadly damage hit points!!",bc_map,"0xffff33",FW_NORMAL,17; + end; +OnBerserk2: + getunitdata 'BOSS[5],.@arr; + .@MOB_HP2 = (( ('BOSS_HP - .@arr[UMOB_HP]) * 8) / 1000 ) * 100; + 'BOSS_HP = .@arr[UMOB_HP] + .@MOB_HP2; + killmonster 'map_name$, instance_npcname("#fwormboss5") + "::OnMyMobDead"; + monster 'map_name$, .@arr[UMOB_X], .@arr[UMOB_Y],"Faceworm Queen",2532,1,instance_npcname("#fwormboss5") + "::OnMyMobDead"; + 'BOSS[5] = $@mobid[0]; + setunitdata 'BOSS[5], UMOB_HP, 'BOSS_HP; + // monster 'map_name$,1,6,"Faceworm Queen's Life",2915,1,instance_npcname("#fwormboss5") + "::OnMyMobDead"; + mapannounce 'map_name$, "The faceworm rages recovering " + .@MOB_HP2 + " and its attack power is increased.",bc_map,"0xff8888",FW_NORMAL,13; + end; +OnBerserk: + getunitdata 'BOSS[5],.@arr; + if (.@arr[UMOB_X] < 190 || .@arr[UMOB_X] > 230 || .@arr[UMOB_Y] < 135 || .@arr[UMOB_Y] > 175) { + killmonster 'map_name$, instance_npcname("#fwormboss5") + "::OnMyMobDead"; + monster 'map_name$,.@arr[UMOB_X],.@arr[UMOB_Y],"Faceworm Queen",2532,1,instance_npcname("#fwormboss5") + "::OnMyMobDead"; + 'BOSS[5] = $@mobid[0]; + setunitdata 'BOSS[5], UMOB_HP, .@arr[UMOB_HP]; + // monster 'map_name$,1,6,"Faceworm Queen's Life",2915,1,instance_npcname("#fwormboss5") + "::OnMyMobDead"; + 'BOSS_HP = .@arr[UMOB_HP]; + donpcevent instance_npcname("#fwormboss50") + "::OnCalm"; + mapannounce 'map_name$, "It is too far away from the nest. The Faceworm Queen begins raging.",bc_map,"0xff3333",FW_NORMAL,15; + } + end; +OnCalm: + getunitdata 'BOSS[5],.@arr; + killmonster 'map_name$, instance_npcname("#fwormboss5") + "::OnMyMobDead"; + monster 'map_name$, .@arr[UMOB_X], .@arr[UMOB_Y],"Faceworm Queen",2529,1,instance_npcname("#fwormboss5") + "::OnMyMobDead"; + 'BOSS[5] = $@mobid[0]; + setunitdata 'BOSS[5], UMOB_HP, .@arr[UMOB_HP]; + // monster 'map_name$,1,6,"Faceworm Queen's Life",2915,1,instance_npcname("#fwormboss5") + "::OnMyMobDead"; + 'BOSS_HP = .@arr[UMOB_HP]; + end; +OnChange: + getunitdata 'BOSS[5],.@arr; + .@chan_f = rand(1,14); + if (.@chan_f >= 10) + end; + if (.@chan_f > 0 && .@chan_f < 3) { + .@element$ = "wind"; + .@mob_id = 2535; + } + else if (.@chan_f > 2 && .@chan_f < 5) { + .@element$ = "earth"; + .@mob_id = 2533; + } + else if (.@chan_f > 4 && .@chan_f < 7) { + .@element$ = "water"; + .@mob_id = 2534; + } + else if (.@chan_f > 6 && .@chan_f < 10) { + .@element$ = "its original"; + .@mob_id = 2529; + } + mapannounce 'map_name$, "Faceworm Queen is trying to shed its skin to " + .@element$ + " attribute.",bc_map,"0xffffff"; + sleep 1000; + if (unitexists('BOSS[5]) == false) + stopnpctimer; + else { + killmonster 'map_name$, instance_npcname("#fwormboss5") + "::OnMyMobDead"; + monster 'map_name$, .@arr[UMOB_X], .@arr[UMOB_Y],"Faceworm Queen",.@mob_id,1,instance_npcname("#fwormboss5") + "::OnMyMobDead"; + 'BOSS[5] = $@mobid[0]; + setunitdata 'BOSS[5], UMOB_HP, .@arr[UMOB_HP]; + // monster 'map_name$,1,6,"Faceworm Queen's Life",2915,1,instance_npcname("#fwormboss5") + "::OnMyMobDead"; + 'BOSS_HP = .@arr[UMOB_HP]; + } + end; +OnWarning: + getunitdata 'BOSS[5],.@arr; + if (.@arr[UMOB_X] < 190 || .@arr[UMOB_X] > 230 || .@arr[UMOB_Y] < 135 || .@arr[UMOB_Y] > 175) + mapannounce 'map_name$, "Please do not go farther from the nest. The Faceworm Queen can be violent.",bc_map,"0xff5555",FW_NORMAL,15; + end; +OnEnd: + killmonster 'map_name$, instance_npcname("#fwormboss5") + "::OnMyMobDead"; + stopnpctimer; + end; +OnStart: + monster 'map_name$,213,153,"Faceworm Queen",2529,1,instance_npcname("#fwormboss5") + "::OnMyMobDead"; + 'BOSS[5] = $@mobid[0]; + // monster 'map_name$,1,6,"Faceworm Queen's Life",2915,1,instance_npcname("#fwormboss5") + "::OnMyMobDead"; + getunitdata 'BOSS[5],.@arr; + .@dfacehp = ( 13- getmapusers('map_name$) ) * 2000000; + .@MOB_HP2 = 52000000 - .@dfacehp; + if (.@MOB_HP2 < 15000000) + .@MOB_HP2 = 15000000; + setunitdata 'BOSS[5], UMOB_HP, .@MOB_HP2; + 'BOSS_HP = .@MOB_HP2; + initnpctimer; + end; +OnTimer1000: + if (mobcount( 'map_name$,instance_npcname("#fwormboss5") + "::OnMyMobDead" ) < 1) { + stopnpctimer; + end; + } + getunitdata 'BOSS[5],.@arr; + 'BOSS_HP = .@arr[UMOB_HP]; + end; +OnTimer5555: + .@mapcount = getmapusers('map_name$); + if (.@mapcount < 1) { + setunitdata 'BOSS[5], UMOB_HP, 50000000; + for ( .@i = 1; .@i <= 4; ++.@i ) + donpcevent instance_npcname( "#fwormboss5" + .@i ) + "::OnEnd"; + stopnpctimer; + } + else if (rand(1,(22-.@mapcount)) < 17) { + getunitdata 'BOSS[5],.@arr; + if (.@arr[UMOB_HP] > 45000000 && .@arr[UMOB_HP] < 48000000) + donpcevent instance_npcname("#fwormboss51") + "::OnStart1"; + else if (.@arr[UMOB_HP] > 40000000 && .@arr[UMOB_HP] < 45000000) + donpcevent instance_npcname("#fwormboss52") + "::OnStart1"; + else if (.@arr[UMOB_HP] > 35000000 && .@arr[UMOB_HP] < 40000000) + donpcevent instance_npcname("#fwormboss53") + "::OnStart1"; + else if (.@arr[UMOB_HP] > 30000000 && .@arr[UMOB_HP] < 35000000) + donpcevent instance_npcname("#fwormboss54") + "::OnStart1"; + else if (.@arr[UMOB_HP] > 25000000 && .@arr[UMOB_HP] < 30000000) + donpcevent instance_npcname("#fwormboss51") + "::OnStart2"; + else if (.@arr[UMOB_HP] > 20000000 && .@arr[UMOB_HP] < 25000000) + donpcevent instance_npcname("#fwormboss52") + "::OnStart2"; + else if (.@arr[UMOB_HP] > 15000000 && .@arr[UMOB_HP] < 20000000) + donpcevent instance_npcname("#fwormboss53") + "::OnStart2"; + else if (.@arr[UMOB_HP] > 10000000 && .@arr[UMOB_HP] < 15000000) + donpcevent instance_npcname("#fwormboss54") + "::OnStart2"; + else if (.@arr[UMOB_HP] > 5000000 && .@arr[UMOB_HP] < 10000000) { + if (rand(1,3) == 1) + donpcevent instance_npcname("#fwormboss53") + "::OnStart1"; + else + donpcevent instance_npcname("#fwormboss51") + "::OnStart1"; + donpcevent instance_npcname("#fwormboss54") + "::OnStart1"; + } + else if (.@arr[UMOB_HP] > 500000 && .@arr[UMOB_HP] < 5000000) { + if (rand(1,3) == 1) + donpcevent instance_npcname("#fwormboss53") + "::OnStart2"; + else + donpcevent instance_npcname("#fwormboss51") + "::OnStart2"; + donpcevent instance_npcname("#fwormboss54") + "::OnStart2"; + } + } + end; +OnTimer10000: + donpcevent instance_npcname("#fwormboss5") + "::OnWarning"; + end; +OnTimer12000: + donpcevent instance_npcname("#fwormboss5") + "::OnChange"; + end; +OnTimer13000: + if (unitexists('BOSS[5]) == false) + stopnpctimer; + getunitdata 'BOSS[5],.@arr; + if (.@arr[UMOB_HP] > 7000000) + donpcevent instance_npcname("#support") + "::OnSupport_2"; + end; +OnTimer14000: + donpcevent instance_npcname("#fwormboss5") + "::OnBerserk"; + end; +OnTimer19000: + getunitdata 'BOSS[5],.@arr; + if ('BOSS_HP > .@arr[UMOB_HP]) { + .@MOB_HP3 = 'BOSS_HP - .@arr[UMOB_HP]; + .@mapcount = getmapusers('map_name$); + if (.@mapcount && .@MOB_HP3 > ((.@mapcount + 7) * 400000)) + donpcevent instance_npcname("#fwormboss5") + "::OnBerserk2"; + } + end; +OnTimer25000: + stopnpctimer; + getunitdata 'BOSS[5],.@arr; + if (.@arr[UMOB_HP] > 200000) + initnpctimer; + else { + for ( .@i = 1; .@i <= 4; ++.@i ) + donpcevent instance_npcname( "#fwormboss5" + .@i ) + "::OnEnd"; + } + end; +OnMyMobDead: + if (mobcount( 'map_name$,instance_npcname("#fwormboss5") + "::OnMyMobDead" ) < 1) { + hideoffnpc instance_npcname("#fwormprize5"); + hideoffnpc instance_npcname("Chaos#6"); + hideoffnpc instance_npcname("Iris#6"); + enablenpc instance_npcname("#chaoson3"); + for ( .@i = 0; .@i <= 4; ++.@i ) + donpcevent instance_npcname( "#fwormboss5" + .@i ) + "::OnEnd"; + donpcevent instance_npcname("#fwormboss5") + "::OnEnd"; + } + end; +} + +1@face,2,3,5 script #support CLEAR_NPC,{ + end; +OnSupport_2: + .@sup_m = getmapusers('map_name$) + 10; + if (.@sup_m < 8) + .@sup_m = 8; + .@chan_f = rand(1,.@sup_m); + if (.@chan_f > 0 && .@chan_f < 3) { + donpcevent instance_npcname("#chaos_north") + "::OnStart"; + mapannounce 'map_name$, "The voice of Chaos: Hey! Lure it to the north! I will beat it!",bc_map,"0xff44aa",FW_NORMAL,14; + } else if (.@chan_f > 2 && .@chan_f < 5) { + donpcevent instance_npcname("#chaos_south") + "::OnStart"; + mapannounce 'map_name$, "The voice of Chaos: Hey! Lure it to the south! I will beat it!",bc_map,"0xff44aa",FW_NORMAL,14; + } else if (.@chan_f > 4 && .@chan_f < 7) { + donpcevent instance_npcname("#chaos_east") + "::OnStart"; + mapannounce 'map_name$, "The voice of Chaos: Hey! Lure it to the east! I will beat it!",bc_map,"0xff44aa",FW_NORMAL,14; + } else if (.@chan_f > 6 && .@chan_f < 9) { + donpcevent instance_npcname("#chaos_west") + "::OnStart"; + mapannounce 'map_name$, "The voice of Chaos: Hey! Lure it to the west! I will beat it!",bc_map,"0xff44aa",FW_NORMAL,14; + } + end; +} + +1@face,214,172,0 script #chaos_north HIDDEN_WARP_NPC,2,2,{ + end; +OnTouch_: + if (unitexists('BOSS[5]) == true) { + getunitdata 'BOSS[5],.@arr; + if (.@arr[UMOB_X] > 205 && .@arr[UMOB_X] < 223 && .@arr[UMOB_Y] > 163 && .@arr[UMOB_Y] < 181) { + specialeffect EF_MAGNUMBREAK,AREA,instance_npcname("Chaos#north"); + specialeffect EF_LORD,AREA,instance_npcname("Chaos#north"); + donpcevent instance_npcname("#fwormboss5") + "::OnDamage"; + } + else + npctalk "Chaos: You can't even manage to lure the queen to me?"; + } + disablenpc instance_npcname("#chaos_north"); + donpcevent instance_npcname("Chaos#north") + "::OnEnd"; + end; +OnStart: + initnpctimer; + enablenpc instance_npcname("#chaos_north"); + hideoffnpc instance_npcname("Chaos#north"); + end; +OnTimer15000: + disablenpc instance_npcname("#chaos_north"); + hideonnpc instance_npcname("Chaos#north"); + stopnpctimer; + end; +OnInstanceInit: + disablenpc instance_npcname("#chaos_north"); + end; +} + +1@face,214,143,0 script #chaos_south HIDDEN_WARP_NPC,2,2,{ + end; +OnTouch_: + if (unitexists('BOSS[5]) == true) { + getunitdata 'BOSS[5],.@arr; + if (.@arr[UMOB_X] > 205 && .@arr[UMOB_X] < 223 && .@arr[UMOB_Y] > 134 && .@arr[UMOB_Y] < 152) { + specialeffect EF_MAGNUMBREAK,AREA,instance_npcname("Chaos#south"); + specialeffect EF_LORD,AREA,instance_npcname("Chaos#south"); + donpcevent instance_npcname("#fwormboss5") + "::OnDamage"; + } + else + npctalk "Chaos: Hey~ We are partners. You can't just keep running alone!"; + } + disablenpc instance_npcname("#chaos_south"); + donpcevent instance_npcname("Chaos#south") + "::OnEnd"; + end; +OnStart: + initnpctimer; + enablenpc instance_npcname("#chaos_south"); + hideoffnpc instance_npcname("Chaos#south"); + end; +OnTimer15000: + disablenpc instance_npcname("#chaos_south"); + hideonnpc instance_npcname("Chaos#south"); + stopnpctimer; + end; +OnInstanceInit: + disablenpc instance_npcname("#chaos_south"); + end; +} + +1@face,226,158,0 script #chaos_east HIDDEN_WARP_NPC,2,2,{ + end; +OnTouch_: + if (unitexists('BOSS[5]) == true) { + getunitdata 'BOSS[5],.@arr; + if (.@arr[UMOB_X] > 217 && .@arr[UMOB_X] < 235 && .@arr[UMOB_Y] > 149 && .@arr[UMOB_Y] < 167) { + specialeffect EF_MAGNUMBREAK,AREA,instance_npcname("Chaos#east"); + specialeffect EF_LORD,AREA,instance_npcname("Chaos#east"); + donpcevent instance_npcname("#fwormboss5") + "::OnDamage"; + } + else + npctalk "Chaos: Lure and bring it with you, I can't beat it alone!"; + } + disablenpc instance_npcname("#chaos_east"); + donpcevent instance_npcname("Chaos#east") + "::OnEnd"; + end; +OnStart: + initnpctimer; + enablenpc instance_npcname("#chaos_east"); + hideoffnpc instance_npcname("Chaos#east"); + end; +OnTimer15000: + disablenpc instance_npcname("#chaos_east"); + hideonnpc instance_npcname("Chaos#east"); + stopnpctimer; + end; +OnInstanceInit: + disablenpc instance_npcname("#chaos_east"); + end; +} + +1@face,200,158,0 script #chaos_west HIDDEN_WARP_NPC,2,2,{ + end; +OnTouch_: + if (unitexists('BOSS[5]) == true) { + getunitdata 'BOSS[5],.@arr; + if (.@arr[UMOB_X] > 191 && .@arr[UMOB_X] < 209 && .@arr[UMOB_Y] > 149 && .@arr[UMOB_Y] < 167) { + specialeffect EF_MAGNUMBREAK,AREA,instance_npcname("Chaos#west"); + specialeffect EF_LORD,AREA,instance_npcname("Chaos#west"); + donpcevent instance_npcname("#fwormboss5") + "::OnDamage"; + } + else + npctalk "Chaos: Why'd you leave the queen behind? Our lives are at stake here. Pull it together!"; + } + disablenpc instance_npcname("#chaos_west"); + donpcevent instance_npcname("Chaos#west") + "::OnEnd"; + end; +OnStart: + initnpctimer; + enablenpc instance_npcname("#chaos_west"); + hideoffnpc instance_npcname("Chaos#west"); + end; +OnTimer15000: + disablenpc instance_npcname("#chaos_west"); + hideonnpc instance_npcname("Chaos#west"); + stopnpctimer; + end; +OnInstanceInit: + disablenpc instance_npcname("#chaos_west"); + end; +} + +1@face,214,172,5 script Chaos#north 4_M_CHAOS,{ + end; +OnEnd: + initnpctimer; + end; +OnTimer1000: + hideonnpc instance_npcname(strnpcinfo(0)); + stopnpctimer; + end; +OnInstanceInit: + hideonnpc instance_npcname(strnpcinfo(0)); + end; +} +1@face,214,143,0 duplicate(Chaos#north) Chaos#south 4_M_CHAOS +1@face,226,158,3 duplicate(Chaos#north) Chaos#east 4_M_CHAOS +1@face,200,158,6 duplicate(Chaos#north) Chaos#west 4_M_CHAOS + +1@face,1,4,3 script #fwormboss50 CLEAR_NPC,{ + end; +OnEnd: + stopnpctimer; + end; +OnCalm: + initnpctimer; + end; +OnTimer15000: + donpcevent instance_npcname("#fwormboss5") + "::OnCalm"; + stopnpctimer; + end; +OnInstanceInit: + hideonnpc instance_npcname("#fwormboss50"); + end; +} + +1@face,1,4,3 script #fwormboss51 CLEAR_NPC,{ + end; +OnEnd: + killmonster 'map_name$, instance_npcname("#fwormboss51") + "::OnMyMobDead"; + stopnpctimer; + end; +OnStart1: + initnpctimer; + .@label$ = instance_npcname("#fwormboss51") + "::OnMyMobDead"; + if (mobcount( 'map_name$,.@label$ ) > 3) + killmonster 'map_name$, .@label$; + getunitdata 'BOSS[5],.@arr; + monster 'map_name$, .@arr[UMOB_X]-4, .@arr[UMOB_Y], "Faceworm Egg",2540,1, .@label$; + monster 'map_name$, .@arr[UMOB_X]+4, .@arr[UMOB_Y], "Faceworm Egg",2540,1, .@label$; + end; +OnStart2: + initnpctimer; + .@label$ = instance_npcname("#fwormboss51") + "::OnMyMobDead"; + if (mobcount( 'map_name$,.@label$ ) > 6) + killmonster 'map_name$, .@label$; + getunitdata 'BOSS[5],.@arr; + monster 'map_name$, .@arr[UMOB_X]-4, .@arr[UMOB_Y], "Faceworm Egg",2540,1, .@label$; + monster 'map_name$, .@arr[UMOB_X], .@arr[UMOB_Y]+4, "Faceworm Egg",2540,1, .@label$; + monster 'map_name$, .@arr[UMOB_X]+4, .@arr[UMOB_Y], "Faceworm Egg",2540,1, .@label$; + monster 'map_name$, .@arr[UMOB_X], .@arr[UMOB_Y]-4, "Faceworm Egg",2540,1, .@label$; + end; +OnTimer12000: + .@mob_dead_num = mobcount('map_name$,instance_npcname("#fwormboss51") + "::OnMyMobDead"); + if (.@mob_dead_num > 3) + donpcevent instance_npcname("#fwormboss5") + "::OnHeal04"; + else if (.@mob_dead_num > 2) + donpcevent instance_npcname("#fwormboss5") + "::OnHeal03"; + else if (.@mob_dead_num > 1) + donpcevent instance_npcname("#fwormboss5") + "::OnHeal02"; + else if (.@mob_dead_num > 0) + donpcevent instance_npcname("#fwormboss5") + "::OnHeal01"; + donpcevent instance_npcname("#fwormboss51") + "::OnEnd"; + end; +OnMyMobDead: + end; +OnInstanceInit: + hideonnpc instance_npcname("#fwormboss51"); + end; +} + +1@face,1,4,3 script #fwormboss52 CLEAR_NPC,{ + end; +OnEnd: + killmonster 'map_name$, instance_npcname("#fwormboss52") + "::OnMyMobDead"; + stopnpctimer; + end; +OnStart1: + initnpctimer; + .@label$ = instance_npcname("#fwormboss52") + "::OnMyMobDead"; + if (mobcount( 'map_name$,.@label$ ) > 6) + killmonster 'map_name$, .@label$; + getunitdata 'BOSS[5],.@arr; + monster 'map_name$, .@arr[UMOB_X]-4, .@arr[UMOB_Y],"#waterball",2539,1, .@label$; + monster 'map_name$, .@arr[UMOB_X], .@arr[UMOB_Y]+4,"#waterball",2539,1, .@label$; + monster 'map_name$, .@arr[UMOB_X]+4, .@arr[UMOB_Y],"#waterball",2539,1, .@label$; + monster 'map_name$, .@arr[UMOB_X], .@arr[UMOB_Y]-4,"#waterball",2539,1, .@label$; + end; +OnStart2: + initnpctimer; + .@label$ = instance_npcname("#fwormboss52") + "::OnMyMobDead"; + if (mobcount( 'map_name$,.@label$ ) > 12) + killmonster 'map_name$, .@label$; + getunitdata 'BOSS[5], .@arr; + monster 'map_name$, .@arr[UMOB_X]-4, .@arr[UMOB_Y],"#waterball",2539,1, .@label$; + monster 'map_name$, .@arr[UMOB_X], .@arr[UMOB_Y]+4,"#waterball",2539,1, .@label$; + monster 'map_name$, .@arr[UMOB_X]+4, .@arr[UMOB_Y],"#waterball",2539,1, .@label$; + monster 'map_name$, .@arr[UMOB_X], .@arr[UMOB_Y]-4,"#waterball",2539,1, .@label$; + monster 'map_name$, .@arr[UMOB_X]-4, .@arr[UMOB_Y]+4,"#waterball",2539,1, .@label$; + monster 'map_name$, .@arr[UMOB_X]-4, .@arr[UMOB_Y]-4,"#waterball",2539,1, .@label$; + monster 'map_name$, .@arr[UMOB_X]+4, .@arr[UMOB_Y]+4,"#waterball",2539,1, .@label$; + monster 'map_name$, .@arr[UMOB_X]+4, .@arr[UMOB_Y]-4,"#waterball",2539,1, .@label$; + end; +OnTimer20000: + donpcevent instance_npcname("#fwormboss52") + "::OnEnd"; + end; +OnMyMobDead: + end; +OnInstanceInit: + hideonnpc instance_npcname("#fwormboss52"); + end; +} + +1@face,1,4,3 script #fwormboss53 CLEAR_NPC,{ + end; +OnEnd: + killmonster 'map_name$, instance_npcname("#fwormboss53") + "::OnMyMobDead"; + end; +OnStart1: + callsub S_Spawn, 5; +OnStart2: + callsub S_Spawn, 7; +S_Spawn: + getunitdata 'BOSS[5], .@arr; + .@num = getarg(0); + .@coord_x = .@arr[UMOB_X] + .@num; + .@coord_y = .@arr[UMOB_Y] - .@num; + .@vmobx = .@arr[UMOB_X] - .@num; + do { + .@vmoby = .@arr[UMOB_Y] + .@num; + do { + monster 'map_name$,.@vmobx,.@vmoby,"Venom Bug",2531,1,instance_npcname("#fwormboss53") + "::OnMyMobDead"; + .@vmoby -= 2; + } + while( .@vmoby >= .@coord_y ); + .@vmobx += 2; + } + while( .@vmobx <= .@coord_x ); + donpcevent instance_npcname("#fwormboss5") + "::OnHeal05"; + end; +OnMyMobDead: + end; +OnInstanceInit: + hideonnpc instance_npcname("#fwormboss53"); + end; +} + +1@face,1,4,3 script #fwormboss54 CLEAR_NPC,{ + end; +OnEnd: + killmonster 'map_name$, instance_npcname("#fwormboss54") + "::OnMyMobDead"; + stopnpctimer; + end; +OnStart1: + initnpctimer; + .@label$ = instance_npcname("#fwormboss54") + "::OnMyMobDead"; + if (mobcount( 'map_name$,.@label$ ) > 20) + killmonster 'map_name$, .@label$; + getunitdata 'BOSS[5],.@arr; + monster 'map_name$, .@arr[UMOB_X]-3, .@arr[UMOB_Y]+3, "#venomfog",2536,1, .@label$; + monster 'map_name$, .@arr[UMOB_X]+3, .@arr[UMOB_Y]+3, "#venomfog",2536,1, .@label$; + monster 'map_name$, .@arr[UMOB_X]-3, .@arr[UMOB_Y]-3, "#venomfog",2536,1, .@label$; + monster 'map_name$, .@arr[UMOB_X]+3, .@arr[UMOB_Y]-3, "#venomfog",2536,1, .@label$; + end; +OnStart2: + initnpctimer; + .@label$ = instance_npcname("#fwormboss54") + "::OnMyMobDead"; + if (mobcount( 'map_name$,.@label$ ) > 45) + killmonster 'map_name$, .@label$; + getunitdata 'BOSS[5],.@arr; + monster 'map_name$, .@arr[UMOB_X]-5, .@arr[UMOB_Y]+5, "#venomfog",2537,1, .@label$; + monster 'map_name$, .@arr[UMOB_X], .@arr[UMOB_Y]+5, "#venomfog",2537,1, .@label$; + monster 'map_name$, .@arr[UMOB_X]+5, .@arr[UMOB_Y]+5, "#venomfog",2537,1, .@label$; + monster 'map_name$, .@arr[UMOB_X]-5, .@arr[UMOB_Y], "#venomfog",2537,1, .@label$; + monster 'map_name$, .@arr[UMOB_X], .@arr[UMOB_Y], "#venomfog",2537,1, .@label$; + monster 'map_name$, .@arr[UMOB_X]+5, .@arr[UMOB_Y], "#venomfog",2537,1, .@label$; + monster 'map_name$, .@arr[UMOB_X]-5, .@arr[UMOB_Y]-5, "#venomfog",2537,1, .@label$; + monster 'map_name$, .@arr[UMOB_X], .@arr[UMOB_Y]-5, "#venomfog",2537,1, .@label$; + monster 'map_name$, .@arr[UMOB_X]+5, .@arr[UMOB_Y]-5, "#venomfog",2537,1, .@label$; + end; +OnTimer30000: + donpcevent instance_npcname("#fwormboss54") + "::OnEnd"; + end; +OnMyMobDead: + end; +OnInstanceInit: + hideonnpc instance_npcname("#fwormboss54"); + end; +} + +1@face,212,156,0 script #chaoson3 HIDDEN_WARP_NPC,7,7,{ + end; +OnTouch_: + disablenpc instance_npcname("#chaoson3"); + donpcevent instance_npcname("Chaos#6") + "::OnStart"; + end; +OnInstanceInit: + disablenpc instance_npcname("#chaoson3"); + end; +} + +1@face,209,159,6 script Chaos#6 4_M_CHAOS,{ + cutin "h_chaos01",2; + mes "[Chaos]"; + mes "Hmm.. You are pretty good, I am impressed."; + close2; + cutin "",255; + end; + +OnStart: + .@iris$ = instance_npcname("Iris#6"); + donpcevent instance_npcname("Chaos#east") + "::OnEnd"; + donpcevent instance_npcname("Chaos#west") + "::OnEnd"; + donpcevent instance_npcname("Chaos#south") + "::OnEnd"; + donpcevent instance_npcname("Chaos#north") + "::OnEnd"; + hideoffnpc instance_npcname("Chaos#6"); + hideoffnpc .@iris$; + sleep 2000; + npctalk "Chaos: Phew... That was quite a long fight."; + sleep 3000; + npctalk "Iris: But that is not the one we were looking for.", .@iris$; + sleep 4000; + npctalk "Chaos: We can't help it. Our equipment is damaged so we should retreat for now."; + sleep 3000; + npctalk "Iris: Yes, I feel bad that we could not see the Faceworm King. But luckily we weren't hurt.", .@iris$; + sleep 3000; + npctalk "Chaos: So... Hey, you over there! You're not too shabby."; + sleep 3000; + npctalk "Chaos: Today's hunting is all yours, I won't touch it."; + sleep 3000; + npctalk "Chaos: Ahah~ I hoped that there would be some treasure that the merchant prince dropped..."; + sleep 3000; + npctalk "Iris: Chaos, I am getting tired. Let's go back to the village.", .@iris$; + sleep 3000; + npctalk "Chaos: Sorry, shall we go?"; + sleep 3000; + hideonnpc instance_npcname("Chaos#6"); + hideonnpc .@iris$; + hideoffnpc instance_npcname("Dimensional Device#6"); + end; +OnInstanceInit: + hideonnpc instance_npcname("Chaos#6"); + end; +} + +1@face,220,159,4 script Iris#6 4_F_IRIS,{ + cutin "h_iris02",2; + mes "[Iris]"; + mes "That was dangerous. Hehehe..."; + close2; + cutin "",255; + end; + +OnInstanceInit: + hideonnpc instance_npcname("Iris#6"); + end; +} + +1@face,215,159,4 script Dimensional Device#6 PORTAL,{ + mes "[Dimensional Device]"; + mes "Your time is finished here. You may look arround or go leave. What do you want to do?"; + next; + if (select("Stop:Return to Dimensional Gap") == 2) + warp "dali",85,62; + end; + +OnInstanceInit: + hideonnpc instance_npcname("Dimensional Device#6"); + end; +} + +// Instance Traps :: in_face_l +//============================================================ +1@face,61,132,5 script Suspicious Mound#1 4_SOIL,5,5,{ + end; +OnTouch_: + setarray .@num[1], + 3,2,1,3,2,1,3,2,1,3,2,1,3,2,1, + 3,2,1,3,2,1,3,2,1,3,2,1,3,2,1, + 3,2,1,3,2,1,3,2,1,3,2,1,3,2,1, + 3,2,1,3,2,1,3,2,1; + .@npc_name$ = instance_npcname(strnpcinfo(0)); + specialeffect EF_VENOMDUST; + disablenpc .@npc_name$; + killmonster 'map_name$, .@npc_name$ + "::OnMyMobDead"; + getmapxy 'map_name$, .@x, .@y, UNITTYPE_NPC; + .@mon_num = .@num[atoi(strnpcinfo(2))]; + areamonster 'map_name$,.@x-1,.@y-1,.@x+1,.@y+1,"Faceworm Larva",2541,.@mon_num,.@npc_name$ + "::OnMyMobDead"; + initnpctimer; + end; +OnTimer45000: + enablenpc instance_npcname(strnpcinfo(0)); + stopnpctimer; + end; +OnMyMobDead: + end; +} + +1@face,62,195,5 duplicate(Suspicious Mound#1) Suspicious Mound#2 4_SOIL,5,5 +1@face,66,94,5 duplicate(Suspicious Mound#1) Suspicious Mound#3 4_SOIL,5,5 +1@face,68,265,5 duplicate(Suspicious Mound#1) Suspicious Mound#4 4_SOIL,5,5 +1@face,68,108,5 duplicate(Suspicious Mound#1) Suspicious Mound#5 4_SOIL,5,5 +1@face,72,202,5 duplicate(Suspicious Mound#1) Suspicious Mound#6 4_SOIL,5,5 +1@face,75,73,5 duplicate(Suspicious Mound#1) Suspicious Mound#7 4_SOIL,5,5 +1@face,76,241,5 duplicate(Suspicious Mound#1) Suspicious Mound#8 4_SOIL,5,5 +1@face,79,274,5 duplicate(Suspicious Mound#1) Suspicious Mound#9 4_SOIL,5,5 +1@face,79,119,5 duplicate(Suspicious Mound#1) Suspicious Mound#10 4_SOIL,5,5 +1@face,97,59,5 duplicate(Suspicious Mound#1) Suspicious Mound#11 4_SOIL,5,5 +1@face,99,211,5 duplicate(Suspicious Mound#1) Suspicious Mound#12 4_SOIL,5,5 +1@face,100,122,5 duplicate(Suspicious Mound#1) Suspicious Mound#13 4_SOIL,5,5 +1@face,105,190,5 duplicate(Suspicious Mound#1) Suspicious Mound#14 4_SOIL,5,5 +1@face,108,264,5 duplicate(Suspicious Mound#1) Suspicious Mound#15 4_SOIL,5,5 +1@face,108,74,5 duplicate(Suspicious Mound#1) Suspicious Mound#16 4_SOIL,5,5 +1@face,111,178,5 duplicate(Suspicious Mound#1) Suspicious Mound#17 4_SOIL,5,5 +1@face,112,137,5 duplicate(Suspicious Mound#1) Suspicious Mound#18 4_SOIL,5,5 +1@face,112,159,5 duplicate(Suspicious Mound#1) Suspicious Mound#19 4_SOIL,5,5 +1@face,112,236,5 duplicate(Suspicious Mound#1) Suspicious Mound#20 4_SOIL,5,5 +1@face,118,109,5 duplicate(Suspicious Mound#1) Suspicious Mound#21 4_SOIL,5,5 +1@face,119,201,5 duplicate(Suspicious Mound#1) Suspicious Mound#22 4_SOIL,5,5 +1@face,123,257,5 duplicate(Suspicious Mound#1) Suspicious Mound#23 4_SOIL,5,5 +1@face,124,216,5 duplicate(Suspicious Mound#1) Suspicious Mound#24 4_SOIL,5,5 +1@face,125,228,5 duplicate(Suspicious Mound#1) Suspicious Mound#25 4_SOIL,5,5 +1@face,126,290,5 duplicate(Suspicious Mound#1) Suspicious Mound#26 4_SOIL,5,5 +1@face,128,174,5 duplicate(Suspicious Mound#1) Suspicious Mound#27 4_SOIL,5,5 +1@face,133,244,5 duplicate(Suspicious Mound#1) Suspicious Mound#28 4_SOIL,5,5 +1@face,139,218,5 duplicate(Suspicious Mound#1) Suspicious Mound#29 4_SOIL,5,5 +1@face,140,255,5 duplicate(Suspicious Mound#1) Suspicious Mound#30 4_SOIL,5,5 +1@face,148,238,5 duplicate(Suspicious Mound#1) Suspicious Mound#31 4_SOIL,5,5 +1@face,157,293,5 duplicate(Suspicious Mound#1) Suspicious Mound#32 4_SOIL,5,5 +1@face,158,138,5 duplicate(Suspicious Mound#1) Suspicious Mound#33 4_SOIL,5,5 +1@face,158,163,5 duplicate(Suspicious Mound#1) Suspicious Mound#34 4_SOIL,5,5 +1@face,167,277,5 duplicate(Suspicious Mound#1) Suspicious Mound#35 4_SOIL,5,5 +1@face,168,194,5 duplicate(Suspicious Mound#1) Suspicious Mound#36 4_SOIL,5,5 +1@face,170,251,5 duplicate(Suspicious Mound#1) Suspicious Mound#37 4_SOIL,5,5 +1@face,171,62,5 duplicate(Suspicious Mound#1) Suspicious Mound#38 4_SOIL,5,5 +1@face,171,149,5 duplicate(Suspicious Mound#1) Suspicious Mound#39 4_SOIL,5,5 +1@face,172,173,5 duplicate(Suspicious Mound#1) Suspicious Mound#40 4_SOIL,5,5 +1@face,175,296,5 duplicate(Suspicious Mound#1) Suspicious Mound#41 4_SOIL,5,5 +1@face,178,234,5 duplicate(Suspicious Mound#1) Suspicious Mound#42 4_SOIL,5,5 +1@face,183,185,5 duplicate(Suspicious Mound#1) Suspicious Mound#43 4_SOIL,5,5 +1@face,191,289,5 duplicate(Suspicious Mound#1) Suspicious Mound#44 4_SOIL,5,5 +1@face,194,192,5 duplicate(Suspicious Mound#1) Suspicious Mound#45 4_SOIL,5,5 +1@face,196,207,5 duplicate(Suspicious Mound#1) Suspicious Mound#46 4_SOIL,5,5 +1@face,198,257,5 duplicate(Suspicious Mound#1) Suspicious Mound#47 4_SOIL,5,5 +1@face,199,273,5 duplicate(Suspicious Mound#1) Suspicious Mound#48 4_SOIL,5,5 +1@face,211,244,5 duplicate(Suspicious Mound#1) Suspicious Mound#49 4_SOIL,5,5 +1@face,229,200,5 duplicate(Suspicious Mound#1) Suspicious Mound#50 4_SOIL,5,5 +1@face,232,271,5 duplicate(Suspicious Mound#1) Suspicious Mound#51 4_SOIL,5,5 +1@face,250,223,5 duplicate(Suspicious Mound#1) Suspicious Mound#52 4_SOIL,5,5 +1@face,254,324,5 duplicate(Suspicious Mound#1) Suspicious Mound#53 4_SOIL,5,5 +1@face,255,263,5 duplicate(Suspicious Mound#1) Suspicious Mound#54 4_SOIL,5,5 + +// Instance Venom Bugs :: in_face_v +//============================================================ +1@face,163,130,0 script #toxicarea1 HIDDEN_WARP_NPC,10,10,{ + end; +OnTouch_: + setarray .@num[1],25,30,50,30,50,30,40,50,50; + .@npc_name$ = instance_npcname(strnpcinfo(0)); + specialeffect EF_VENOMDUST; + disablenpc .@npc_name$; + killmonster 'map_name$, .@npc_name$ + "::OnMyMobDead"; + .@val = atoi(charat(strnpcinfo(2),9)); + switch(.@val) { + case 1: setarray .@xy[0],167,142,15; break; + case 2: setarray .@xy[0],163,161,15; break; + case 3: setarray .@xy[0],167,185,20; break; + case 4: setarray .@xy[0],197,203,15; break; + case 5: setarray .@xy[0],227,203,20; break; + case 6: setarray .@xy[0],244,232,15; break; + case 7: setarray .@xy[0],243,259,15; break; + case 8: setarray .@xy[0],292,277,50; break; + case 9: setarray .@xy[0],248,322,50; break; + } + .@mon_num = .@num[.@val]; + areamonster 'map_name$,.@xy[0]-.@xy[2],.@xy[1]-.@xy[2],.@xy[0]+.@xy[2],.@xy[1]+.@xy[2],"Venom Bug",2531,.@mon_num, .@npc_name$ + "::OnMyMobDead"; + initnpctimer; + end; +OnTimer15000: + enablenpc instance_npcname(strnpcinfo(0)); + stopnpctimer; + end; +OnMyMobDead: + end; +} + +1@face,165,147,0 duplicate(#toxicarea1) #toxicarea2 HIDDEN_WARP_NPC,10,10 +1@face,163,166,0 duplicate(#toxicarea1) #toxicarea3 HIDDEN_WARP_NPC,10,10 +1@face,183,197,0 duplicate(#toxicarea1) #toxicarea4 HIDDEN_WARP_NPC,10,10 +1@face,202,204,0 duplicate(#toxicarea1) #toxicarea5 HIDDEN_WARP_NPC,10,10 +1@face,237,220,0 duplicate(#toxicarea1) #toxicarea6 HIDDEN_WARP_NPC,10,10 +1@face,245,241,0 duplicate(#toxicarea1) #toxicarea7 HIDDEN_WARP_NPC,10,10 +1@face,292,277,0 duplicate(#toxicarea1) #toxicarea8 HIDDEN_WARP_NPC,10,10 +1@face,248,322,0 duplicate(#toxicarea1) #toxicarea9 HIDDEN_WARP_NPC,10,10 + +// Instance Timer :: in_facetimer +//============================================================ +1@face,3,1,5 script #globaltimer22 CLEAR_NPC,{ + end; +OnT_s: + initnpctimer; + end; +OnT_s2: + .@face_timer = $120719_num_face; + if (!.@face_timer) + .@face_timer = 3600; + .@face_member = getmapusers('map_name$) - 1; + .@winner_name$ = '120903_str_face$; + .@current_timer = getnpctimer(0) / 1000; + if (.@current_timer < 1) + end; + .@time_m = .@current_timer / 60; + .@time_s = .@current_timer % 60; + if (.@current_timer < 60) + .@time_txt$ = callfunc( "F_InsertPlural", .@time_s, "Second" ); + else + .@time_txt$ = callfunc( "F_InsertPlural", .@time_m, "Minute" ) + " " + callfunc( "F_InsertPlural", .@time_s, "Second" ); + if (.@current_timer >= .@face_timer) + mapannounce 'map_name$, "A time of " + .@time_txt$ + " has been recorded on the board. But it did not beat the best record.",bc_map,"0xffff33"; + else { + if (!.@face_member) + announce .@winner_name$ + " beat the best record for completing the Faceworm's Nest (" + .@time_txt$ + ").",bc_all,"0xffff33",FW_NORMAL,15; + else + announce .@winner_name$ + " with " + .@face_member + " party " + ( .@face_member > 1 ? "members" : "members" ) + " beat the best record for completing the Faceworm's Nest (" + .@time_txt$ + ").",bc_all,"0xffff33",FW_NORMAL,15; + $120719_str_face$ = .@winner_name$; + $120719_num_face = .@current_timer; + $120903_num_face = .@face_member; + } + end; +OnT_s3: + for ( .@i = 1; .@i <= 27; ++.@i ) { + if (rand(1,100) > 50) + hideoffnpc instance_npcname( "Merchant Prince's Box#" + .@i ); + } + end; +OnTimer3600000: + stopnpctimer; + end; +OnInstanceInit: + hideonnpc instance_npcname("#globaltimer22"); + end; +} + +// Instance Prizes :: in_face_c +//============================================================ +1@face,155,82,3 script #fwormprize1 4_TREASURE_BOX,{ + .@current_timer = getnpctimer(0) / 1000; + if (.@current_timer < 1) + end; + .@time_m = .@current_timer / 60; + .@time_s = .@current_timer % 60; + if (.@current_timer < 60) + .@time_txt$ = callfunc( "F_InsertPlural", .@time_s, "Second" ); + else + .@time_txt$ = callfunc( "F_InsertPlural", .@time_m, "Minute" ) + " " + callfunc( "F_InsertPlural", .@time_s, "Second" ); + mapannounce 'map_name$, "The actual time for the battle at this stage remaining is " + .@time_txt$ + ".",bc_map,"0xffff33"; + + getmapxy .@map$, .@x, .@y, UNITTYPE_NPC; + stopnpctimer; + specialeffect EF_COIN; + hideonnpc instance_npcname(strnpcinfo(0)); + switch( atoi(charat(strnpcinfo(2),10)) ) { + case 1: + setarray .@val[0],200,200,95; + break; + case 2: + setarray .@val[0],800,400,90; + break; + case 3: + setarray .@val[0],1100,600,85; + break; + case 4: + setarray .@val[0],1250,800,80; + break; + } + if (.@current_timer < 120) + .@current_timer = 120; + .@dr_t = .@current_timer - 120; + + // refine + .@dr_t1 = ( .@dr_t / 15 ) + 1; + if (.@dr_t1 > 3) + .@dr_t1 = 3; + .@r_st1 = 7 - .@dr_t1; + .@refine = rand( (.@r_st1 - 4), .@r_st1 );// Min = 0, Max = 6 + + // card slot 4 + .@dr_t1 = .@dr_t * 10; + if (.@dr_t1 > (.@val[0]+1)) + .@dr_t1 = .@val[0] + 1; + .@r_st = (.@val[0]+2) - .@dr_t1;// Min = 1, Max = .@val[0] + 2 + .@ren_e_m = rand(.@r_st,1316); + if (.@ren_e_m < 201) .@en_name_4 = 0; + else if (.@ren_e_m < 301) .@en_name_4 = 4740; // Vitality1 + else if (.@ren_e_m < 401) .@en_name_4 = 4700; // Strength1 + else if (.@ren_e_m < 501) .@en_name_4 = 4730; // Agility1 + else if (.@ren_e_m < 601) .@en_name_4 = 4720; // Dexterity1 + else if (.@ren_e_m < 701) .@en_name_4 = 4710; // Inteligence1 + else if (.@ren_e_m < 801) .@en_name_4 = 4750; // Luck1 + else if (.@ren_e_m < 851) .@en_name_4 = 4741; // Vitality2 + else if (.@ren_e_m < 901) .@en_name_4 = 4701; // Strength2 + else if (.@ren_e_m < 951) .@en_name_4 = 4731; // Agility2 + else if (.@ren_e_m < 1001) .@en_name_4 = 4721; // Dexterity2 + else if (.@ren_e_m < 1051) .@en_name_4 = 4711; // Inteligence2 + else if (.@ren_e_m < 1101) .@en_name_4 = 4751; // Luck2 + else if (.@ren_e_m < 1126) .@en_name_4 = 4742; // Vitality3 + else if (.@ren_e_m < 1151) .@en_name_4 = 4702; // Strength3 + else if (.@ren_e_m < 1176) .@en_name_4 = 4732; // Agility3 + else if (.@ren_e_m < 1201) .@en_name_4 = 4722; // Dexterity3 + else if (.@ren_e_m < 1226) .@en_name_4 = 4712; // Inteligence3 + else if (.@ren_e_m < 1251) .@en_name_4 = 4752; // Luck3 + else if (.@ren_e_m < 1261) .@en_name_4 = 4743; // Vitality4 + else if (.@ren_e_m < 1271) .@en_name_4 = 4703; // Strength4 + else if (.@ren_e_m < 1281) .@en_name_4 = 4733; // Agility4 + else if (.@ren_e_m < 1291) .@en_name_4 = 4723; // Dexterity4 + else if (.@ren_e_m < 1301) .@en_name_4 = 4713; // Inteligence4 + else if (.@ren_e_m < 1311) .@en_name_4 = 4753; // Luck4 + else if (.@ren_e_m < 1312) .@en_name_4 = 4744; // Vitality5 + else if (.@ren_e_m < 1313) .@en_name_4 = 4704; // Strength5 + else if (.@ren_e_m < 1314) .@en_name_4 = 4734; // Agility5 + else if (.@ren_e_m < 1315) .@en_name_4 = 4724; // Dexterity5 + else if (.@ren_e_m < 1316) .@en_name_4 = 4714; // Inteligence5 + else if (.@ren_e_m < 1317) .@en_name_4 = 4754; // Luck5 + + // card slot 3 + if (.@en_name_4 > 0) { + .@dr_t1 = @dr_t * 5; + if (.@dr_t1 > 601) + .@dr_t1 = 601; + .@r_st = 602 - .@dr_t1; + .@ren_e_m = rand(.@r_st,1716);// Min = 1, Max = 602 + if (.@ren_e_m < 601) .@en_name_3 = 0; + else if (.@ren_e_m < 701) .@en_name_3 = 4740; // Vitality1 + else if (.@ren_e_m < 801) .@en_name_3 = 4700; // Strength1 + else if (.@ren_e_m < 901) .@en_name_3 = 4730; // Agility1 + else if (.@ren_e_m < 1001) .@en_name_3 = 4720; // Dexterity1 + else if (.@ren_e_m < 1101) .@en_name_3 = 4710; // Inteligence1 + else if (.@ren_e_m < 1201) .@en_name_3 = 4750; // Luck1 + else if (.@ren_e_m < 1251) .@en_name_3 = 4741; // Vitality2 + else if (.@ren_e_m < 1301) .@en_name_3 = 4701; // Strength2 + else if (.@ren_e_m < 1351) .@en_name_3 = 4731; // Agility2 + else if (.@ren_e_m < 1401) .@en_name_3 = 4721; // Dexterity2 + else if (.@ren_e_m < 1451) .@en_name_3 = 4711; // Inteligence2 + else if (.@ren_e_m < 1501) .@en_name_3 = 4751; // Luck2 + else if (.@ren_e_m < 1526) .@en_name_3 = 4742; // Vitality3 + else if (.@ren_e_m < 1551) .@en_name_3 = 4702; // Strength3 + else if (.@ren_e_m < 1576) .@en_name_3 = 4732; // Agility3 + else if (.@ren_e_m < 1601) .@en_name_3 = 4722; // Dexterity3 + else if (.@ren_e_m < 1626) .@en_name_3 = 4712; // Inteligence3 + else if (.@ren_e_m < 1651) .@en_name_3 = 4752; // Luck3 + else if (.@ren_e_m < 1661) .@en_name_3 = 4743; // Vitality4 + else if (.@ren_e_m < 1671) .@en_name_3 = 4703; // Strength4 + else if (.@ren_e_m < 1681) .@en_name_3 = 4733; // Agility4 + else if (.@ren_e_m < 1691) .@en_name_3 = 4723; // Dexterity4 + else if (.@ren_e_m < 1701) .@en_name_3 = 4713; // Inteligence4 + else if (.@ren_e_m < 1711) .@en_name_3 = 4753; // Luck4 + else if (.@ren_e_m < 1712) .@en_name_3 = 4744; // Vitality5 + else if (.@ren_e_m < 1713) .@en_name_3 = 4704; // Strength5 + else if (.@ren_e_m < 1714) .@en_name_3 = 4734; // Agility5 + else if (.@ren_e_m < 1715) .@en_name_3 = 4724; // Dexterity5 + else if (.@ren_e_m < 1716) .@en_name_3 = 4714; // Inteligence5 + else if (.@ren_e_m < 1717) .@en_name_3 = 4754; // Luck5 + + // card slot 2 + if (.@en_name_3 > 0) { + .@dr_t1 = .@dr_t * 5; + if (.@dr_t1 > .@val[1]) + .@dr_t1 = .@val[1]; + .@r_st = (.@val[1]+1) - .@dr_t1;// Min = 1, Max = .@val[1] + 1 + .@ren_e_m = rand(.@r_st,1100); + if (.@ren_e_m < 1001) + .@en_name_2 = 0; + else if (.@ren_e_m < 1100) { + switch(.@en_name_3) { + case 4700: case 4701: case 4702: + case 4703: case 4704: + .@en_name_2 = 4853; // S_Str + break; + case 4740: case 4741: case 4742: + case 4743: case 4744: + .@en_name_2 = 4855; // S_Vital + break; + case 4730: case 4731: case 4732: + case 4733: case 4734: + .@en_name_2 = 4854; // S_Agi + break; + case 4720: case 4721: case 4722: + case 4723: case 4724: + .@en_name_2 = 4857; // S_Dex + break; + case 4750: case 4751: case 4752: + case 4753: case 4754: + .@en_name_2 = 4858; // S_Luck + break; + case 4710: case 4711: case 4712: + case 4713: case 4714: + .@en_name_2 = 4856; // S_Int + break; + } + } + } + } + if (rand(1,100) > .@val[2]) + .@d_item = 20718; // FaceWorm_Skin_ + else + .@d_item = 20717; // FaceWorm_Skin + makeitem2 .@d_item,1,'map_name$,.@x,.@y,0,.@refine,0,0,.@en_name_2,.@en_name_3,.@en_name_4; + end; +OnStart: + initnpctimer; + end; +OnTimer3600000: + stopnpctimer; + end; +OnInstanceInit: + hideonnpc instance_npcname(strnpcinfo(0)); + end; +} +1@face,162,271,3 duplicate(#fwormprize1) #fwormprize2 4_TREASURE_BOX +1@face,278,308,3 duplicate(#fwormprize1) #fwormprize3 4_TREASURE_BOX +1@face,214,108,3 duplicate(#fwormprize1) #fwormprize4 4_TREASURE_BOX + +1@face,213,157,3 script #fwormprize5 4_TREASURE_BOX,{ + '120903_str_face$ = strcharinfo(0); + donpcevent instance_npcname("#globaltimer22") + "::OnT_s2"; + donpcevent instance_npcname("#globaltimer22") + "::OnT_s3"; + specialeffect EF_COIN; + hideonnpc instance_npcname("#fwormprize5"); + + .@current_timer = getnpctimer(0) / 1000; + if (.@current_timer < 1) + .@current_timer = 1200; + if (.@current_timer < 270) + .@current_timer = 270; + .@dr_t = .@current_timer - 270; + + // refine rand + .@dr_t1 = ( .@dr_t / 15 ) + 1; + if (.@dr_t1 > 4) + .@dr_t1 = 4; + .@refine_rand[1] = 12 - .@dr_t1; + .@refine_rand[0] = .@refine_rand[1] - 7; + + // card slot 4 rand + .@dr_t1 = .@dr_t * 10; + if (.@dr_t1 > 1851) + .@dr_t1 = 1851; + .@slot_4_rand = 1852 - .@dr_t1; + + // card slot 3 rand + .@dr_t1 = .@dr_t * 10; + if (.@dr_t1 > 1401) + .@dr_t1 = 1401; + .@slot_3_rand = 1402 - .@dr_t1; + + // card slot 2 rand + .@dr_t1 = .@dr_t * 5; + if (.@dr_t1 > 999) + .@dr_t1 = 999; + .@slot_2_rand = 1000 - .@dr_t1; + + for ( .@i = 1; .@i <= 2; ++.@i ) { + // refine + .@refine = rand( .@refine_rand[0],.@refine_rand[1] );// Min = 1, Max = 11 + + // card slot 4 + .@ren_e_m = rand( .@slot_4_rand,1934 ); + if (.@ren_e_m < 201) .@en_name_4 = 0; + else if (.@ren_e_m < 301) .@en_name_4 = 4740; // Vitality1 + else if (.@ren_e_m < 401) .@en_name_4 = 4700; // Strength1 + else if (.@ren_e_m < 501) .@en_name_4 = 4730; // Agility1 + else if (.@ren_e_m < 601) .@en_name_4 = 4720; // Dexterity1 + else if (.@ren_e_m < 701) .@en_name_4 = 4710; // Inteligence1 + else if (.@ren_e_m < 801) .@en_name_4 = 4750; // Luck1 + else if (.@ren_e_m < 901) .@en_name_4 = 4741; // Vitality2 + else if (.@ren_e_m < 1001) .@en_name_4 = 4701; // Strength2 + else if (.@ren_e_m < 1101) .@en_name_4 = 4731; // Agility2 + else if (.@ren_e_m < 1201) .@en_name_4 = 4721; // Dexterity2 + else if (.@ren_e_m < 1301) .@en_name_4 = 4711; // Inteligence2 + else if (.@ren_e_m < 1401) .@en_name_4 = 4751; // Luck2 + else if (.@ren_e_m < 1451) .@en_name_4 = 4742; // Vitality3 + else if (.@ren_e_m < 1501) .@en_name_4 = 4702; // Strength3 + else if (.@ren_e_m < 1551) .@en_name_4 = 4732; // Agility3 + else if (.@ren_e_m < 1601) .@en_name_4 = 4722; // Dexterity3 + else if (.@ren_e_m < 1651) .@en_name_4 = 4712; // Inteligence3 + else if (.@ren_e_m < 1701) .@en_name_4 = 4752; // Luck3 + else if (.@ren_e_m < 1726) .@en_name_4 = 4743; // Vitality4 + else if (.@ren_e_m < 1751) .@en_name_4 = 4703; // Strength4 + else if (.@ren_e_m < 1776) .@en_name_4 = 4733; // Agility4 + else if (.@ren_e_m < 1801) .@en_name_4 = 4723; // Dexterity4 + else if (.@ren_e_m < 1826) .@en_name_4 = 4713; // Inteligence4 + else if (.@ren_e_m < 1851) .@en_name_4 = 4753; // Luck4 + else if (.@ren_e_m < 1861) .@en_name_4 = 4744; // Vitality5 + else if (.@ren_e_m < 1871) .@en_name_4 = 4704; // Strength5 + else if (.@ren_e_m < 1881) .@en_name_4 = 4734; // Agility5 + else if (.@ren_e_m < 1891) .@en_name_4 = 4724; // Dexterity5 + else if (.@ren_e_m < 1901) .@en_name_4 = 4714; // Inteligence5 + else if (.@ren_e_m < 1911) .@en_name_4 = 4754; // Luck5 + else if (.@ren_e_m < 1914) .@en_name_4 = 4745; // Vitality6 + else if (.@ren_e_m < 1917) .@en_name_4 = 4705; // Strength6 + else if (.@ren_e_m < 1920) .@en_name_4 = 4735; // Agility6 + else if (.@ren_e_m < 1923) .@en_name_4 = 4725; // Dexterity6 + else if (.@ren_e_m < 1926) .@en_name_4 = 4715; // Inteligence6 + else if (.@ren_e_m < 1929) .@en_name_4 = 4755; // Luck6 + else if (.@ren_e_m < 1930) .@en_name_4 = 4746; // Vitality7 + else if (.@ren_e_m < 1931) .@en_name_4 = 4706; // Strength7 + else if (.@ren_e_m < 1932) .@en_name_4 = 4736; // Agility7 + else if (.@ren_e_m < 1933) .@en_name_4 = 4726; // Dexterity7 + else if (.@ren_e_m < 1934) .@en_name_4 = 4716; // Inteligence7 + else if (.@ren_e_m < 1935) .@en_name_4 = 4756; // Luck7 + + // card slot 3 + if (.@en_name_4 > 0) { + .@ren_e_m = rand( .@slot_3_rand,1934 ); + if (.@ren_e_m < 201) .@en_name_3 = 0; + else if (.@ren_e_m < 301) .@en_name_3 = 4740; // Vitality1 + else if (.@ren_e_m < 401) .@en_name_3 = 4700; // Strength1 + else if (.@ren_e_m < 501) .@en_name_3 = 4730; // Agility1 + else if (.@ren_e_m < 601) .@en_name_3 = 4720; // Dexterity1 + else if (.@ren_e_m < 701) .@en_name_3 = 4710; // Inteligence1 + else if (.@ren_e_m < 801) .@en_name_3 = 4750; // Luck1 + else if (.@ren_e_m < 901) .@en_name_3 = 4741; // Vitality2 + else if (.@ren_e_m < 1001) .@en_name_3 = 4701; // Strength2 + else if (.@ren_e_m < 1101) .@en_name_3 = 4731; // Agility2 + else if (.@ren_e_m < 1201) .@en_name_3 = 4721; // Dexterity2 + else if (.@ren_e_m < 1301) .@en_name_3 = 4711; // Inteligence2 + else if (.@ren_e_m < 1401) .@en_name_3 = 4751; // Luck2 + else if (.@ren_e_m < 1451) .@en_name_3 = 4742; // Vitality3 + else if (.@ren_e_m < 1501) .@en_name_3 = 4702; // Strength3 + else if (.@ren_e_m < 1551) .@en_name_3 = 4732; // Agility3 + else if (.@ren_e_m < 1601) .@en_name_3 = 4722; // Dexterity3 + else if (.@ren_e_m < 1651) .@en_name_3 = 4712; // Inteligence3 + else if (.@ren_e_m < 1701) .@en_name_3 = 4752; // Luck3 + else if (.@ren_e_m < 1726) .@en_name_3 = 4743; // Vitality4 + else if (.@ren_e_m < 1751) .@en_name_3 = 4703; // Strength4 + else if (.@ren_e_m < 1776) .@en_name_3 = 4733; // Agility4 + else if (.@ren_e_m < 1801) .@en_name_3 = 4723; // Dexterity4 + else if (.@ren_e_m < 1826) .@en_name_3 = 4713; // Inteligence4 + else if (.@ren_e_m < 1851) .@en_name_3 = 4753; // Luck4 + else if (.@ren_e_m < 1861) .@en_name_3 = 4744; // Vitality5 + else if (.@ren_e_m < 1871) .@en_name_3 = 4704; // Strength5 + else if (.@ren_e_m < 1881) .@en_name_3 = 4734; // Agility5 + else if (.@ren_e_m < 1891) .@en_name_3 = 4724; // Dexterity5 + else if (.@ren_e_m < 1901) .@en_name_3 = 4714; // Inteligence5 + else if (.@ren_e_m < 1911) .@en_name_3 = 4754; // Luck5 + else if (.@ren_e_m < 1914) .@en_name_3 = 4745; // Vitality6 + else if (.@ren_e_m < 1917) .@en_name_3 = 4705; // Strength6 + else if (.@ren_e_m < 1920) .@en_name_3 = 4735; // Agility6 + else if (.@ren_e_m < 1923) .@en_name_3 = 4725; // Dexterity6 + else if (.@ren_e_m < 1926) .@en_name_3 = 4715; // Inteligence6 + else if (.@ren_e_m < 1929) .@en_name_3 = 4755; // Luck6 + else if (.@ren_e_m < 1930) .@en_name_3 = 4746; // Vitality7 + else if (.@ren_e_m < 1931) .@en_name_3 = 4706; // Strength7 + else if (.@ren_e_m < 1932) .@en_name_3 = 4736; // Agility7 + else if (.@ren_e_m < 1933) .@en_name_3 = 4726; // Dexterity7 + else if (.@ren_e_m < 1934) .@en_name_3 = 4716; // Inteligence7 + else if (.@ren_e_m < 1935) .@en_name_3 = 4756; // Luck7 + + // card slot 2 + if (.@en_name_3 > 0) { + .@ren_e_m = rand( .@slot_2_rand,1100 ); + if (.@ren_e_m < 1001) + .@en_name_2 = 0; + else if (.@ren_e_m < 1100) { + switch(.@en_name_3) { + case 4700: case 4701: case 4702: case 4703: + case 4704: case 4705: case 4706: + .@en_name_2 = 4853; // S_Str + break; + case 4740: case 4741: case 4742: case 4743: + case 4744: case 4745: case 4746: + .@en_name_2 = 4855; // S_Vital + break; + case 4730: case 4731: case 4732: case 4733: + case 4734: case 4735: case 4736: + .@en_name_2 = 4854; // S_Agi + break; + case 4720: case 4721: case 4722: case 4723: + case 4724: case 4725: case 4726: + .@en_name_2 = 4857; // S_Dex + break; + case 4750: case 4751: case 4752: case 4753: + case 4754: case 4755: case 4756: + .@en_name_2 = 4858; // S_Luck + break; + case 4710: case 4711: case 4712: case 4713: + case 4714: case 4715: case 4716: + .@en_name_2 = 4856; // S_Int + break; + } + } + } + } + if (rand(1,100) > 40) + .@d_item = 20718; // FaceWorm_Skin_ + else + .@d_item = 20717; // FaceWorm_Skin + makeitem2 .@d_item,1,'map_name$,rand(209,217),rand(152,161),0,.@refine,0,0,.@en_name_2,.@en_name_3,.@en_name_4; + } + end; +OnStart: + initnpctimer; + end; +OnTimer3600000: + stopnpctimer; + end; +OnInstanceInit: + hideonnpc instance_npcname("#fwormprize5"); + end; +} + +// Instance Treasures :: in_face_t +//============================================================ +1@face,183,314,3 script Merchant Prince's Box#1 4_TREASURE_BOX,{ + specialeffect EF_COIN; + hideonnpc instance_npcname(strnpcinfo(0)); + initnpctimer; + end; +OnTimer1000: + .@val = atoi(strnpcinfo(2)); + switch(.@val) { + case 1: + setarray .@xy[0],184,321; + setarray .@item[0],718,22507; // Dark_Red_Jewel, ShabbyOldScroll + break; + case 2: + setarray .@xy[0],162,337; + setarray .@item[0],719,6650; // Violet_Jewel, Shabby_Ring + break; + case 3: + setarray .@xy[0],29,362; + setarray .@item[0],720,6651; // Skyblue_Jewel, Rusty_Bracelet + break; + case 4: + setarray .@xy[0],24,288; + setarray .@item[0],721,6652; // Azure_Jewel, Old_Photo_Album + break; + case 5: + setarray .@xy[0],58,274; + setarray .@item[0],722,6653; // Scarlet_Jewel, Shabby_Pill + break; + case 6: + setarray .@xy[0],73,214; + setarray .@item[0],725,22507; // Red_Jewel, ShabbyOldScroll + break; + case 7: + setarray .@xy[0],49,176; + setarray .@item[0],726,6650; // Blue_Jewel, Shabby_Ring + break; + case 8: + setarray .@xy[0],259,66; + setarray .@item[0],727,6651; // White_Jewel, Rusty_Bracelet + break; + case 9: + setarray .@xy[0],68,38; + setarray .@item[0],718,6652; // Dark_Red_Jewel, Old_Photo_Album + break; + case 10: + setarray .@xy[0],178,54; + setarray .@item[0],719,6653; // Violet_Jewel, Shabby_Pill + break; + case 11: + setarray .@xy[0],120,137; + setarray .@item[0],720,22507; // Skyblue_Jewel, ShabbyOldScroll + break; + case 12: + setarray .@xy[0],110,224; + setarray .@item[0],721,6650; // Azure_Jewel, Shabby_Ring + break; + case 13: + setarray .@xy[0],118,294; + setarray .@item[0],722,6651; // Scarlet_Jewel, Rusty_Bracelet + break; + case 14: + setarray .@xy[0],126,292; + setarray .@item[0],725,6652; // Red_Jewel, Old_Photo_Album + break; + case 15: + setarray .@xy[0],150,162; + setarray .@item[0],726,6653; // Blue_Jewel, Shabby_Pill + break; + case 16: + setarray .@xy[0],169,206; + setarray .@item[0],727,22507; // White_Jewel, ShabbyOldScroll + break; + case 17: + setarray .@xy[0],262,220; + setarray .@item[0],718,6650; // Dark_Red_Jewel, Shabby_Ring + break; + case 18: + setarray .@xy[0],218,350; + setarray .@item[0],719,6651; // Violet_Jewel, Rusty_Bracelet + break; + case 19: + setarray .@xy[0],304,263; + setarray .@item[0],720,6652; // Skyblue_Jewel, Old_Photo_Album + break; + case 20: + setarray .@xy[0],302,151; + setarray .@item[0],721,6653; // Azure_Jewel, Shabby_Pill + break; + case 21: + setarray .@xy[0],305,63; + setarray .@item[0],722,22507; // Scarlet_Jewel, ShabbyOldScroll + break; + case 22: + setarray .@xy[0],234,66; + setarray .@item[0],725,6650; // Red_Jewel, Shabby_Ring + break; + case 23: + setarray .@xy[0],218,89; + setarray .@item[0],726,6651; // Blue_Jewel, Rusty_Bracelet + break; + case 24: + setarray .@xy[0],233,99; + setarray .@item[0],727,6652; // White_Jewel, Old_Photo_Album + case 25: + setarray .@xy[0],280,158; + setarray .@item[0],718,6653; // Dark_Red_Jewel, Shabby_Pill + break; + case 26: + setarray .@xy[0],182,353; + setarray .@item[0],719,22507; // Violet_Jewel, ShabbyOldScroll + break; + case 27: + setarray .@xy[0],43,220; + setarray .@item[0],720,6650; // Skyblue_Jewel, Shabby_Ring + break; + } + setarray .@max[1], + 5,4,6,3,7,4,3,5,5,4,6,3,7,4,3, + 5,5,4,6,3,7,4,3,5,5,4,6; + .@idnum = rand(1,.@max[.@val]); + for ( .@i = 0; .@i < .@idnum; ++.@i ) { + .@idx = rand(.@xy[0],.@xy[0]+4); + .@idy = rand(.@xy[1],.@xy[1]+4); + makeitem .@item[0],1,'map_name$,.@idx,.@idy; + } + makeitem .@item[1],1,'map_name$,.@xy[0]+2,.@xy[1]+3; + if (rand(1,1000) > 400) + makeitem 6648,1,'map_name$,.@xy[0]+1,.@xy[1]+2; // Shabby_Crown + if (rand(1,1000) > 700) + makeitem 7228,1,'map_name$,.@xy[0]+2,.@xy[1]+2; // Gold_Bullion + if (rand(1,1000) > 900) + makeitem 7229,1,'map_name$,.@xy[0]+3,.@xy[1]+2; // Silver_Bullion + stopnpctimer; + end; +OnInstanceInit: + hideonnpc instance_npcname(strnpcinfo(0)); + end; +} +1@face,164,343,3 duplicate(Merchant Prince's Box#1) Merchant Prince's Box#2 4_TREASURE_BOX +1@face,31,364,3 duplicate(Merchant Prince's Box#1) Merchant Prince's Box#3 4_TREASURE_BOX +1@face,26,290,3 duplicate(Merchant Prince's Box#1) Merchant Prince's Box#4 4_TREASURE_BOX +1@face,56,269,3 duplicate(Merchant Prince's Box#1) Merchant Prince's Box#5 4_TREASURE_BOX +1@face,80,213,3 duplicate(Merchant Prince's Box#1) Merchant Prince's Box#6 4_TREASURE_BOX +1@face,51,174,3 duplicate(Merchant Prince's Box#1) Merchant Prince's Box#7 4_TREASURE_BOX +1@face,261,62,3 duplicate(Merchant Prince's Box#1) Merchant Prince's Box#8 4_TREASURE_BOX +1@face,70,36,3 duplicate(Merchant Prince's Box#1) Merchant Prince's Box#9 4_TREASURE_BOX +1@face,182,51,3 duplicate(Merchant Prince's Box#1) Merchant Prince's Box#10 4_TREASURE_BOX +1@face,128,139,3 duplicate(Merchant Prince's Box#1) Merchant Prince's Box#11 4_TREASURE_BOX +1@face,108,232,3 duplicate(Merchant Prince's Box#1) Merchant Prince's Box#12 4_TREASURE_BOX +1@face,117,303,3 duplicate(Merchant Prince's Box#1) Merchant Prince's Box#13 4_TREASURE_BOX +1@face,134,294,3 duplicate(Merchant Prince's Box#1) Merchant Prince's Box#14 4_TREASURE_BOX +1@face,152,159,3 duplicate(Merchant Prince's Box#1) Merchant Prince's Box#15 4_TREASURE_BOX +1@face,177,208,3 duplicate(Merchant Prince's Box#1) Merchant Prince's Box#16 4_TREASURE_BOX +1@face,260,220,3 duplicate(Merchant Prince's Box#1) Merchant Prince's Box#17 4_TREASURE_BOX +1@face,216,357,3 duplicate(Merchant Prince's Box#1) Merchant Prince's Box#18 4_TREASURE_BOX +1@face,310,263,3 duplicate(Merchant Prince's Box#1) Merchant Prince's Box#19 4_TREASURE_BOX +1@face,307,158,3 duplicate(Merchant Prince's Box#1) Merchant Prince's Box#20 4_TREASURE_BOX +1@face,307,56,3 duplicate(Merchant Prince's Box#1) Merchant Prince's Box#21 4_TREASURE_BOX +1@face,240,64,3 duplicate(Merchant Prince's Box#1) Merchant Prince's Box#22 4_TREASURE_BOX +1@face,214,90,3 duplicate(Merchant Prince's Box#1) Merchant Prince's Box#23 4_TREASURE_BOX +1@face,237,108,3 duplicate(Merchant Prince's Box#1) Merchant Prince's Box#24 4_TREASURE_BOX +1@face,284,165,3 duplicate(Merchant Prince's Box#1) Merchant Prince's Box#25 4_TREASURE_BOX +1@face,184,363,3 duplicate(Merchant Prince's Box#1) Merchant Prince's Box#26 4_TREASURE_BOX +1@face,48,220,3 duplicate(Merchant Prince's Box#1) Merchant Prince's Box#27 4_TREASURE_BOX + +// Instance GM Function :: in_face_ad +//========================================== +1@face,1,1,3 script #forestspirit1 CLEAR_NPC,{ + if (callfunc("F_GM_NPC",1854,0) == 1) { + mes "[Time Manager]"; + mes "What time would you like to return?"; + next; + switch( select("Cancel:1st Stage Start:2nd Stage Start:3rd Stage Start:4th Stage Start:Boss Start:Treasures")) { + case 1: + break; + case 2: + hideonnpc instance_npcname("Chaos#0"); + hideonnpc instance_npcname("Iris#0"); + donpcevent instance_npcname("#fwormcontrol1") + "::OnStart"; + mapannounce 'map_name$, "Faceworm time attack has started. Faster kill times gives a higher percentage of rewards.",bc_map,"0xffffff"; + donpcevent instance_npcname("#globaltimer22") + "::OnT_s"; + donpcevent instance_npcname("#fwormprize1") + "::OnStart"; + warp 'map_name$,110,348; + break; + case 3: + enablenpc instance_npcname("#fwormenter1"); + enablenpc instance_npcname("#fwormexit1"); + hideoffnpc instance_npcname("Chaos#1"); + hideoffnpc instance_npcname("Iris#1"); + mapannounce 'map_name$, "A hole appears after killing the dark faceworm.",bc_map,"0xffffff"; + warp 'map_name$,127,95; + break; + case 4: + enablenpc instance_npcname("#fwormenter2"); + enablenpc instance_npcname("#fwormexit2"); + hideoffnpc instance_npcname("Chaos#2"); + hideoffnpc instance_npcname("Iris#2"); + mapannounce 'map_name$, "You hear something loud in the south. It must be the nest of the one we just got rid of.",bc_map,"0xffffff"; + warp 'map_name$,156,117; + break; + case 5: + enablenpc instance_npcname("#fwormenter3"); + enablenpc instance_npcname("#fwormexit3"); + enablenpc instance_npcname("#chaoson"); + mapannounce 'map_name$, "You hear the pile of stones collapsing. This might be a gateway to go to other spaces.",bc_map,"0xffffff"; + warp 'map_name$,261,170; + break; + case 6: + enablenpc instance_npcname("#fwormenter4"); + enablenpc instance_npcname("#fwormexit4"); + hideoffnpc instance_npcname("Chaos#4"); + hideoffnpc instance_npcname("Iris#4"); + enablenpc instance_npcname("#chaoson2"); + mapannounce 'map_name$, "You hear the pile of stones collapsing. I think another gateway is found.",bc_map,"0xffffff"; + warp 'map_name$,210,145; + break; + case 7: + hideoffnpc instance_npcname("#fwormprize5"); + donpcevent instance_npcname("#fwormprize5") + "::OnStart"; + warp 'map_name$,210,145; + break; + } + } + close; +} + +1@face,3,1,3 script #forestspiritboss1 CLEAR_NPC,{ + mes "" + getmapusers('map_name$) + " people."; + if (callfunc("F_GM_NPC",1854,0) == 1) { + mes "[Boss Manager]"; + mes "What time would you like to return?"; + next; + switch( select("Cancel:1st Boss:2nd Boss:3rd Boss:4th Boss:Final Boss")) { + case 1: + break; + case 2: + hideonnpc instance_npcname("Chaos#0"); + hideonnpc instance_npcname("Iris#0"); + donpcevent instance_npcname("#fwormboss1") + "::OnStart"; + donpcevent instance_npcname("#globaltimer22") + "::OnT_s"; + donpcevent instance_npcname("#fwormprize1") + "::OnStart"; + warp 'map_name$,140,70; + break; + case 3: + donpcevent instance_npcname("#fwormboss2") + "::OnStart"; + donpcevent instance_npcname("#fwormprize2") + "::OnStart"; + warp 'map_name$,160,270; + break; + case 4: + donpcevent instance_npcname("#fwormboss3") + "::OnStart"; + donpcevent instance_npcname("#fwormprize3") + "::OnStart"; + warp 'map_name$,270,300; + break; + case 5: + donpcevent instance_npcname("#fwormboss4") + "::OnStart"; + donpcevent instance_npcname("#fwormprize4") + "::OnStart"; + warp 'map_name$,210,105; + break; + case 6: + donpcevent instance_npcname("#fwormboss5") + "::OnStart"; + donpcevent instance_npcname("#fwormprize5") + "::OnStart"; + warp 'map_name$,214,148; + break; + } + } + close; + +OnInstanceInit: + 'map_name$ = instance_mapname("1@face"); + monster 'map_name$,0,0,"Greatest General",1277,50; + monster 'map_name$,0,0,"Beetle King",1494,25; + monster 'map_name$,0,0,"Savage",1166,25; + end; +} diff --git a/npc/re/mapflag/restricted.txt b/npc/re/mapflag/restricted.txt index 85f7f6b03b..da2b456023 100644 --- a/npc/re/mapflag/restricted.txt +++ b/npc/re/mapflag/restricted.txt @@ -20,6 +20,7 @@ 1@ma_b mapflag restricted 6 1@ecl mapflag restricted 6 1@xm_d mapflag restricted 6 +1@face mapflag restricted 6 // Towns ========================= brasilis mapflag restricted 7 diff --git a/npc/re/other/Global_Functions.txt b/npc/re/other/Global_Functions.txt index afdb020897..1816050866 100644 --- a/npc/re/other/Global_Functions.txt +++ b/npc/re/other/Global_Functions.txt @@ -25,3 +25,18 @@ function script WoeTETimeStart { } return false; } + +function script F_22507 {// ShabbyOldScroll + .@r = rand(1,10); + if (.@r == 1) warp "pay_fild01",141,211; + else if (.@r == 2) warp "payon_in03",99,190; + else if (.@r == 3) warp "pay_dun04",120,116; + else if (.@r == 4) warp "pay_gld",202,186; + else if (.@r == 5) warp "gld_dun01",61,155; + else if (.@r == 6) warp "pay_fild04",348,333; + else if (.@r == 7) warp "payon_in02",17,62; + else if (.@r == 8) warp "payon_in01",144,15; + else if (.@r == 9) warp "pay_fild07",200,186; + else if (.@r == 10) warp "pay_fild10",147,267; + end; +} diff --git a/npc/re/scripts_athena.conf b/npc/re/scripts_athena.conf index f99d1e5e4a..7364310137 100644 --- a/npc/re/scripts_athena.conf +++ b/npc/re/scripts_athena.conf @@ -54,6 +54,7 @@ npc: npc/re/guides/guides_woe_te.txt npc: npc/re/instances/BakonawaLake.txt npc: npc/re/instances/BangungotHospital.txt npc: npc/re/instances/BuwayaCave.txt +npc: npc/re/instances/FacewormsNest.txt npc: npc/re/instances/HazyForest.txt npc: npc/re/instances/HorrorToyFactory.txt npc: npc/re/instances/MalangdoCulvert.txt diff --git a/src/map/battle.c b/src/map/battle.c index 122e2cbd9d..47a0aad60e 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -6117,6 +6117,9 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list case SU_CN_METEOR: skillratio += 100 + 100 * skill_lv; break; + case NPC_VENOMFOG: + skillratio += 600 + 100 * skill_lv; + break; } MATK_RATE(skillratio); diff --git a/src/map/skill.c b/src/map/skill.c index 4f9a6332b1..b977c9c484 100755 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -11625,6 +11625,7 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui case NJ_HUUMA: #endif case NPC_EVILLAND: + case NPC_VENOMFOG: case RA_ELECTRICSHOCKER: case RA_CLUSTERBOMB: case RA_MAGENTATRAP: @@ -13496,6 +13497,7 @@ int skill_unit_onplace_timer(struct skill_unit *unit, struct block_list *bl, uns case UNT_PSYCHIC_WAVE: case UNT_MAGMA_ERUPTION: case UNT_MAKIBISHI: + case UNT_VENOMFOG: skill_attack(skill_get_type(sg->skill_id),ss,&unit->bl,bl,sg->skill_id,sg->skill_lv,tick,0); break;