From c15028d7caf4025f9d247044703c94e750e764e9 Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Sat, 25 Dec 2021 13:27:13 -0300 Subject: The primary magic skill from the Icicle is now ready --- npc/006-7/ctrl.txt | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 53 insertions(+), 4 deletions(-) diff --git a/npc/006-7/ctrl.txt b/npc/006-7/ctrl.txt index a8c58dd89..72f3ec0f0 100644 --- a/npc/006-7/ctrl.txt +++ b/npc/006-7/ctrl.txt @@ -27,7 +27,7 @@ OnRw: mesn; mesq l("With Magic and Blades, The Icicle shall break. Do you undertake the challenge?"); mesc l("Advised: 6+ players"), 1; - mesc l("Advised: 1+ mage, 1+ tanker, 2+ healer"), 1; + mesc l("Advised: 1+ mage, 1+ tanker, 2+ healers"), 1; mesc l("Time Limit: 90 minutes"), 1; mesc l("Enter/Leave after start: %s", b(l("NO"))), 1; next; @@ -95,6 +95,7 @@ OnTimer5000: if (.ticks < gettimetick(2) || !mobcount("006-7", "all") || !getmapusers("006-7")) { killmonsterall("006-7"); enablenpc .name$; + npctalk "The battle is over!"; .ticks = min(.ticks, gettimetick(2) + 1800); // Min. Cooldown: 30 min .beats = 0; $@ICICLE_CHALLENGE = false; @@ -127,16 +128,64 @@ OnTimer5000: /* Decide the skill to use based on ~5s beats over 3 minutes */ switch (.beats % 18) { - // Summon Reinforcements (every 60s) + // (1/6) Summon Reinforcements (every 60s) case 0: case 6: case 12: unittalk(.BOSS, "Come forth, ##Bsnow army##b, for the Icicle shall live forever!"); specialeffect(64, AREA, .BOSS); - sleep(500); + 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) + case 1: + case 4: + case 7: + case 10: + case 13: + case 16: + if (.@hp <= 3) { + // Third Attack Pattern: Judgment + unittalk(.BOSS, "%s cannot stop me! ##BJudgment##b!", strcharinfo(0, "cursed player", .@mvp)); + .@PW=250; .@SPW=60; .@RG=3; + } else if (.@hp <= 7) { + // Second Attack Pattern: Holy Light + unittalk(.BOSS, "%s, I'll show you no mercy! ##BHoly Light##b!", strcharinfo(0, "cursed player", .@mvp)); + .@PW=125; .@SPW=25; .@RG=1; + } else { + // First Attack Pattern: Napalm Beat + unittalk(.BOSS, "This battle is over, %s! ##BNapalm Beat##b!", strcharinfo(0, "cursed player", .@mvp)); + .@PW=35; .@SPW=5; .@RG=2; + } + .@mtk = calcdmg(.BOSS, .@mvp, HARM_MAGI) * 2; + .@dmg = .@mtk * .@PW / 100; + .@dsb = .@mtk * .@SPW / 100; + sleep(1000); + areaharm(.@mvp, .@RG, .@dsb, HARM_MAGI, Ele_Holy); + harm(.@mvp, .@dmg, HARM_MAGI, Ele_Holy); + break; } initnpctimer; -- cgit v1.2.3-60-g2f50