diff options
author | Jesusaves <cpntb1@ymail.com> | 2020-04-30 00:26:59 -0300 |
---|---|---|
committer | Jesusaves <cpntb1@ymail.com> | 2020-04-30 00:26:59 -0300 |
commit | 6efb97a3aa229315d7c927d876898c6d2863eabd (patch) | |
tree | 1703df9ed43201eb8b49c3690263174c6a0000c9 /npc/042-2/boss.txt | |
parent | e5b2352f872148d5e89922b9d19399308c10963c (diff) | |
download | serverdata-6efb97a3aa229315d7c927d876898c6d2863eabd.tar.gz serverdata-6efb97a3aa229315d7c927d876898c6d2863eabd.tar.bz2 serverdata-6efb97a3aa229315d7c927d876898c6d2863eabd.tar.xz serverdata-6efb97a3aa229315d7c927d876898c6d2863eabd.zip |
This should warrant players to be arrested, finishing the jail as well.
After this, players can go back and fight Razha (not advised!!)
Or they can go forward and step on Kamelot Sewers for the first time...
Diffstat (limited to 'npc/042-2/boss.txt')
-rw-r--r-- | npc/042-2/boss.txt | 118 |
1 files changed, 115 insertions, 3 deletions
diff --git a/npc/042-2/boss.txt b/npc/042-2/boss.txt index 7a3ef4599..3479b7f2c 100644 --- a/npc/042-2/boss.txt +++ b/npc/042-2/boss.txt @@ -16,6 +16,7 @@ OnTouch: .@label$=instance_npcname(.name$)+"::OnKillBoss"; .@g=getcharid(2); + if (.@g < 1) percentheal -100, -100; if (($KAMELOT_QUEST[.@g] & 4) && !mobcount(getmap(), .@label$)) { warp "042-3@"+.@g, 58, 139; } else { @@ -191,6 +192,8 @@ OnKillMob: OnKillBoss: .@m$=instance_mapname("042-2"); + .@n$=instance_npcname(.name$); + stopnpctimer; setd("$@GTEMP_"+.@m$, 0); setd("$@GTEMP_HP_"+.@m$, 0); setd("$@GTEMP_PC_"+.@m$, 0); @@ -214,11 +217,120 @@ OnKillBoss: .@gmb=getcharid(0, .@gm$); if (!isloggedin(.@gma, .@gmb)) end; message .@gm$, strcharinfo(0)+" defeated Krukan: Guild GP +"+.@ggp+" Guild XP +"+.@gxp; + // Arrest scene + exp + maptimer .@m$, 1500, .@n$+"::OnReward"; + setd("$@GTEMP_"+.@m$, $KAMELOT_ID[.@g]); + setnpctimer 1000000; // Prefix 1M + startnpctimer; + end; + + +/////////////////////////////////////////////////////////////////////// +OnTimer1002000: + .@m$=instance_mapname("042-2"); + .@n$=instance_npcname(.name$); + // Bring Razha (the only mob with fixed difficulty in Kamelot) + .@raz=monster(.@m$, 41, 23, strmobinfo(1, GeneralRazha), GeneralRazha, 1, + .@n$+"::OnOptionalBoss"); + // Configure the optional boss + setunitdata(.@raz, UDT_LEVEL, 150); + setunitdata(.@raz, UDT_STR, 150); + setunitdata(.@raz, UDT_AGI, 150); + setunitdata(.@raz, UDT_VIT, 150); + setunitdata(.@raz, UDT_INT, 150); + setunitdata(.@raz, UDT_DEX, 150); + setunitdata(.@raz, UDT_LUK, 150); + setunitdata(.@raz, UDT_ADELAY, 1072); + setunitdata(.@raz, UDT_ATKRANGE, 3); + // Battle Status + setunitdata(.@raz, UDT_MAXHP, 150000); + setunitdata(.@raz, UDT_HP, 150000); + setunitdata(.@raz, UDT_ATKMIN, 400); + setunitdata(.@raz, UDT_ATKMAX, 750); + setunitdata(.@raz, UDT_DEF, 300); + setunitdata(.@raz, UDT_MDEF, 300); + setunitdata(.@raz, UDT_HIT, 32767); // Advised: x3 + setunitdata(.@raz, UDT_FLEE, 420); // Advised: x4 + setunitdata(.@raz, UDT_CRIT, 70); + // Loop through + + sc_start(SC_STUN, 15000, 1, 10000, SCFLAG_NOAVOID|SCFLAG_FIXEDTICK, .@raz); + unittalk(.@raz, "What is happening here??"); + mapannounce .@m$, "General Razha : ##1What's happening here??", 0; + end; + +OnTimer1007000: + .@m$=instance_mapname("042-2"); + mapannounce .@m$, "General Razha : GUARDS!!", 0; + end; + +OnTimer1007500: + .@m$=instance_mapname("042-2"); + .@r1=monster(.@m$, 40, 24, strmobinfo(1, CursedSoldier), CursedSoldier, 1); + .@r2=monster(.@m$, 42, 24, strmobinfo(1, CursedArcher), CursedArcher, 1); + sc_start(SC_STUN, 15000, 1, 10000, SCFLAG_NOAVOID|SCFLAG_FIXEDTICK, .@r1); + sc_start(SC_STUN, 15000, 1, 10000, SCFLAG_NOAVOID|SCFLAG_FIXEDTICK, .@r2); + kdoor0422Spawn(49, 20, 24, 59, 59); // 1225 tiles, 1 per 25 tiles + end; + +OnTimer1012000: + .@m$=instance_mapname("042-2"); + mapannounce .@m$, "General Razha : Arrest them all!!", 0; + end; + +OnTimer1015000: + .@m$=instance_mapname("042-2"); + .@t$=instance_mapname("042-3"); + .@n$=instance_npcname("#KSlimeSpawn", getd("$@GTEMP_"+.@m$)); + setarray .@x, 33, 84, 41, 74, 36, 57, 79, 43, 24, 86, 59, 38; + setarray .@y, 135, 127, 119, 107, 96, 84, 63, 67, 67, 22, 49, 27; + .@c=getunits(BL_PC, .@unt, false, .@m$, 20, 24, 59, 59); + for (.@i = 0; .@i < .@c; .@i++) { + specialeffect(FX_HIT, AREA, .@unt[.@i]); + .@v = (.@i % 12); + .@r=attachrid(.@unt[.@i]); + if (.@r) { + warp .@t$, .@x[.@v], .@y[.@v]; + if (!countitem(Lockpicks)) + addtimer 700, .@n$+"::OnFirstSlime"; + setpcblock(255, false); + } else { + unitwarp(.@unt[.@i], .@t$, .@x[.@v], .@y[.@v]); // And good luck D: + debugmes "FATAL: Could not attach: %d", .@unt[.@i]; + } + } + setd("$@GTEMP_"+.@m$, 0); stopnpctimer; + end; - // TODO: maptimer to give EXP to helpers/survivors - // TODO: Arrest scene - // TODO: Actual arresting +OnReward: + .@g=getcharid(2); + if (.@g < 1) percentheal -100, -100; + setpcblock(255, true); + getitem GuildCoin, min(1, $KAMELOT_MX[.@g]/25); + getexp $KAMELOT_MX[.@g]*50, $KAMELOT_MX[.@g]*10; + dispbottom l("Wait- Something is happening!"); + end; + +OnOptionalBoss: + .@g=getcharid(2); + // Player Reward for completing this stage + getitem GuildCoin, 5; + getexp 50000, 10000; + // Guild Reward for completing this stage + .@ggp=12000; + .@gxp=100000; + $GUILD_BANK[.@g]+=.@ggp; + guildgetexp(.@gxp); // 10xp per player average level (max 1000/1500) + // Announce + mapannounce getmap(), strcharinfo(0)+" has defeated Razha!", 0; + // Guild Master Notification + .@gm$=getguildmaster(.@g); + if (!getcharid(3, .@gm$)) end; + .@gma=getcharid(3, .@gm$); + .@gmb=getcharid(0, .@gm$); + if (!isloggedin(.@gma, .@gmb)) end; + message .@gm$, strcharinfo(0)+" defeated Razha: Guild GP +"+.@ggp+" Guild XP +"+.@gxp; end; function kdoor0422Spawn { |