From b44b9cd3b2a87aedbf8bf8623f5bf857e06481b3 Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Sat, 25 Dec 2021 14:11:16 -0300 Subject: I'm almost sure this will blow away when I test, but... Add the traps, they happen every 60 seconds in average. Now only the weak AoE is missing. This boss is a spellcaster, don't expect a break. Timing is not exact, the skills will delay all spellcasting. --- npc/006-7/ctrl.txt | 48 ++++++++++++++++++++++++++++++++++++++++++++---- npc/functions/util.txt | 7 +++++++ 2 files changed, 51 insertions(+), 4 deletions(-) (limited to 'npc') diff --git a/npc/006-7/ctrl.txt b/npc/006-7/ctrl.txt index 0ddaca185..8271b1634 100644 --- a/npc/006-7/ctrl.txt +++ b/npc/006-7/ctrl.txt @@ -163,7 +163,7 @@ OnTimer5000: .@dmg = .@mtk * .@PW / 100; .@dsb = .@mtk * .@SPW / 100; sleep(1000); - areaharm(.@mvp, .@RG, .@dsb, HARM_MAGI, Ele_Holy); + areaharm(.@mvp, .@RG, .@dsb, HARM_MAGI, Ele_Holy, "filter_always", BL_PC|BL_MER|BL_HOM); harm(.@mvp, .@dmg, HARM_MAGI, Ele_Holy); break; // (3/6) Random Target (~60s) @@ -193,6 +193,46 @@ OnTimer5000: case 15: .@x1=rand2(31, 58); .@x2=rand2(31, 58); .@x3=rand2(31, 58); .@y1=rand2(23, 49); .@y2=rand2(23, 49); .@y3=rand2(23, 49); + .@t1=monster("006-7", .@x1, .@y1, "", Dummy, 1); + .@t2=monster("006-7", .@x2, .@y2, "", Dummy, 1); + .@t3=monster("006-7", .@x3, .@y3, "", Dummy, 1); + specialeffect(67, AREA, .@t1); + specialeffect(67, AREA, .@t2); + specialeffect(67, AREA, .@t3); + immortal(.@t1); immortal(.@t2); immortal(.@t3); + if (.@hp < 5) { + .@x4=rand2(31, 58); .@x5=rand2(31, 58); .@x6=rand2(31, 58); + .@y4=rand2(23, 49); .@y5=rand2(23, 49); .@y6=rand2(23, 49); + .@t4=monster("006-7", .@x1, .@y1, "", Dummy, 1); + .@t5=monster("006-7", .@x2, .@y2, "", Dummy, 1); + .@t6=monster("006-7", .@x3, .@y3, "", Dummy, 1); + specialeffect(67, AREA, .@t4); + specialeffect(67, AREA, .@t5); + specialeffect(67, AREA, .@t6); + immortal(.@t4); immortal(.@t5); immortal(.@t6); + } + sleep(2000); + specialeffect(11, AREA, .@t1); + specialeffect(11, AREA, .@t2); + specialeffect(11, AREA, .@t3); + if (.@hp < 5) { + specialeffect(11, AREA, .@t4); + specialeffect(11, AREA, .@t5); + specialeffect(11, AREA, .@t6); + } + areaharm(.@t1, 2, 450, HARM_MISC, Ele_Neutral, "filter_always", BL_PC|BL_MER|BL_HOM); + areaharm(.@t2, 2, 450, HARM_MISC, Ele_Neutral, "filter_always", BL_PC|BL_MER|BL_HOM); + areaharm(.@t3, 2, 450, HARM_MISC, Ele_Neutral, "filter_always", BL_PC|BL_MER|BL_HOM); + if (.@hp < 5) { + areaharm(.@t4, 2, 450, HARM_MISC, Ele_Neutral, "filter_always", BL_PC|BL_MER|BL_HOM); + areaharm(.@t5, 2, 450, HARM_MISC, Ele_Neutral, "filter_always", BL_PC|BL_MER|BL_HOM); + areaharm(.@t6, 2, 450, HARM_MISC, Ele_Neutral, "filter_always", BL_PC|BL_MER|BL_HOM); + } + sleep(1000); + unitkill(.@t1); unitkill(.@t2); unitkill(.@t3); + if (.@hp < 5) { + unitkill(.@t4); unitkill(.@t5); unitkill(.@t6); + } break; // (5/6) Weak AOE (~60s) case 5: @@ -225,14 +265,14 @@ OnTimer5000: } /* Three blocks */ specialeffect(66, AREA, .BOSS); - areaharm(.BOSS, 6, .@dmg, HARM_MAGI, Ele_Neutral); + areaharm(.BOSS, 6, .@dmg, HARM_MAGI, Ele_Neutral, "filter_always", BL_PC|BL_MER|BL_HOM); sleep(500); specialeffect(66, AREA, .BOSS); - areaharm(.BOSS, 12, .@dmg, HARM_MAGI, Ele_Water); + areaharm(.BOSS, 12, .@dmg, HARM_MAGI, Ele_Water, "filter_always", BL_PC|BL_MER|BL_HOM); sleep(500); specialeffect(66, AREA, .BOSS); specialeffect(312, AREA, .BOSS); - areaharm(.BOSS, 18, .@dmg, HARM_MAGI, Ele_Holy); + areaharm(.BOSS, 18, .@dmg, HARM_MAGI, Ele_Holy, "filter_always", BL_PC|BL_MER|BL_HOM); areasc(18, .@dmg*rand2(50, 100), SC_COLD, BL_PC|BL_HOM|BL_MER, 1, "filter_always", .BOSS, 10001 - (.@hp * 1000)); } diff --git a/npc/functions/util.txt b/npc/functions/util.txt index 8fbde066d..5f2cfac2d 100644 --- a/npc/functions/util.txt +++ b/npc/functions/util.txt @@ -1212,6 +1212,13 @@ function script set_aggro { return; } +function script immortal { + .@u=getarg(0); + setunitdata(.@u, UDT_HP, 2147483647); + setunitdata(.@u, UDT_MAXHP, 2147483647); + return; +} + // Special function which makes a date as a number // numdate( - ) function script numdate { -- cgit v1.2.3-60-g2f50