diff options
author | Jesusaves <cpntb1@ymail.com> | 2020-04-29 04:58:57 -0300 |
---|---|---|
committer | Jesusaves <cpntb1@ymail.com> | 2020-04-29 04:58:57 -0300 |
commit | d2a88d6620167504ee6f37e572b117fdf7190f9c (patch) | |
tree | 757ab91c9ab12fddf87446864d37f47738e71f9a /npc | |
parent | 5ac010ea65c20843f5bb5fd61cffd4eb8643946e (diff) | |
download | serverdata-d2a88d6620167504ee6f37e572b117fdf7190f9c.tar.gz serverdata-d2a88d6620167504ee6f37e572b117fdf7190f9c.tar.bz2 serverdata-d2a88d6620167504ee6f37e572b117fdf7190f9c.tar.xz serverdata-d2a88d6620167504ee6f37e572b117fdf7190f9c.zip |
General Krukan Boss Battle
Diffstat (limited to 'npc')
-rw-r--r-- | npc/042-1/door.txt | 4 | ||||
-rw-r--r-- | npc/042-2/boss.txt | 98 |
2 files changed, 92 insertions, 10 deletions
diff --git a/npc/042-1/door.txt b/npc/042-1/door.txt index c6d21551b..d884b1e30 100644 --- a/npc/042-1/door.txt +++ b/npc/042-1/door.txt @@ -160,8 +160,8 @@ OnTimer10000: setunitdata(.@mob, UDT_ADELAY, 1672); setunitdata(.@mob, UDT_ATKRANGE, (.@mobId == CursedArcher ? any(6,7,8) : 2)); // Battle Status - setunitdata(.@mob, UDT_MAXHP, .@avg*50); - setunitdata(.@mob, UDT_HP, .@avg*50); + setunitdata(.@mob, UDT_MAXHP, .@avg*150); + setunitdata(.@mob, UDT_HP, .@avg*150); setunitdata(.@mob, UDT_ATKMIN, .@avg*5); setunitdata(.@mob, UDT_ATKMAX, .@avg*7); setunitdata(.@mob, UDT_DEF, 1+.@avg*11/10); diff --git a/npc/042-2/boss.txt b/npc/042-2/boss.txt index 49e31f28a..75fcfe1b0 100644 --- a/npc/042-2/boss.txt +++ b/npc/042-2/boss.txt @@ -40,28 +40,109 @@ OnArrival: OnTimer1000: .@m$=instance_mapname("042-2"); - mapannounce .@m$, "??? : Where's Micksha? WHRE IS ARTHUR MICKSHA??", 0; + mapannounce .@m$, "??? : What's this? Why do I hear a commotion up there??", 0; .@gcount=$KAMELOT_PC[.@g]; - kdoor0422Spawn(.@gcount*2, 20, 24, 59, 59); + kdoor0422Spawn(.@gcount*2, 20, 24, 59, 59); // Prologue monsters end; OnTimer30000: .@m$=instance_mapname("042-2"); - mapannounce .@m$, "??? : MICKSHAAAAAAA!! YOU NEED TO FIX STUFF!!", 0; + mapannounce .@m$, "??? : WHAT?! It is not possible. Who are you, and how did you manage to come down here?", 0; .@gcount=$KAMELOT_PC[.@g]; - kdoor0422Spawn(.@gcount*2, 20, 24, 59, 59); + end; + +OnTimer35000: + .@m$=instance_mapname("042-2"); + .@n$=instance_npcname(.name$); + mapannounce .@m$, "??? : The sheer power of our lord should prevent anyone not under his control to go here.", 0; + maptimer .@m$, 5000, .@n$+"::OnVerifyIntent"; end; OnTimer60000: .@m$=instance_mapname("042-2"); + mapannounce .@m$, "??? : HAHAHA! Meh, you will die anyways, so I can tell you that you never will even see our Lord.", 0; + end; + +OnTimer67000: + .@m$=instance_mapname("042-2"); + mapannounce .@m$, "??? : You require the key hidden in the caves, additionally you must overcome the magical seal.", 0; + end; + +OnTimer74000: + .@m$=instance_mapname("042-2"); + mapannounce .@m$, "??? : Both is impossible for weaklings like you lot.", 0; + end; + +OnTimer80000: + .@m$=instance_mapname("042-2"); + mapannounce .@m$, "General Krukan : Both is impossible for weaklings like you lot. Minions, ATTACK!", 0; + kdoor0422Spawn(.@gcount*2, 20, 24, 59, 59); + end; + +OnTimer100000: + .@m$=instance_mapname("042-2"); + mapannounce .@m$, "General Krukan : MUhahahahaha! Minions, Dispose of these Adventurers! Kill them already!", 0; + kdoor0422Spawn(.@gcount*2, 20, 24, 59, 59); + end; + +OnTimer120000: + .@m$=instance_mapname("042-2"); + mapannounce .@m$, "General Krukan : *facepalm* Now, you're just being pathetic minions. How about you try a different approach and kill them already!", 0; + kdoor0422Spawn(.@gcount*2, 20, 24, 59, 59); + end; + +OnTimer180000: + .@m$=instance_mapname("042-2"); .@n$=instance_npcname(.name$); - mapannounce .@m$, "General Krukan : NO WAY I'M GOING OUT UNTIL I'M FIXED!!!!", 0; + mapannounce .@m$, "General Krukan : Looks like if you want something done right you have to do it yourself. Charge!", 0; .@gcount=$KAMELOT_PC[.@g]; kdoor0422Spawn(.@gcount*3, 20, 24, 59, 59); - .@mob=monster(.@m$, 34, 26, strmobinfo(1, GeneralKrukan), GeneralKrukan, 1, .@n$+"::OnKillBoss"); // FIXME + .@mob=monster(.@m$, 34, 26, strmobinfo(1, GeneralKrukan), GeneralKrukan, 1, .@n$+"::OnKillBoss"); + // Reconfigure the monster + setunitdata(.@mob, UDT_LEVEL, .@avg); + setunitdata(.@mob, UDT_STR, 1+.@avg/3); + setunitdata(.@mob, UDT_AGI, 1+.@avg/3); + setunitdata(.@mob, UDT_VIT, 1+.@avg/3); + setunitdata(.@mob, UDT_INT, 1+.@avg/3); + setunitdata(.@mob, UDT_DEX, 1+.@avg/3); + setunitdata(.@mob, UDT_LUK, 1+.@avg/3); + setunitdata(.@mob, UDT_ADELAY, 1372); + setunitdata(.@mob, UDT_ATKRANGE, 3); + // Battle Status + setunitdata(.@mob, UDT_MAXHP, .@avg*300); + setunitdata(.@mob, UDT_HP, .@avg*400); + setunitdata(.@mob, UDT_ATKMIN, .@avg*65/10); + setunitdata(.@mob, UDT_ATKMAX, .@avg*85/10); + setunitdata(.@mob, UDT_DEF, 1+.@avg); + setunitdata(.@mob, UDT_MDEF, 1+.@avg*8/10); + setunitdata(.@mob, UDT_HIT, .@avg*12); // Advised: x3 + setunitdata(.@mob, UDT_FLEE, .@avg*39/10); // Advised: x4 + // Critical calculation + .@min=15; + .@max=max(.@min, min(50, .@avg/4)); + setunitdata(.@mob, UDT_CRIT, rand2(.@min, .@max)); + // Loop through + setd("$@GTEMP_"+.@m$, .@mob); + setd("$@GTEMP1_"+.@m$, 10); + setd("$@GTEMP2_"+.@m$, .@gdcount); + end; + +OnTimer185000: + .@m$=instance_mapname("042-2"); + .@mob=getd("$@GTEMP_"+.@m$); + .@gdcount=getd("$@GTEMP2_"+.@m$); + .@ratio=getunitdata(.@mob, UDT_HP)*10/getunitdata(.@mob, UDT_MAXHP); + if (.@ratio < getd("$@GTEMP1_"+.@m$)) { + mapannounce .@m$, "General Krukan : "+any("Charge!", "To the Abyss with you already!", "Kill them already!", "More of them are coming!", "Minions, ATTACK!"), 0; + kdoor0422Spawn(.@gcount*2, 20, 24, 59, 59); + setd("$@GTEMP1_"+.@m$, .@ratio); + } + setnpctimer 180001; end; OnVerifyIntent: + .@g=getcharid(2); + if (.@g < 1) percentheal -100, -100; mesq l("Who are you, and how did you manage to come down here? The sheer power of our Lord prevents anyone not under his control to go here."); select l("We are strong fighters, and we want to free the King from his obsession."), @@ -96,6 +177,9 @@ OnKillMob: end; OnKillBoss: + setd("$@GTEMP_"+.@m$, 0); + setd("$@GTEMP1_"+.@m$, 0); + setd("$@GTEMP2_"+.@m$, 0); .@g=getcharid(2); dispbottom l("This is all in KAMELOT for now."); $KAMELOT_QUEST[.@g]=$KAMELOT_QUEST[.@g]|4; // FIXME @@ -129,8 +213,6 @@ function kdoor0422Spawn { .@y1=getarg(2); .@x2=getarg(3); .@y2=getarg(4); - .@g=getcharid(2); - if (.@g < 1) percentheal -100, -100; .@avg=$KAMELOT_MX[.@g]; .@m$=getmap(); freeloop(true); |