summaryrefslogtreecommitdiff
path: root/world/map/npc/009-7
diff options
context:
space:
mode:
Diffstat (limited to 'world/map/npc/009-7')
-rw-r--r--world/map/npc/009-7/battlemaster.txt94
-rw-r--r--world/map/npc/009-7/core.txt474
-rw-r--r--world/map/npc/009-7/debug.txt280
-rw-r--r--world/map/npc/009-7/eventHandler.txt235
-rw-r--r--world/map/npc/009-7/npcs.txt14
5 files changed, 556 insertions, 541 deletions
diff --git a/world/map/npc/009-7/battlemaster.txt b/world/map/npc/009-7/battlemaster.txt
index c5d964b4..e211092c 100644
--- a/world/map/npc/009-7/battlemaster.txt
+++ b/world/map/npc/009-7/battlemaster.txt
@@ -54,35 +54,38 @@ function|script|fightclub_GoBack|,
if(Duel_LMS == 1) goto L_GoBack;
return;
- L_GoBack:
- set Duel_LMS, 0;
- warp "009-7.gat", 39, 37;
- gmcommand "@alive";
- message strcharinfo(0), "Thank you for participating in Last Man Standing!";
- return;
-
- L_Clean:
- set Duel_LMS, 0;
- return;
-
- L_Death:
- if((Duel_LMS != 1) && ((getmap() == "009-6") || (getmap() == "009-5"))) L_NormalExit;
- if(Duel_LMS != 1) end;
- if((getmap() != "009-6") && (getmap() != "009-5")) goto L_Clean;
- goto L_GoBack;
-
- OnPCKilledEvent: goto L_Death;
- OnPCDieEvent: goto L_Death;
-
- OnResave:
- if(Duel_LMS != 1) end;
- savepoint "009-7.gat", 39, 37;
- return;
-
- L_NormalExit:
- warp "009-3.gat", 162, 82;
- gmcommand "@alive";
- return;
+L_GoBack:
+ set Duel_LMS, 0;
+ warp "009-7.gat", 39, 37;
+ gmcommand "@alive";
+ message strcharinfo(0), "Thank you for participating in Last Man Standing!";
+ return;
+
+L_Clean:
+ set Duel_LMS, 0;
+ return;
+
+L_Death:
+ if((Duel_LMS != 1) && ((getmap() == "009-6") || (getmap() == "009-5"))) L_NormalExit;
+ if(Duel_LMS != 1) end;
+ if((getmap() != "009-6") && (getmap() != "009-5")) goto L_Clean;
+ goto L_GoBack;
+
+OnPCKilledEvent:
+ goto L_Death;
+
+OnPCDieEvent:
+ goto L_Death;
+
+OnResave:
+ if(Duel_LMS != 1) end;
+ savepoint "009-7.gat", 39, 37;
+ return;
+
+L_NormalExit:
+ warp "009-3.gat", 162, 82;
+ gmcommand "@alive";
+ return;
}
009-6.gat,36,48,0|script|#GoBack2#Duels|127,0,1,
{
@@ -99,24 +102,27 @@ function|script|fightclub_GoBack2|,
if(Duel_PVP == 1) goto L_GoBack;
return;
- L_GoBack:
- set Duel_PVP, 0;
- warp "009-7.gat", 39, 37;
- gmcommand "@alive";
- message strcharinfo(0), "Thank you for participating in the PVP cave!";
- return;
+L_GoBack:
+ set Duel_PVP, 0;
+ warp "009-7.gat", 39, 37;
+ gmcommand "@alive";
+ message strcharinfo(0), "Thank you for participating in the PVP cave!";
+ return;
+
+L_Clean:
+ set Duel_PVP, 0;
+ return;
- L_Clean:
- set Duel_PVP, 0;
- return;
+L_Death:
+ if(Duel_PVP != 1) end;
+ if((getmap() != "001-2") && (getmap() != "001-3")) goto L_Clean;
+ goto L_GoBack;
- L_Death:
- if(Duel_PVP != 1) end;
- if((getmap() != "001-2") && (getmap() != "001-3")) goto L_Clean;
- goto L_GoBack;
+OnPCKilledEvent:
+ goto L_Death;
- OnPCKilledEvent: goto L_Death;
- OnPCDieEvent: goto L_Death;
+OnPCDieEvent:
+ goto L_Death;
}
001-2.gat,130,22,0|script|#GoBack4#Duels|127,1,1,
{
diff --git a/world/map/npc/009-7/core.txt b/world/map/npc/009-7/core.txt
index 18487a50..2cefe1b4 100644
--- a/world/map/npc/009-7/core.txt
+++ b/world/map/npc/009-7/core.txt
@@ -5,29 +5,29 @@ function|script|fightclub_sendrequest|,
set @loop, 0;
goto L_Loop;
- L_Loop:
- if(@Duel_Queue$[@loop] == @caster_name$) goto L_Exists;
- if(@Duel_Queue$[@loop] == "") goto L_Proceed;
- set @loop, (@loop + 1);
- if(@loop >= getarraysize(@Duel_Queue)) goto L_Full; // this shouldn't happen since we check in magic but we still handle it
- goto L_Loop;
-
- L_Full:
- message @caster_name$, "There is already "+ $@Duel_PlayerQueueLimit +" duel request(s) in the queue of this player, which is the maximum.";
- return;
+L_Loop:
+ if(@Duel_Queue$[@loop] == @caster_name$) goto L_Exists;
+ if(@Duel_Queue$[@loop] == "") goto L_Proceed;
+ set @loop, (@loop + 1);
+ if(@loop >= getarraysize(@Duel_Queue)) goto L_Full; // this shouldn't happen since we check in magic but we still handle it
+ goto L_Loop;
- L_Exists:
- message @caster_name$, "You already requested a duel with this player.";
- return;
+L_Full:
+ message @caster_name$, "There is already "+ $@Duel_PlayerQueueLimit +" duel request(s) in the queue of this player, which is the maximum.";
+ return;
- L_Proceed:
- misceffect FX_MAGIC_DARKRED, @caster_name$;
- message @caster_name$, "Your request has been sent.";
- set @Duel_Queue$[@loop], @caster_name$;
- if(@Duel_Fighter == 0) message strcharinfo(0), "You have received a new duel request. Talk to Rouge to accept or decline.";
- if(@Duel_Fighter == 0) misceffect FX_MAGIC_DARKRED, strcharinfo(0);
- if(@Duel_Fighter == 1) set @Duel_HasPendingRequest, 1;
- return;
+L_Exists:
+ message @caster_name$, "You already requested a duel with this player.";
+ return;
+
+L_Proceed:
+ misceffect FX_MAGIC_DARKRED, @caster_name$;
+ message @caster_name$, "Your request has been sent.";
+ set @Duel_Queue$[@loop], @caster_name$;
+ if(@Duel_Fighter == 0) message strcharinfo(0), "You have received a new duel request. Talk to Rouge to accept or decline.";
+ if(@Duel_Fighter == 0) misceffect FX_MAGIC_DARKRED, strcharinfo(0);
+ if(@Duel_Fighter == 1) set @Duel_HasPendingRequest, 1;
+ return;
}
function|script|fightclub_getrules|,
@@ -37,23 +37,23 @@ function|script|fightclub_getrules|,
if(attachrid(@target) == 1) goto L_Proceed;
goto L_Missing;
- L_Proceed:
- set $@Temp_NoMagic, Duel_NoMagic;
- if($@fightclub_myself == getcharid(3)) goto L_Proceed2; // the target is ourselves
- if(attachrid($@fightclub_myself) == 1) goto L_Proceed2;
- goto L_Missing;
-
- L_Missing:
- end;
-
- L_Proceed2:
- set $@fightclub_myself, 0;
- set @target, 0;
- if($@Temp_NoMagic != 1)
- mes "(no rules)";
- if($@Temp_NoMagic == 1) mes "- No Magic";
- set $@Temp_NoMagic, 0; // now we clean these vars ASAP because they're globals
- return;
+L_Proceed:
+ set $@Temp_NoMagic, Duel_NoMagic;
+ if($@fightclub_myself == getcharid(3)) goto L_Proceed2; // the target is ourselves
+ if(attachrid($@fightclub_myself) == 1) goto L_Proceed2;
+ goto L_Missing;
+
+L_Missing:
+ end;
+
+L_Proceed2:
+ set $@fightclub_myself, 0;
+ set @target, 0;
+ if($@Temp_NoMagic != 1)
+ mes "(no rules)";
+ if($@Temp_NoMagic == 1) mes "- No Magic";
+ set $@Temp_NoMagic, 0; // now we clean these vars ASAP because they're globals
+ return;
}
function|script|fightclub_AddToQueue|, // ** called when someone agree to duel
@@ -61,51 +61,51 @@ function|script|fightclub_AddToQueue|, // ** called when someone agree to duel
set @Duel_Loop, 0;
goto L_Loop;
- L_Loop:
- if(($@Duel_Queue_Blue$[@Duel_Loop] == @caster_name$) && ($@Duel_Queue_Red$[@Duel_Loop] == @target_name$)) goto L_Exists;
- if(($@Duel_Queue_Red$[@Duel_Loop] == @caster_name$) && ($@Duel_Queue_Blue$[@Duel_Loop] == @target_name$)) goto L_Exists;
- set @Duel_Loop, (@Duel_Loop + 1);
- if(@Duel_Loop >= getarraysize($@Duel_Queue_ID)) goto L_Proceed;
- goto L_Loop;
-
- L_Exists:
- mes "This battle is already in the queue.";
- close;
-
- L_Full:
- mes "There is already " + $@Duel_QueueLimit + " battles in the queue, which is the maximum. Please try again later.";
- close;
-
- L_Proceed:
- if(getarraysize($@Duel_Queue_ID) >= ($@Duel_QueueLimit + 1)) goto L_Full;
- set @index, getarraysize($@Duel_Queue_ID);
- if(@index >= 1) goto L_Proceed2;
- set @index, 1;
- goto L_Proceed2;
-
- L_Proceed2:
- if($@Duel_Queue_Red$[@index] != "") goto L_NotClean;
- set $@Duel_Queue_Red$[@index], @caster_name$;
- if($@Duel_Queue_Blue$[@index] != "") goto L_NotClean;
- set $@Duel_Queue_Blue$[@index], @target_name$;
- if($@Duel_Queue_ID[@index] != 0) goto L_NotClean;
- set $@Duel_Queue_ID[@index], ($@Duel_Queue_ID[(@index - 1)] + 1);
- if($@Duel_Queue_ID[@index] <= $Duel_LastDuel) goto L_FixId;
- if($@Duel_CurrentDuel < 1) goto L_Request;
- return;
+L_Loop:
+ if(($@Duel_Queue_Blue$[@Duel_Loop] == @caster_name$) && ($@Duel_Queue_Red$[@Duel_Loop] == @target_name$)) goto L_Exists;
+ if(($@Duel_Queue_Red$[@Duel_Loop] == @caster_name$) && ($@Duel_Queue_Blue$[@Duel_Loop] == @target_name$)) goto L_Exists;
+ set @Duel_Loop, (@Duel_Loop + 1);
+ if(@Duel_Loop >= getarraysize($@Duel_Queue_ID)) goto L_Proceed;
+ goto L_Loop;
- L_NotClean:
- message @caster_name$, "An error occured: array element not empty. Try again in 5 seconds.";
- return;
+L_Exists:
+ mes "This battle is already in the queue.";
+ close;
+
+L_Full:
+ mes "There is already " + $@Duel_QueueLimit + " battles in the queue, which is the maximum. Please try again later.";
+ close;
+
+L_Proceed:
+ if(getarraysize($@Duel_Queue_ID) >= ($@Duel_QueueLimit + 1)) goto L_Full;
+ set @index, getarraysize($@Duel_Queue_ID);
+ if(@index >= 1) goto L_Proceed2;
+ set @index, 1;
+ goto L_Proceed2;
+
+L_Proceed2:
+ if($@Duel_Queue_Red$[@index] != "") goto L_NotClean;
+ set $@Duel_Queue_Red$[@index], @caster_name$;
+ if($@Duel_Queue_Blue$[@index] != "") goto L_NotClean;
+ set $@Duel_Queue_Blue$[@index], @target_name$;
+ if($@Duel_Queue_ID[@index] != 0) goto L_NotClean;
+ set $@Duel_Queue_ID[@index], ($@Duel_Queue_ID[(@index - 1)] + 1);
+ if($@Duel_Queue_ID[@index] <= $Duel_LastDuel) goto L_FixId;
+ if($@Duel_CurrentDuel < 1) goto L_Request;
+ return;
- L_FixId:
- set $@Duel_Queue_ID[@index], ($Duel_LastDuel + 1);
- if($@Duel_CurrentDuel < 1) goto L_Request;
- return;
+L_NotClean:
+ message @caster_name$, "An error occured: array element not empty. Try again in 5 seconds.";
+ return;
- L_Request:
- callfunc "fightclub_NextBattle";
- return;
+L_FixId:
+ set $@Duel_Queue_ID[@index], ($Duel_LastDuel + 1);
+ if($@Duel_CurrentDuel < 1) goto L_Request;
+ return;
+
+L_Request:
+ callfunc "fightclub_NextBattle";
+ return;
}
function|script|fightclub_NextBattle|, // ** called when a duel is finished
@@ -116,40 +116,40 @@ function|script|fightclub_NextBattle|, // ** called when a duel is finished
set $@Duel_Loop, 1; // start the loop at 1
goto L_Loop;
- L_Loop: // here we shift the array to the left
- if($@Duel_Queue_ID[$@Duel_Loop] < 1) goto L_Empty;
- set $@Duel_Queue_Red$[($@Duel_Loop - 1)], $@Duel_Queue_Red$[$@Duel_Loop];
- set $@Duel_Queue_Red$[$@Duel_Loop], ""; // it is always important to clean
- set $@Duel_Queue_Blue$[($@Duel_Loop - 1)], $@Duel_Queue_Blue$[$@Duel_Loop];
- set $@Duel_Queue_Blue$[$@Duel_Loop], "";
- set $@Duel_Queue_ID[($@Duel_Loop - 1)], $@Duel_Queue_ID[$@Duel_Loop];
- set $@Duel_Queue_ID[$@Duel_Loop], 0;
- set $@Duel_Loop, ($@Duel_Loop + 1);
- if($@Duel_Loop >= getarraysize($@Duel_Queue_ID)) goto L_Proceed;
- goto L_Loop;
-
- L_Empty:
- // the queue is now empty
- return;
+L_Loop: // here we shift the array to the left
+ if($@Duel_Queue_ID[$@Duel_Loop] < 1) goto L_Empty;
+ set $@Duel_Queue_Red$[($@Duel_Loop - 1)], $@Duel_Queue_Red$[$@Duel_Loop];
+ set $@Duel_Queue_Red$[$@Duel_Loop], ""; // it is always important to clean
+ set $@Duel_Queue_Blue$[($@Duel_Loop - 1)], $@Duel_Queue_Blue$[$@Duel_Loop];
+ set $@Duel_Queue_Blue$[$@Duel_Loop], "";
+ set $@Duel_Queue_ID[($@Duel_Loop - 1)], $@Duel_Queue_ID[$@Duel_Loop];
+ set $@Duel_Queue_ID[$@Duel_Loop], 0;
+ set $@Duel_Loop, ($@Duel_Loop + 1);
+ if($@Duel_Loop >= getarraysize($@Duel_Queue_ID)) goto L_Proceed;
+ goto L_Loop;
- L_Proceed:
- callfunc "fightclub_CleanStage";
- set $@Duel_CurrentDuel, $@Duel_Queue_ID[0]; // since the array is shifted, the index is always 0
- set $Duel_LastDuel, $@Duel_Queue_ID[0]; // this is used to keep the same index across reboots
- set $@Duel_BluePlayer, getcharid(3,$@Duel_Queue_Blue$[0]);
- set $@Duel_RedPlayer, getcharid(3,$@Duel_Queue_Red$[0]);
- if(attachrid($@Duel_BluePlayer) != 1) goto L_Missing;
- if(attachrid($@Duel_RedPlayer) == 1) goto L_Proceed2;
- goto L_Missing;
-
- L_Missing:
- callfunc "fightclub_CleanStage";
- callfunc "fightclub_NextBattle";
- return;
+L_Empty:
+ // the queue is now empty
+ return;
- L_Proceed2:
- addtimer ($@Duel_TimeBeforeNext * 1000), "#FightClub#utils::OnDelayedNextBattle";
- return;
+L_Proceed:
+ callfunc "fightclub_CleanStage";
+ set $@Duel_CurrentDuel, $@Duel_Queue_ID[0]; // since the array is shifted, the index is always 0
+ set $Duel_LastDuel, $@Duel_Queue_ID[0]; // this is used to keep the same index across reboots
+ set $@Duel_BluePlayer, getcharid(3,$@Duel_Queue_Blue$[0]);
+ set $@Duel_RedPlayer, getcharid(3,$@Duel_Queue_Red$[0]);
+ if(attachrid($@Duel_BluePlayer) != 1) goto L_Missing;
+ if(attachrid($@Duel_RedPlayer) == 1) goto L_Proceed2;
+ goto L_Missing;
+
+L_Missing:
+ callfunc "fightclub_CleanStage";
+ callfunc "fightclub_NextBattle";
+ return;
+
+L_Proceed2:
+ addtimer ($@Duel_TimeBeforeNext * 1000), "#FightClub#utils::OnDelayedNextBattle";
+ return;
}
function|script|fightclub_NextBattleProceed|, // ** called after the delay
@@ -172,10 +172,10 @@ function|script|fightclub_StartBattle|,
callfunc "fightclub_enter";
return;
- L_Missing:
- callfunc "fightclub_CleanStage";
- callfunc "fightclub_NextBattle";
- return;
+L_Missing:
+ callfunc "fightclub_CleanStage";
+ callfunc "fightclub_NextBattle";
+ return;
}
function|script|fightclub_TimeOut|,
@@ -190,10 +190,10 @@ function|script|fightclub_TimeOut|,
callfunc "fightclub_NextBattle";
return;
- L_Missing:
- callfunc "fightclub_CleanStage";
- callfunc "fightclub_NextBattle";
- return;
+L_Missing:
+ callfunc "fightclub_CleanStage";
+ callfunc "fightclub_NextBattle";
+ return;
}
function|script|fightclub_Intrusion|, // ** called when someone uninvited is on stage
@@ -232,40 +232,40 @@ function|script|fightclub_Missing|, // ** called when the red or blue player dis
if (attachrid($@Duel_RedPlayer) == 1) goto L_Proceed;
goto L_Resume; // can't attach either of them (this is not a problem since it means they are offline so their vars are clean anyway)
- L_Proceed:
- if($@Duel_Missing == 1) goto L_BlueWins;
- goto L_RedWins;
-
- L_BlueWins:
- donpcevent "Rouge#Duels::OnAnnounceBlueForfeit";
- set $@duel_winner, $@Duel_BluePlayer;
- callfunc "fightclub_Victory";
- goto L_Clean;
-
- L_RedWins:
- donpcevent "Rouge#Duels::OnAnnounceRedForfeit";
- set $@duel_winner, $@Duel_RedPlayer;
- callfunc "fightclub_Victory";
- goto L_Clean;
-
- L_KillBlue:
- callfunc "fightclub_exit";
- if(attachrid($@Duel_RedPlayer) == 1) goto L_KillRed;
- goto L_Resume;
-
- L_KillRed:
- callfunc "fightclub_exit";
- goto L_Resume;
-
- L_Clean:
- if(attachrid($@Duel_BluePlayer) == 1) goto L_KillBlue;
- if(attachrid($@Duel_RedPlayer) == 1) goto L_KillRed;
- goto L_Resume; // couldn't kill them
-
- L_Resume:
- callfunc "fightclub_CleanStage";
- callfunc "fightclub_NextBattle";
- return;
+L_Proceed:
+ if($@Duel_Missing == 1) goto L_BlueWins;
+ goto L_RedWins;
+
+L_BlueWins:
+ donpcevent "Rouge#Duels::OnAnnounceBlueForfeit";
+ set $@duel_winner, $@Duel_BluePlayer;
+ callfunc "fightclub_Victory";
+ goto L_Clean;
+
+L_RedWins:
+ donpcevent "Rouge#Duels::OnAnnounceRedForfeit";
+ set $@duel_winner, $@Duel_RedPlayer;
+ callfunc "fightclub_Victory";
+ goto L_Clean;
+
+L_KillBlue:
+ callfunc "fightclub_exit";
+ if(attachrid($@Duel_RedPlayer) == 1) goto L_KillRed;
+ goto L_Resume;
+
+L_KillRed:
+ callfunc "fightclub_exit";
+ goto L_Resume;
+
+L_Clean:
+ if(attachrid($@Duel_BluePlayer) == 1) goto L_KillBlue;
+ if(attachrid($@Duel_RedPlayer) == 1) goto L_KillRed;
+ goto L_Resume; // couldn't kill them
+
+L_Resume:
+ callfunc "fightclub_CleanStage";
+ callfunc "fightclub_NextBattle";
+ return;
}
function|script|fightclub_StartUp|, // ** called after the server boots up
@@ -309,36 +309,36 @@ function|script|fightclub_setrules|, // ** called by npc; allows the player to c
{
goto L_Main;
- L_Main:
- mes "Your rules are the following: "; mes "";
- callfunc "fightclub_getrules";
- mes ""; mes "What do you want to do?";
- menu
- "Change my rules.", L_Start,
- "Nevermind.", L_Return;
-
- L_Start:
- set Duel_NoMagic, 1; // set the rule to 1 to enable it
- goto L_NoMagic;
-
- L_NoMagic:
- if(Duel_NoMagic != 1) goto L_Done;
- mes "Do you want to allow magic?";
- mes "If disabled, the fighters will not be able to use any kind of spell.";
- menu
- "Yes.", L_NoMagicYes,
- "No.", L_Done;
- L_NoMagicYes:
- set Duel_NoMagic, 0;
- goto L_Done;
-
- L_Done:
- next;
- mes "You have succesfully changed your options.";
- goto L_Main;
-
- L_Return:
- return;
+L_Main:
+ mes "Your rules are the following: "; mes "";
+ callfunc "fightclub_getrules";
+ mes ""; mes "What do you want to do?";
+ menu
+ "Change my rules.", L_Start,
+ "Nevermind.", L_Return;
+
+L_Start:
+ set Duel_NoMagic, 1; // set the rule to 1 to enable it
+ goto L_NoMagic;
+
+L_NoMagic:
+ if(Duel_NoMagic != 1) goto L_Done;
+ mes "Do you want to allow magic?";
+ mes "If disabled, the fighters will not be able to use any kind of spell.";
+ menu
+ "Yes.", L_NoMagicYes,
+ "No.", L_Done;
+L_NoMagicYes:
+ set Duel_NoMagic, 0;
+ goto L_Done;
+
+L_Done:
+ next;
+ mes "You have succesfully changed your options.";
+ goto L_Main;
+
+L_Return:
+ return;
}
function|script|fightclub_death|, // ** called by event handler whenever someone dies
@@ -347,57 +347,57 @@ function|script|fightclub_death|, // ** called by event handler whenever someone
if(@killerrid != 0) goto L_Murdered;
goto L_Killed;
- L_Killed:
- if(getcharid(3) == $@Duel_RedPlayer) goto L_BlueWins;
- goto L_RedWins;
-
- L_RedWins:
- donpcevent "Rouge#Duels::OnAnnounceRedWins";
- set $@duel_winner, $@Duel_RedPlayer;
- callfunc "fightclub_Victory";
- callfunc "fightclub_exit";
- if(attachrid($@Duel_RedPlayer) == 1) goto L_RedWins2;
- goto L_Missing;
-
- L_RedWins2:
- callfunc "fightclub_exit";
- goto L_Proceed;
-
- L_BlueWins:
- donpcevent "Rouge#Duels::OnAnnounceBlueWins";
- set $@duel_winner, $@Duel_BluePlayer;
- callfunc "fightclub_Victory";
- callfunc "fightclub_exit";
- if(attachrid($@Duel_BluePlayer) == 1) goto L_BlueWins2;
- goto L_Missing;
-
- L_Missing:
- callfunc "fightclub_CleanStage";
- callfunc "fightclub_NextBattle";
- return;
+L_Killed:
+ if(getcharid(3) == $@Duel_RedPlayer) goto L_BlueWins;
+ goto L_RedWins;
- L_BlueWins2:
- callfunc "fightclub_exit";
- goto L_Proceed;
+L_RedWins:
+ donpcevent "Rouge#Duels::OnAnnounceRedWins";
+ set $@duel_winner, $@Duel_RedPlayer;
+ callfunc "fightclub_Victory";
+ callfunc "fightclub_exit";
+ if(attachrid($@Duel_RedPlayer) == 1) goto L_RedWins2;
+ goto L_Missing;
- L_Proceed:
- callfunc "fightclub_CleanStage";
- callfunc "fightclub_NextBattle";
- return;
+L_RedWins2:
+ callfunc "fightclub_exit";
+ goto L_Proceed;
- L_Murdered:
- if(($@Duel_RedPlayer != @killerrid) && ($@Duel_BluePlayer != @killerrid)) goto L_Stranger;
- goto L_Killed; // now we proceed the same way as L_Killed
+L_BlueWins:
+ donpcevent "Rouge#Duels::OnAnnounceBlueWins";
+ set $@duel_winner, $@Duel_BluePlayer;
+ callfunc "fightclub_Victory";
+ callfunc "fightclub_exit";
+ if(attachrid($@Duel_BluePlayer) == 1) goto L_BlueWins2;
+ goto L_Missing;
- L_Stranger:
- // the victim was not murdered by its adversary (wtf)
- if(debug) donpcevent "Debug#Duels::OnKillerNotInDuel";
- callfunc "fightclub_EmergencyWipe";
- end;
+L_Missing:
+ callfunc "fightclub_CleanStage";
+ callfunc "fightclub_NextBattle";
+ return;
- L_NoDuel:
- if(debug) donpcevent "Debug#Duels::OnVictimNotInDuel";
- end;
+L_BlueWins2:
+ callfunc "fightclub_exit";
+ goto L_Proceed;
+
+L_Proceed:
+ callfunc "fightclub_CleanStage";
+ callfunc "fightclub_NextBattle";
+ return;
+
+L_Murdered:
+ if(($@Duel_RedPlayer != @killerrid) && ($@Duel_BluePlayer != @killerrid)) goto L_Stranger;
+ goto L_Killed; // now we proceed the same way as L_Killed
+
+L_Stranger:
+ // the victim was not murdered by its adversary (wtf)
+ if(debug) donpcevent "Debug#Duels::OnKillerNotInDuel";
+ callfunc "fightclub_EmergencyWipe";
+ end;
+
+L_NoDuel:
+ if(debug) donpcevent "Debug#Duels::OnVictimNotInDuel";
+ end;
}
function|script|fightclub_enter|, // ** called every time a player enters the ring
@@ -428,11 +428,11 @@ function|script|fightclub_exit|, // ** called every time a player exits the ring
gmcommand "@killer";
goto L_Clean;
- L_Clean:
- set @killer, 0; // the player no longer have @killer
- gmcommand "@alive"; // refill hp/mana
- sc_end 132; sc_end 14; sc_end 37; sc_end 185; // remove effects
- message strcharinfo(0), "Thank you for participating in the fight club!";
- if(@Duel_HasPendingRequest) message strcharinfo(0), "You have received a new duel request.";
- return;
+L_Clean:
+ set @killer, 0; // the player no longer have @killer
+ gmcommand "@alive"; // refill hp/mana
+ sc_end 132; sc_end 14; sc_end 37; sc_end 185; // remove effects
+ message strcharinfo(0), "Thank you for participating in the fight club!";
+ if(@Duel_HasPendingRequest) message strcharinfo(0), "You have received a new duel request.";
+ return;
}
diff --git a/world/map/npc/009-7/debug.txt b/world/map/npc/009-7/debug.txt
index a06d25ec..2baba28b 100644
--- a/world/map/npc/009-7/debug.txt
+++ b/world/map/npc/009-7/debug.txt
@@ -1,136 +1,136 @@
function|script|fightclub_Debug|,
{
goto L_Menu;
- L_Menu:
- next;
- set @bme,0; if(($fightclub_enabled % 6) == 3) set @bme,1;
- set @due,0; if(($fightclub_enabled % 5) == 3) set @due,1;
- mes "[Global]";
- mes "$Duel_Enabled: " + @due;
- mes "$fightclub_bm_enabled: " + @bme;
- mes "$@fightclub_password$: " + $fightclub_password$;
- mes "$@Duel_TimeBeforeNext: " + $@Duel_TimeBeforeNext;
- mes "$@Duel_TimeBeforeWarp: " + $@Duel_TimeBeforeWarp;
- mes "$@Duel_TimeBeforeStart: " + $@Duel_TimeBeforeStart;
- mes "$@Duel_TimeLimit: " + $@Duel_TimeLimit;
- mes "$@Duel_QueueLimit: " + $@Duel_QueueLimit;
- mes "$@Duel_PlayerQueueLimit: " + $@Duel_PlayerQueueLimit;
- mes "$Duel_LastDuel: " + $Duel_LastDuel;
- mes "";
- mes "[User]";
- mes "@Duel_Fighter: " + @Duel_Fighter;
- next;
- menu
- "[G] Toggle $Duel_Enabled", L_DuelEnabled,
- "[G] Toggle $fightclub_bm_enabled", L_BmEnabled,
- "[G] Set $@fightclub_password$", L_FightclubPassword,
- "[G] Set $@Duel_TimeBeforeNext", L_TimeBeforeNext,
- "[G] Set $@Duel_TimeBeforeWarp", L_TimeBeforeWarp,
- "[G] Set $@Duel_TimeBeforeStart", L_TimeBeforeStart,
- "[G] Set $@Duel_TimeLimit", L_TimeLimit,
- "[G] Set $@Duel_QueueLimit", L_QueueLimit,
- "[G] Set $@Duel_PlayerQueueLimit", L_PlayerQueueLimit,
- "[G] Set $Duel_LastDuel", L_LastDuel,
- "[U] Toggle @Duel_Fighter", L_DuelFighter,
- "Restart fightclub.", L_Restart,
- "Nevermind.", L_End;
-
- L_DuelEnabled:
- if(@due < 1) goto L_DuelEnabled2;
- set $fightclub_enabled, 9;
- if(@bme < 1) set $fightclub_enabled, 1;
- goto L_Menu;
- L_DuelEnabled2:
- set $fightclub_enabled, 8;
- if(@bme == 1) set $fightclub_enabled, 3;
- goto L_Menu;
-
- L_BmEnabled:
- if(@bme < 1) goto L_BmEnabled2;
- set $fightclub_enabled, 8;
- if(@due < 1) set $fightclub_enabled, 1;
- goto L_Menu;
- L_BmEnabled2:
- set $fightclub_enabled, 9;
- if(@due == 1) set $fightclub_enabled, 3;
- goto L_Menu;
-
- L_DuelFighter:
- if(@Duel_Fighter < 1) goto L_DuelFighter2;
- set @Duel_Fighter, 0;
- goto L_Menu;
- L_DuelFighter2:
- set @Duel_Fighter, 1;
- goto L_Menu;
-
- L_TimeBeforeNext:
- mes "range: 1~500";
- input @time;
- if((@time < 1) || (@time > 500)) goto L_OutOfRange;
- set $@Duel_TimeBeforeNext, @time;
- goto L_Menu;
-
- L_TimeBeforeWarp:
- mes "range: 1~500";
- input @time;
- if((@time < 1) || (@time > 500)) goto L_OutOfRange;
- set $@Duel_TimeBeforeWarp, @time;
- goto L_Menu;
-
- L_TimeBeforeStart:
- mes "range: 1~500";
- input @time;
- if((@time < 1) || (@time > 500)) goto L_OutOfRange;
- set $@Duel_TimeBeforeStart, @time;
- goto L_Menu;
-
- L_TimeLimit:
- mes "range: 1~900";
- input @time;
- if((@time < 1) || (@time > 900)) goto L_OutOfRange;
- set $@Duel_TimeLimit, @time;
- goto L_Menu;
-
- L_QueueLimit:
- mes "range: 1~20";
- input @limit;
- if((@limit < 1) || (@limit > 20)) goto L_OutOfRange;
- set $@Duel_QueueLimit, @limit;
- goto L_Menu;
-
- L_PlayerQueueLimit:
- mes "range: 1~5";
- input @limit;
- if((@limit < 1) || (@limit > 5)) goto L_OutOfRange;
- set $@Duel_PlayerQueueLimit, @limit;
- goto L_Menu;
-
- L_LastDuel:
- mes "range: 1+";
- mes "[R] This will trigger a reboot";
- input @last;
- if(@last < 1) goto L_OutOfRange;
- set $Duel_LastDuel, @last;
- next;
- goto L_Restart;
-
- L_FightclubPassword:
- input @pass$;
- if(@pass$ == "") goto L_OutOfRange;
- set $@fightclub_password$, @pass$;
- goto L_Menu;
-
- L_OutOfRange:
- mes "Value out of range or empty.";
- goto L_Menu;
-
- L_Restart:
- callfunc "fightclub_EmergencyWipe";
- mes "The temporary variables have been reset.";
- goto L_Menu;
-
- L_End:
- return;
+L_Menu:
+ next;
+ set @bme,0; if(($fightclub_enabled % 6) == 3) set @bme,1;
+ set @due,0; if(($fightclub_enabled % 5) == 3) set @due,1;
+ mes "[Global]";
+ mes "$Duel_Enabled: " + @due;
+ mes "$fightclub_bm_enabled: " + @bme;
+ mes "$@fightclub_password$: " + $fightclub_password$;
+ mes "$@Duel_TimeBeforeNext: " + $@Duel_TimeBeforeNext;
+ mes "$@Duel_TimeBeforeWarp: " + $@Duel_TimeBeforeWarp;
+ mes "$@Duel_TimeBeforeStart: " + $@Duel_TimeBeforeStart;
+ mes "$@Duel_TimeLimit: " + $@Duel_TimeLimit;
+ mes "$@Duel_QueueLimit: " + $@Duel_QueueLimit;
+ mes "$@Duel_PlayerQueueLimit: " + $@Duel_PlayerQueueLimit;
+ mes "$Duel_LastDuel: " + $Duel_LastDuel;
+ mes "";
+ mes "[User]";
+ mes "@Duel_Fighter: " + @Duel_Fighter;
+ next;
+ menu
+ "[G] Toggle $Duel_Enabled", L_DuelEnabled,
+ "[G] Toggle $fightclub_bm_enabled", L_BmEnabled,
+ "[G] Set $@fightclub_password$", L_FightclubPassword,
+ "[G] Set $@Duel_TimeBeforeNext", L_TimeBeforeNext,
+ "[G] Set $@Duel_TimeBeforeWarp", L_TimeBeforeWarp,
+ "[G] Set $@Duel_TimeBeforeStart", L_TimeBeforeStart,
+ "[G] Set $@Duel_TimeLimit", L_TimeLimit,
+ "[G] Set $@Duel_QueueLimit", L_QueueLimit,
+ "[G] Set $@Duel_PlayerQueueLimit", L_PlayerQueueLimit,
+ "[G] Set $Duel_LastDuel", L_LastDuel,
+ "[U] Toggle @Duel_Fighter", L_DuelFighter,
+ "Restart fightclub.", L_Restart,
+ "Nevermind.", L_End;
+
+L_DuelEnabled:
+ if(@due < 1) goto L_DuelEnabled2;
+ set $fightclub_enabled, 9;
+ if(@bme < 1) set $fightclub_enabled, 1;
+ goto L_Menu;
+L_DuelEnabled2:
+ set $fightclub_enabled, 8;
+ if(@bme == 1) set $fightclub_enabled, 3;
+ goto L_Menu;
+
+L_BmEnabled:
+ if(@bme < 1) goto L_BmEnabled2;
+ set $fightclub_enabled, 8;
+ if(@due < 1) set $fightclub_enabled, 1;
+ goto L_Menu;
+L_BmEnabled2:
+ set $fightclub_enabled, 9;
+ if(@due == 1) set $fightclub_enabled, 3;
+ goto L_Menu;
+
+L_DuelFighter:
+ if(@Duel_Fighter < 1) goto L_DuelFighter2;
+ set @Duel_Fighter, 0;
+ goto L_Menu;
+L_DuelFighter2:
+ set @Duel_Fighter, 1;
+ goto L_Menu;
+
+L_TimeBeforeNext:
+ mes "range: 1~500";
+ input @time;
+ if((@time < 1) || (@time > 500)) goto L_OutOfRange;
+ set $@Duel_TimeBeforeNext, @time;
+ goto L_Menu;
+
+L_TimeBeforeWarp:
+ mes "range: 1~500";
+ input @time;
+ if((@time < 1) || (@time > 500)) goto L_OutOfRange;
+ set $@Duel_TimeBeforeWarp, @time;
+ goto L_Menu;
+
+L_TimeBeforeStart:
+ mes "range: 1~500";
+ input @time;
+ if((@time < 1) || (@time > 500)) goto L_OutOfRange;
+ set $@Duel_TimeBeforeStart, @time;
+ goto L_Menu;
+
+L_TimeLimit:
+ mes "range: 1~900";
+ input @time;
+ if((@time < 1) || (@time > 900)) goto L_OutOfRange;
+ set $@Duel_TimeLimit, @time;
+ goto L_Menu;
+
+L_QueueLimit:
+ mes "range: 1~20";
+ input @limit;
+ if((@limit < 1) || (@limit > 20)) goto L_OutOfRange;
+ set $@Duel_QueueLimit, @limit;
+ goto L_Menu;
+
+L_PlayerQueueLimit:
+ mes "range: 1~5";
+ input @limit;
+ if((@limit < 1) || (@limit > 5)) goto L_OutOfRange;
+ set $@Duel_PlayerQueueLimit, @limit;
+ goto L_Menu;
+
+L_LastDuel:
+ mes "range: 1+";
+ mes "[R] This will trigger a reboot";
+ input @last;
+ if(@last < 1) goto L_OutOfRange;
+ set $Duel_LastDuel, @last;
+ next;
+ goto L_Restart;
+
+L_FightclubPassword:
+ input @pass$;
+ if(@pass$ == "") goto L_OutOfRange;
+ set $@fightclub_password$, @pass$;
+ goto L_Menu;
+
+L_OutOfRange:
+ mes "Value out of range or empty.";
+ goto L_Menu;
+
+L_Restart:
+ callfunc "fightclub_EmergencyWipe";
+ mes "The temporary variables have been reset.";
+ goto L_Menu;
+
+L_End:
+ return;
}
009-7.gat,41,45,0|script|Debug#Duels|181,
@@ -140,12 +140,20 @@ function|script|fightclub_Debug|,
callfunc "fightclub_Debug";
end;
- OnInit:
- if(!debug) disablenpc "Debug#Duels";
- end;
+OnInit:
+ if(!debug) disablenpc "Debug#Duels";
+ end;
// debug messages below
- OnKillerNotInDuel: npctalk "WARNING: The victim was not killed by its adversary. Aborting duel..."; end;
- OnVictimNotInDuel: npctalk "WARNING: The victim is not part of the duel"; end;
- OnVictimInDuelNoDuel: npctalk "WARNING: The victim is part of the duel but no duel is ongoing at the moment."; end;
+OnKillerNotInDuel:
+ npctalk "WARNING: The victim was not killed by its adversary. Aborting duel...";
+ end;
+
+OnVictimNotInDuel:
+ npctalk "WARNING: The victim is not part of the duel";
+ end;
+
+OnVictimInDuelNoDuel:
+ npctalk "WARNING: The victim is part of the duel but no duel is ongoing at the moment.";
+ end;
}
diff --git a/world/map/npc/009-7/eventHandler.txt b/world/map/npc/009-7/eventHandler.txt
index 2ad9ca0a..c23ae3b7 100644
--- a/world/map/npc/009-7/eventHandler.txt
+++ b/world/map/npc/009-7/eventHandler.txt
@@ -4,9 +4,10 @@
{
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;
+
+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,
{
@@ -18,139 +19,139 @@
{
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;
+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;
+OnDelayedStart:
+ callfunc "fightclub_StartBattle";
+ end;
- OnDelayedNextBattle:
- callfunc "fightclub_NextBattleProceed";
- end;
+OnDelayedNextBattle:
+ callfunc "fightclub_NextBattleProceed";
+ end;
- OnBecomeKiller:
- callfunc "fightclub_enter_killer";
- 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;
+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;
+OnStartTimer:
+ set $@Duel_TotalTime, 0;
+ goto L_StartTimer;
- OnStopTimer:
- stopnpctimer;
- end;
+OnStopTimer:
+ stopnpctimer;
+ end;
- OnTimer1000:
- set $@Duel_TotalTime, ($@Duel_TotalTime + 1);
- if($@Duel_TotalTime >= $@Duel_TimeLimit) goto L_TimeOut;
- goto L_StartTimer;
+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_TimeOut:
+ stopnpctimer;
+ callfunc "fightclub_TimeOut";
+ end;
- L_StartTimer:
- setnpctimer 0;
- initnpctimer;
- end;
+L_StartTimer:
+ setnpctimer 0;
+ initnpctimer;
+ end;
- OnInit:
- set $@Duel_TotalTime, 0;
- 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;
-
- OnPCKilledEvent: // fired with the RID of the victim
- set @killer, 0;
- if(@Duel_Fighter != 1) end;
- if(getmap() != "009-7") end;
- set $@duel_loser, getcharid(3); // grab the rid of the victim
- set $@duel_winner, @killerrid; // grab the rid of the killer
- set @killerrid, 0; // reset killerid
- callfunc "fightclub_death";
- end;
-
- OnPCDieEvent: // fired with the RID of the victim
- set @killer, 0;
- if(@Duel_Fighter != 1) end;
- if (($@Duel_CurrentDuel < 1) || ($@Duel_Started != 1)) goto L_Reset;
- if(getmap() != "009-7") end;
- set @killerrid, 0; // since the player was not murdered, the killerrid is 0
- set $@duel_loser, getcharid(3); // grab the rid of the victim
- callfunc "fightclub_death";
- end;
-
- L_Reset: // the player has duel_fighter but no duel is ongoing (happens if the player quit before fightclub_exit can be called)
- if(debug) donpcevent "Debug#Duels::OnVictimInDuelNoDuel";
- callfunc "fightclub_DestroyMe"; // here we attempt to resume the interrupted procedure
- 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;
+
+OnPCKilledEvent: // fired with the RID of the victim
+ set @killer, 0;
+ if(@Duel_Fighter != 1) end;
+ if(getmap() != "009-7") end;
+ set $@duel_loser, getcharid(3); // grab the rid of the victim
+ set $@duel_winner, @killerrid; // grab the rid of the killer
+ set @killerrid, 0; // reset killerid
+ callfunc "fightclub_death";
+ end;
+
+OnPCDieEvent: // fired with the RID of the victim
+ set @killer, 0;
+ if(@Duel_Fighter != 1) end;
+ if (($@Duel_CurrentDuel < 1) || ($@Duel_Started != 1)) goto L_Reset;
+ if(getmap() != "009-7") end;
+ set @killerrid, 0; // since the player was not murdered, the killerrid is 0
+ set $@duel_loser, getcharid(3); // grab the rid of the victim
+ callfunc "fightclub_death";
+ end;
+
+L_Reset: // the player has duel_fighter but no duel is ongoing (happens if the player quit before fightclub_exit can be called)
+ if(debug) donpcevent "Debug#Duels::OnVictimInDuelNoDuel";
+ callfunc "fightclub_DestroyMe"; // here we attempt to resume the interrupted procedure
+ end;
}
diff --git a/world/map/npc/009-7/npcs.txt b/world/map/npc/009-7/npcs.txt
index dff26fb2..11e7698b 100644
--- a/world/map/npc/009-7/npcs.txt
+++ b/world/map/npc/009-7/npcs.txt
@@ -5,14 +5,14 @@
$@fightclub_password$ + ".", L_Enter,
"I have no clue.", L_Close;
- L_Enter:
- mes "Correct. You may enter.";
- close2;
- warp "009-7.gat", 22, 21;
- end;
+L_Enter:
+ mes "Correct. You may enter.";
+ close2;
+ warp "009-7.gat", 22, 21;
+ end;
- L_Close:
- close;
+L_Close:
+ close;
}
009-7.gat,34,23,0|shop|Bartender#Duels|177,Beer :-1,IronPotion :-1,ConcentrationPotion :-1,SmallManaElixir :2400,BottleOfWater :-1,Milk :-1