From e00e54f503ed48e5896d47bb91877dd406a029f4 Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Thu, 5 May 2022 09:48:45 -0300 Subject: Make Luvia's magic more powerful :3 --- npc/034-4/lobby.txt | 79 +++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 73 insertions(+), 6 deletions(-) diff --git a/npc/034-4/lobby.txt b/npc/034-4/lobby.txt index 658d21087..7ea30bb47 100644 --- a/npc/034-4/lobby.txt +++ b/npc/034-4/lobby.txt @@ -120,7 +120,7 @@ OnTimer30000: /* Prepare some data */ .@hp = getunitdata(.luvia, UDT_HP) * 10 / getunitdata(.luvia, UDT_MAXHP); - .@pi = getmapusers(.mp$) * 2 + 1; + .@pi = getmapusers(.mp$); getmapxy(.@m$, .@x, .@y, UNITTYPE_MOB, .luvia); .@c=getunits(BL_PC, .@pcs, MAX_CYCLE_PC, .@m$); /*.@mvp=0;.@rnd=0;.@def=-1; @@ -144,24 +144,78 @@ OnTimer30000: specialeffect(64, AREA, .luvia); sleep(1000); monster(.mp$, .@x, .@y, strmobinfo(1, Scar), Scar, .@pi + max(1, (11 - .@hp) / 10)); + monster(.mp$, .@x, .@y, strmobinfo(1, MagicGoblin), MagicGoblin, .@pi + max(1, (11 - .@hp) / 10)); + // Doors reinforcements + // As time passes, they get stronger + // But after 7 minutes, it resets + switch ((.beats / 6) % 14) { + case 0: + .@mob = Skeleton; break; // Shouldn't trigger + case 1: + .@mob = LavaSlime; break; + case 2: + .@mob = ArmoredSkeleton; break; + case 3: + .@mob = DustRifle; break; + case 4: + .@mob = DarkLizard; break; + case 5: + .@mob = HoodedNinja; break; + case 6: + .@mob = Archant; break; + case 7: + .@mob = Scar; break; + case 8: + .@mob = Terranite; break; + case 9: + .@mob = EliteDuck; break; + case 10: + .@mob = Troll; break; + case 11: + .@mob = YellowSkullSlime; break; + case 12: + .@mob = Michel; break; + case 13: + .@mob = JackO; break; + } + + monster(.mp$, 114, 29, strmobinfo(1, .@mob), .@mob, 1); + // If you can't deal enough damage, less support comes + if (.@hp <= 7) // Up to 79% HP + monster(.mp$, 117, 51, strmobinfo(1, .@mob), .@mob, 1); + if (.@hp <= 6) // Up to 69% HP + monster(.mp$, 98, 22, strmobinfo(1, .@mob), .@mob, 1); + if (.@hp <= 4) // Up to 39% HP + monster(.mp$, 83, 58, strmobinfo(1, .@mob), .@mob, 1); + if (.@hp <= 3) // Up to 29% HP + monster(.mp$, 83, 51, strmobinfo(1, .@mob), .@mob, 1); break; case 3: case 9: case 15: specialeffect(60, AREA, .luvia); sleep(500); - switch (rand2(3)) { + .@r = (10-.@hp) / 5 + rand2(4); // From 0 to 5 + // Blind has extra chance until her HP falls below 60% + // Curse won't happen if her HP is equal or above 60% + // Once her HP falls below 10%, she no longer silences + // And her poison is strengthened. + switch (.@r) { case 1: + unittalk(.luvia, "The dead are ##Bsilent##b, just like you!"); + .@sc = SC_SILENCE; + break; + case 2: unittalk(.luvia, "I am your doom, and ##Bpoison##b is my tool!"); .@sc = (.@hp < 1 ? SC_DPOISON : SC_POISON); break; - case 2: + case 3: unittalk(.luvia, "You shall ##Bbleed##b, and cease!"); .@sc = SC_BLOODING; break; - case 3: - unittalk(.luvia, "The dead are ##Bsilent##b, just like you!"); - .@sc = SC_SILENCE; + case 4: + unittalk(.luvia, "You dare to underestimate me?! ##BCurse##b you!"); + .@sc = SC_CURSE; break; default: unittalk(.luvia, "You won't see what killed you when ##Bblind##b!"); @@ -172,6 +226,19 @@ OnTimer30000: .@dmg=100 + (max(1, (11 - .@hp) / 10) * 40); areaharm(.luvia, 9, .@dmg, HARM_MAGI, any(Ele_Water,Ele_Fire,Ele_Wind,Ele_Earth), "filter_always", BL_PC|BL_MER|BL_HOM); break; + default: + specialeffect(60, AREA, .luvia); + unittalk(.luvia, any("I am getting tired of you!", + "That's all you can muster?", + "Long live Isbamuth!", + "Hahahahah!", + "Incompetent! Simply incompetent!", + "You shall not resist!", + "I'm not afraid of you!")); + sleep(500); + .@dmg=40 + (max(1, (11 - .@hp) / 10) * 20); + areaharm(.luvia, 9, .@dmg, HARM_MAGI, any(Ele_Water,Ele_Fire,Ele_Wind,Ele_Earth), "filter_always", BL_PC|BL_MER|BL_HOM); + break; } // FIXME: Spawn other stuff as well, stronger stuff. -- cgit v1.2.3-60-g2f50