summaryrefslogtreecommitdiff
path: root/npc/boss
diff options
context:
space:
mode:
authorJesusaves <cpntb1@ymail.com>2019-07-29 20:24:56 -0300
committerJesusaves <cpntb1@ymail.com>2019-07-29 20:24:56 -0300
commitb08955ff55790712de30e71782b7829f0d1696bc (patch)
tree8fb4bd87e1ad5a84b2f908cacdb085724cc236bd /npc/boss
parent8a6628c11c04179a7738c3d60b606d38bf567ab2 (diff)
downloadserverdata-b08955ff55790712de30e71782b7829f0d1696bc.tar.gz
serverdata-b08955ff55790712de30e71782b7829f0d1696bc.tar.bz2
serverdata-b08955ff55790712de30e71782b7829f0d1696bc.tar.xz
serverdata-b08955ff55790712de30e71782b7829f0d1696bc.zip
Monster King main basic functions
Diffstat (limited to 'npc/boss')
-rw-r--r--npc/boss/throne.txt54
1 files changed, 53 insertions, 1 deletions
diff --git a/npc/boss/throne.txt b/npc/boss/throne.txt
index d44a63c99..10e2fff92 100644
--- a/npc/boss/throne.txt
+++ b/npc/boss/throne.txt
@@ -16,11 +16,20 @@ OnTouch:
// Controls the Event
OnBegin:
+ .CYCLES=0;
.MK=monster("boss", 45, 45, "The Monster King", MonsterKing, 1, .name$+"::OnVictory");
.@bhp=getunitdata(.MK, UDT_MAXHP);
setunitdata(.MK, UDT_MAXHP, .@bhp+50000+2000*.FAILS);
setunitdata(.MK, UDT_HP, .@bhp+50000+2000*.FAILS);
+ // Spawn reinforcements
+ .@mobId=MonsterLieutenant;
+ .@ts$="Lieutenant";
+ monster("boss", 40, 40, strmobinfo(1, .@mobId), .@mobId, 1, "#SiegeCtrl::On"+.@ts$+"Death");
+ monster("boss", 50, 50, strmobinfo(1, .@mobId), .@mobId, 1, "#SiegeCtrl::On"+.@ts$+"Death");
+ monster("boss", 40, 50, strmobinfo(1, .@mobId), .@mobId, 1, "#SiegeCtrl::On"+.@ts$+"Death");
+ monster("boss", 50, 40, strmobinfo(1, .@mobId), .@mobId, 1, "#SiegeCtrl::On"+.@ts$+"Death");
+
initnpctimer;
end;
@@ -39,7 +48,22 @@ function CheckFinalAssault {
return;
}
-OnTimer60000:
+OnTimer120000:
+ .CYCLES+=1;
+ //areamonster("boss", 20, 20, 70, 70, "Monster King Slave", );
+ // Spawn several monsters on the Boss Room every 2 minutes
+ siege_cast("boss", .name$, .FAILS, TP_TULIM|TP_HURNS|TP_NIVAL);
+ // Spawn an extra mini-boss at minutes: 10 and 30
+ if (.CYCLES == 5) {
+ .@mobId=MonsterColonel;
+ .@ts$="Colonel";
+ monster("boss", 45, 44, strmobinfo(1, .@mobId), .@mobId, 1, "#SiegeCtrl::On"+.@ts$+"Death");
+ }
+ if (.CYCLES == 15) {
+ .@mobId=MonsterGeneral;
+ .@ts$="General";
+ monster("boss", 45, 44, strmobinfo(1, .@mobId), .@mobId, 1, "#SiegeCtrl::On"+.@ts$+"Death");
+ }
initnpctimer;
OnTimer15000:
// Each fail raise curse duration in 0.1s - chance of curse is 15% each 15s
@@ -58,7 +82,35 @@ OnTimer40000:
OnTimer45000:
OnTimer50000:
OnTimer55000:
+OnTimer60000:
+OnTimer65000:
+OnTimer70000:
+OnTimer75000:
+OnTimer80000:
+OnTimer85000:
+OnTimer90000:
+OnTimer95000:
+OnTimer100000:
+OnTimer105000:
+OnTimer110000:
+OnTimer115000:
CheckFinalAssault();
end;
+// Monster King was defeated - game won
+OnVictory:
+ // Not killed by a player? It doesn't counts, then
+ if (!playerattached())
+ end;
+ kamibroadcast("has just defeated the Monster King.", strcharinfo(0));
+ stopnpctimer;
+ mapwarp("boss", "017-1", 120, 88);
+ $GAME_STORYLINE=5;
+ getitembound(AegisShield, 1, 1);
+ dispbottom l("For defeating the Monster King, you've got the Legendary @@.", getitemlink(AegisShield));
+ dispbottom l("This item cannot be traded normally and is a Legendary Item.");
+ dispbottom l("You can transfer it with \"@grantpower\" command. Please contact a GM for more info.");
+ dispbottom l("Protip: If you plan in selling it, it's adviseable to ask for GM mediation.");
+ end;
}
+