diff --git a/npc/re/merchants/nightmare_biolab.txt b/npc/re/merchants/nightmare_biolab.txt index 116abbd7bd..c8e4db0080 100644 --- a/npc/re/merchants/nightmare_biolab.txt +++ b/npc/re/merchants/nightmare_biolab.txt @@ -129,7 +129,30 @@ function script F_Cursed_Fragment { // 23016 lighthalzen,321,218,4 script Ohno Tohiro#1 4_M_RASWORD,{ disable_items; mes "[Ohno Tohiro]"; - mes "I was asked to collect some kind of research charts..."; + .@r = rand(1,10); + if (.@r < 6) + mes "I was asked to collect some kind of research charts..."; + else if (.@r < 7) { + mes "- I hear somebody talking - - remote communication -"; + next; + mes "[Ohno Tohiro]"; + mes "Yes... everything is proceeding smoothly."; + mes "The status of the report collection is okay."; + mes "Yes, sir."; + next; + mes "[Ohno Tohiro]"; + mes "I'll immediately report the information related to the laboratory as a top priority."; + mes "Yes, sir... I'll do so."; + next; + mes "[Ohno Tohiro]"; + mes "Oh somebody has come! I'll call you again later."; + } + else { + mes "[Ohno Tohiro]"; + mes "My shoulders are heavy."; + mes "Our long-cherished wish.."; + mes "One by one, slowly.."; + } next; mes "[Ohno Tohiro]"; mes "Uh...? I didn't realize someone is here already..."; @@ -185,8 +208,10 @@ lighthalzen,321,218,4 script Ohno Tohiro#1 4_M_RASWORD,{ mes "Alright. Now that I received the Zeny, I'll open the crevice."; mes "I hope you can come back alive!..."; next; - Zeny = Zeny - 100000; - warp "lhz_dun_n",100,202; + if (Zeny >= 100000) { + Zeny -= 100000; + warp "lhz_dun_n",100,202; + } end; case 4: mes "[Ohno Tohiro]"; @@ -220,7 +245,7 @@ lighthalzen,321,218,4 script Ohno Tohiro#1 4_M_RASWORD,{ mes "I'll send you to the crevice as promised."; mes "I want you alive. See you again!"; next; - delitem 7347,10;// Research Chart + delitem 7347,10;// Lab_Staff_Record warp "lhz_dun_n",100,202; end; } @@ -348,10 +373,13 @@ lighthalzen,320,204,3 script A kid with black finger 4_F_04,{ lighthalzen,327,216,3 script Crevice#1 4_CRACK,{ end; OnInit: - while(true) { - sleep 6000; - specialeffect EF_AGIUP3; - } + initnpctimer; + end; +OnTimer5000: + specialeffect EF_AGIUP3; + end; +OnTimer6000: + initnpctimer; end; } @@ -363,12 +391,14 @@ lhz_dun_n,96,203,3 script Dungeon gateway#1 4_CRACK,{ } warp "lighthalzen",310,228; end; - OnInit: - while(true) { - sleep 6000; - specialeffect EF_AGIUP3; - } + initnpctimer; + end; +OnTimer5000: + specialeffect EF_AGIUP3; + end; +OnTimer6000: + initnpctimer; end; } @@ -1040,6 +1070,12 @@ lhz_dun_n,143,269,4 script Victimized Soul's Mind#1 4_M_DEATH2,{ mes "If you... bring... one... I'll restore... it... to energy... pieces..."; while(true) { next; + if (checkweight(2677,5) == 0) { + mes "[Victimized Soul's Mind]"; + mes "Your backpack.."; + mes "is filled..."; + close; + } if (select( "Hand over the weapon.", "End the conversation." ) == 2) { mes "[Victimized Soul's Mind]"; mes "...You... will... find me... again..."; @@ -1125,7 +1161,7 @@ S_Exchange: .@menu$ = "Go back to previous menu.:"; for ( .@i = 0; .@i < .@size; .@i++ ) { if (countitem(getarg(.@i)) < 1) - .@menu$ += "^777777Not enough " + getitemname(getarg(.@i)) + ".^000000:"; + .@menu$ += "^999999Not enough " + getitemname(getarg(.@i)) + ".^000000:"; else .@menu$ += "You have " + getitemname(getarg(.@i)) + ".:"; } @@ -1143,7 +1179,8 @@ S_Exchange: next; return; } - progressbar "000000",5; + donpcevent strnpcinfo(0) + "::OnBar"; + sleep2 5000; specialeffect EF_BLACKBODY; specialeffect EF_GUMGANG4; specialeffect EF_DARKCASTING2; @@ -1152,7 +1189,14 @@ S_Exchange: specialeffect2 EF_POISONSMOKE; specialeffect2 EF_NPC_BURNT; delitem getarg(.@s),1; - getitem 6820, rand(1,3);// Energy Fragment + .@r = rand(100); + if (.@r < 70) + .@amount = 1; + else if (.@r < 90) + .@amount = 2; + else + .@amount = 3; + getitem 6820, .@amount;// Energy Fragment mes "[Victimized Soul's Mind]"; mes "I have made... Energy... Fragment... by restoring ^006400" + getitemname(getarg(.@s)) + "^000000..."; next; @@ -1163,6 +1207,10 @@ S_Exchange: mes "Do you have... any other business... with me?..."; next; return; + +OnBar: + progressbar_npc "000000",5; + end; } lhz_dun_n,136,269,6 script Sorrowful Soul's Mind#1 4_M_DEATH,{ @@ -1226,6 +1274,12 @@ lhz_dun_n,136,269,6 script Sorrowful Soul's Mind#1 4_M_DEATH,{ getitemname(18983), // Old_Protect_Of_Crown getitemname(20749); // Cloak of the Fallen Soldier[1] while(true) { + if (checkweight(2677,5) == 0) { + mes "[Sorrowful Soul's Mind]"; + mes "Your backpack.."; + mes "is filled..."; + close; + } if (select( "Hand over the soul.", "End the conversation." ) == 2) { mes "[Sorrowful Soul's Mind]"; mes "...I wish... you... can come back... to me again..."; diff --git a/npc/re/mobs/dungeons/lhz_dun_n.txt b/npc/re/mobs/dungeons/lhz_dun_n.txt index 21875e90fb..590c411da1 100644 --- a/npc/re/mobs/dungeons/lhz_dun_n.txt +++ b/npc/re/mobs/dungeons/lhz_dun_n.txt @@ -28,9 +28,9 @@ lhz_dun_n,0,0,0 script lhz_dun_n -1,{ end; OnRegularDead: .@mob_id = killedrid; - if (getd( ".lhz_dun_n" + .@mob_id ) < 100 && .lhz_dun_n_boss == 0) { - setd ".lhz_dun_n" + .@mob_id, getd( ".lhz_dun_n" + .@mob_id ) + 1; - if (getd( ".lhz_dun_n" + .@mob_id ) == 100) { + if (.lhz_dun_n[.@mob_id] < 110 && .lhz_dun_n_boss == 0) { + .lhz_dun_n[.@mob_id]++; + if (.lhz_dun_n[.@mob_id] == 110) { .@mini_boss = .@mob_id + 6 + (.@mob_id > 3213); // mini boss version ID: regular ID +6 for non-transcendent, +7 for others monster "lhz_dun_n",0,0,"--en--",.@mini_boss,1, "lhz_dun_n::OnMiniDead"; } @@ -38,15 +38,15 @@ OnRegularDead: end; OnMiniDead: .@mob_id = killedrid; - if (getd( ".lhz_dun_n" + .@mob_id ) < 10 && .lhz_dun_n_boss == 0) { - setd ".lhz_dun_n" + .@mob_id, getd( ".lhz_dun_n" + .@mob_id ) + 1; + if (.lhz_dun_n[.@mob_id] < 4 && .lhz_dun_n_boss == 0) { + .lhz_dun_n[.@mob_id]++; .@regular = .@mob_id - 6 - (.@mob_id > 3219); - if (getd( ".lhz_dun_n" + .@mob_id ) < 10) - setd ".lhz_dun_n" + .@regular, 0; // note: mini boss version can re-spawn when the count of mini boss dead is reached? (currently they don't) + if (.lhz_dun_n[.@mob_id] < 4) + .lhz_dun_n[.@regular] = 0; // note: mini boss version can re-spawn when the count of mini boss dead is reached? (currently they don't) else { setarray .@mini_boss_list[0], 3214,3215,3216,3217,3218,3219,3233,3234,3235,3236,3237,3238,3239; for ( .@i = 0; .@i < 13; ++.@i ) { - if (getd( ".lhz_dun_n" + .@mini_boss_list[.@i] ) < 10) + if (.lhz_dun_n[.@mini_boss_list[.@i]] < 4) end; } // MvP monster seems to only spawn at 12 o'clock @@ -55,8 +55,8 @@ OnMiniDead: .lhz_dun_n_boss = 1; for ( .@i = 0; .@i < 13; ++.@i ) { .@regular = .@mini_boss_list[.@i] - 6 - (.@mini_boss_list[.@i] > 3219); - setd ".lhz_dun_n" + .@regular, 0; - setd ".lhz_dun_n" + .@mini_boss_list[.@i], 0; + .lhz_dun_n[.@regular] = 0; + .lhz_dun_n[.@mini_boss_list[.@i]] = 0; } } }