From a2ecf9e627f23fe76eb3a95bc50c7ddd3af80196 Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Sat, 25 Dec 2021 13:58:44 -0300 Subject: It needed some tweaks. Note nothing was tested yet --- db/re/mob_db.conf | 4 +-- npc/006-7/ctrl.txt | 96 ++++++++++++++++++++++++++++++++++++++++-------------- 2 files changed, 74 insertions(+), 26 deletions(-) diff --git a/db/re/mob_db.conf b/db/re/mob_db.conf index bd918b0e2..824b72494 100644 --- a/db/re/mob_db.conf +++ b/db/re/mob_db.conf @@ -11900,7 +11900,7 @@ mob_db: ( } ViewRange: 12 ChaseRange: 16 - Race: 2 + Race: 8 Element: (1, 2) Mode: { CanMove: true @@ -11933,7 +11933,7 @@ mob_db: ( Attack: [500, 600] Def: 349 Mdef: 57 - Race: 2 + Race: 8 Element: (8, 1) Stats: { Str: 99 diff --git a/npc/006-7/ctrl.txt b/npc/006-7/ctrl.txt index 72f3ec0f0..0ddaca185 100644 --- a/npc/006-7/ctrl.txt +++ b/npc/006-7/ctrl.txt @@ -133,39 +133,19 @@ OnTimer5000: case 6: case 12: unittalk(.BOSS, "Come forth, ##Bsnow army##b, for the Icicle shall live forever!"); - specialeffect(64, AREA, .BOSS); + specialeffect(65, AREA, .BOSS); // Actually 64, but won't do well here sleep(1000); monster("006-7", 44, 22, strmobinfo(1, Snowman), Snowman, max(1, (11 - .@hp) / 10)); break; - // (2/6) Random Target (~30s) - case 2: - case 5: - case 8: - case 11: - case 14: - case 17: - .@time=rand2(18000, 36000) + 10000 - (.@hp * 1000); - // Switch between curse and disable - if (any(true,false)) { - unittalk(.BOSS, "I hereby ##Bcurse##b you, %s!", strcharinfo(0, "cursed player", .@rnd)); - sc_start(SC_CURSE, .@time, 1, 10000, SCFLAG_FIXEDRATE, .@rnd); - } else { - unittalk(.BOSS, "I shall ##Bdisable##b you, %s!", strcharinfo(0, "cursed player", .@rnd)); - sc_start(SC_BLIND, .@time / 2, 1, 10000, SCFLAG_FIXEDRATE, .@rnd); - sc_start(SC_SILENCE, .@time / 2, 1, 10000, SCFLAG_FIXEDRATE, .@rnd); - } - // Second pattern: Bleeding ON - if (.@hp <= 7) { - sc_start(SC_BLOODING, 10000, 1, 9000-(.@hp*1000), SCFLAG_FIXEDRATE, .@rnd); - } - break; - // (3/6) Tanker (~30s) + // (2/6) Tanker (~30s) case 1: case 4: case 7: case 10: case 13: case 16: + specialeffect(702, AREA, .BOSS); + sleep(1000); if (.@hp <= 3) { // Third Attack Pattern: Judgment unittalk(.BOSS, "%s cannot stop me! ##BJudgment##b!", strcharinfo(0, "cursed player", .@mvp)); @@ -186,6 +166,74 @@ OnTimer5000: areaharm(.@mvp, .@RG, .@dsb, HARM_MAGI, Ele_Holy); harm(.@mvp, .@dmg, HARM_MAGI, Ele_Holy); break; + // (3/6) Random Target (~60s) + case 2: + case 8: + case 14: + specialeffect(50, AREA, .BOSS); + sleep(1000); + .@time=rand2(18000, 36000) + 10000 - (.@hp * 1000); + // Switch between curse and disable + if (any(true,false)) { + unittalk(.BOSS, "I hereby ##Bcurse##b you, %s!", strcharinfo(0, "cursed player", .@rnd)); + sc_start(SC_CURSE, .@time, 1, 10000, SCFLAG_FIXEDRATE, .@rnd); + } else { + unittalk(.BOSS, "I shall ##Bdisable##b you, %s!", strcharinfo(0, "cursed player", .@rnd)); + sc_start(SC_BLIND, .@time / 2, 1, 10000, SCFLAG_FIXEDRATE, .@rnd); + sc_start(SC_SILENCE, .@time / 2, 1, 10000, SCFLAG_FIXEDRATE, .@rnd); + } + // Second pattern: Bleeding ON + if (.@hp <= 7) { + sc_start(SC_BLOODING, 10000, 1, 9000-(.@hp*1000), SCFLAG_FIXEDRATE, .@rnd); + } + break; + // (4/6) Traps (~60s) + case 3: + case 9: + 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); + break; + // (5/6) Weak AOE (~60s) + case 5: + case 11: + case 17: + break; + } + // Strong AOE: Every 3 minutes (case = 0) + // Stalls all other skills for a while + if (.beats % 18 == 0) { + specialeffect(66, AREA, .BOSS); + unittalk(.BOSS, "I am the Icicle, the immortal."); + sleep(1500); + specialeffect(700, AREA, .BOSS); + unittalk(.BOSS, "You're no match for me, so..."); + sleep(1500); + specialeffect(700, AREA, .BOSS); + if (.@hp <= 3) { + unittalk(.BOSS, "Perish! ##BSnowstorm##b!"); + .@dmg=rand2(750, 1000); + areasc(3, 5000, SC_FREEZE, BL_PC|BL_HOM|BL_MER, 1, "filter_always", .BOSS, 2000); + areasc(6, 10000, SC_BLIND, BL_PC|BL_HOM|BL_MER, 1, "filter_always", .BOSS, 2000); + } else if (.@hp <= 7) { + unittalk(.BOSS, "Perish! ##BBlizzard##b!"); + .@dmg=rand2(500, 750); + areasc(3, 5000, SC_FREEZE, BL_PC|BL_HOM|BL_MER, 1, "filter_always", .BOSS, 1500); + } else { + unittalk(.BOSS, "Perish! ##BShattering Winds##b!"); + .@dmg=rand2(350, 500); + } + /* Three blocks */ + specialeffect(66, AREA, .BOSS); + areaharm(.BOSS, 6, .@dmg, HARM_MAGI, Ele_Neutral); + sleep(500); + specialeffect(66, AREA, .BOSS); + areaharm(.BOSS, 12, .@dmg, HARM_MAGI, Ele_Water); + sleep(500); + specialeffect(66, AREA, .BOSS); + specialeffect(312, AREA, .BOSS); + areaharm(.BOSS, 18, .@dmg, HARM_MAGI, Ele_Holy); + areasc(18, .@dmg*rand2(50, 100), SC_COLD, BL_PC|BL_HOM|BL_MER, 1, "filter_always", .BOSS, 10001 - (.@hp * 1000)); } initnpctimer; -- cgit v1.2.3-60-g2f50