summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--npc/006-7/ctrl.txt48
-rw-r--r--npc/functions/util.txt7
2 files changed, 51 insertions, 4 deletions
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 {