summaryrefslogtreecommitdiff
path: root/world/map/npc/009-7/eventHandler.txt
diff options
context:
space:
mode:
Diffstat (limited to 'world/map/npc/009-7/eventHandler.txt')
-rw-r--r--world/map/npc/009-7/eventHandler.txt132
1 files changed, 132 insertions, 0 deletions
diff --git a/world/map/npc/009-7/eventHandler.txt b/world/map/npc/009-7/eventHandler.txt
new file mode 100644
index 00000000..4098e14a
--- /dev/null
+++ b/world/map/npc/009-7/eventHandler.txt
@@ -0,0 +1,132 @@
+// this file handles every events related to the fight club and calls the appropriate functions from core
+
+009-7.gat,45,33,0|script|#trapdoor2#FightClub|327,0,0,
+{
+ if(countitem(647)||countitem(725)||countitem(1178)||countitem(5131)||countitem(5132)||countitem(5133)||countitem(5134)||countitem(5135)||countitem(5136)||countitem(5137)||countitem(5138)||countitem(5139)||countitem(5140)||(getgmlevel()>=20)) goto L_Enter;
+ end;
+
+L_Enter:
+ warp "009-7.gat",34,22; // this warp is a special thanks for contributors
+ end;
+}
+009-7.gat,33,21,0|script|#trapdoor3#FightClub|327,0,0,
+{
+ warp "009-7.gat",44,32;
+ end;
+}
+
+009-7.gat,22,38,0|script|#FightClub#utils|127,
+{
+ end;
+
+OnIntrusion:
+ if(getgmlevel() >= 60) end; // allow GMs to be in the ring
+ if(getcharid(3) == $@Duel_RedPlayer) end; // do not kill the red fighter
+ if(getcharid(3) == $@Duel_BluePlayer) end; // do not kill the blue fighter
+ donpcevent "Rouge#Duels::OnAnnounceIntrusion";
+ callfunc "fightclub_DestroyMe"; // only kill the intruder(s)
+ end;
+
+OnDelayedStart:
+ callfunc "fightclub_StartBattle";
+ end;
+
+OnDelayedNextBattle:
+ callfunc "fightclub_NextBattleProceed";
+ end;
+
+OnBecomeKiller:
+ callfunc "fightclub_enter_killer";
+ end;
+
+OnCommandIntrusion:
+ areatimer "009-7.gat", $@fightclub_x1, $@fightclub_y1, $@fightclub_x2, $@fightclub_y2, 0, "#FightClub#utils::OnIntrusion"; // we can not do this directly on #handler because it already have a timer
+ end;
+}
+
+009-7.gat,20,45,0|script|#FightClub#TimeLimit|127,0,0,
+{
+ end;
+
+OnStartTimer:
+ set $@Duel_TotalTime, 0;
+ goto L_StartTimer;
+
+OnStopTimer:
+ stopnpctimer;
+ end;
+
+OnTimer1000:
+ set $@Duel_TotalTime, ($@Duel_TotalTime + 1);
+ if($@Duel_TotalTime >= $@Duel_TimeLimit) goto L_TimeOut;
+ goto L_StartTimer;
+
+L_TimeOut:
+ stopnpctimer;
+ callfunc "fightclub_TimeOut";
+ end;
+
+L_StartTimer:
+ setnpctimer 0;
+ initnpctimer;
+ end;
+
+OnInit:
+ set $@Duel_TotalTime, 0;
+ end;
+}
+
+009-7.gat,20,44,0|script|#FightClub#handler|127,0,0,
+{
+ end;
+
+OnInit:
+ // this event is called when the map server boots up
+ set $@fightclub_x1, 27;
+ set $@fightclub_y1, 42;
+ set $@fightclub_x2, 38;
+ set $@fightclub_y2, 48;
+ callfunc "fightclub_StartUp";
+ if(($fightclub_enabled % 5) != 3) end;
+ callfunc "fightclub_CleanStage";
+ goto L_StartTimer;
+
+L_StartTimer:
+ setnpctimer 0;
+ initnpctimer;
+ end;
+
+OnTimer2000:
+ // this events checks who is on stage every 2 seconds
+ set $@areausers, getareausers("009-7.gat", $@fightclub_x1, $@fightclub_y1, $@fightclub_x2, $@fightclub_y2); // get the number of players on stage
+ if (($@areausers > 2) || (($@Duel_CurrentDuel < 1) && ($@areausers >= 1))) goto L_Intrusion; // too many players on the stage
+ if (($@Duel_CurrentDuel < 1) || ($@Duel_Started != 1)) goto L_StartTimer; // no intrusion and no duel ongoing so loop again
+ if (attachrid($@Duel_BluePlayer) == 0) goto L_BlueMissing;
+ if (isin("009-7.gat", $@fightclub_x1, $@fightclub_y1, $@fightclub_x2, $@fightclub_y2) == 0) goto L_BlueMissing;
+ if (isdead() == 1) goto L_IAmACorpse;
+ if (attachrid($@Duel_RedPlayer) == 0) goto L_RedMissing;
+ if (isin("009-7.gat", $@fightclub_x1, $@fightclub_y1, $@fightclub_x2, $@fightclub_y2) == 0) goto L_RedMissing;
+ if (isdead() == 1) goto L_IAmACorpse;
+ detachrid;
+ goto L_StartTimer;
+
+L_IAmACorpse:
+ set $@duel_loser, getcharid(3);
+ callfunc "fightclub_death";
+ goto L_StartTimer;
+
+L_RedMissing:
+ set $@Duel_Missing, 1;
+ callfunc "fightclub_Missing";
+ goto L_StartTimer;
+
+L_BlueMissing:
+ set $@Duel_Missing, 2;
+ callfunc "fightclub_Missing";
+ goto L_StartTimer;
+
+L_Intrusion:
+ cmdothernpc "#FightClub#utils", "Intrusion"; // we can not attach a second timer to this npc so we use another one
+ callfunc "fightclub_Intrusion";
+ goto L_StartTimer;
+}