summaryrefslogtreecommitdiff
path: root/npc
diff options
context:
space:
mode:
Diffstat (limited to 'npc')
-rw-r--r--npc/034-4/lobby.txt79
1 files 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.