diff options
Diffstat (limited to 'world/map/npc/009-7')
-rw-r--r-- | world/map/npc/009-7/battlemaster.txt | 120 | ||||
-rw-r--r-- | world/map/npc/009-7/core.txt | 536 | ||||
-rw-r--r-- | world/map/npc/009-7/debug.txt | 224 | ||||
-rw-r--r-- | world/map/npc/009-7/eventHandler.txt | 188 | ||||
-rw-r--r-- | world/map/npc/009-7/npcs.txt | 18 | ||||
-rw-r--r-- | world/map/npc/009-7/rouge.txt | 142 |
6 files changed, 614 insertions, 614 deletions
diff --git a/world/map/npc/009-7/battlemaster.txt b/world/map/npc/009-7/battlemaster.txt index 776950c0..cdb79923 100644 --- a/world/map/npc/009-7/battlemaster.txt +++ b/world/map/npc/009-7/battlemaster.txt @@ -1,49 +1,49 @@ 009-7.gat,40,35,0|script|Battle Master#Duels|322, { - if(($fightclub_enabled % 6) != 3) goto L_Disabled; - mes "[Battle Master]"; - mes "\"Hey, you seem tough enough! Would you like to prove your skills?\""; - next; - menu - "PvP Cave (50gp)", L_PVP, - "Last Man Standing (150gp)", L_Brodomir, - "Nevermind.", L_Next; + if(($fightclub_enabled % 6) != 3) goto L_Disabled; + mes "[Battle Master]"; + mes "\"Hey, you seem tough enough! Would you like to prove your skills?\""; + next; + menu + "PvP Cave (50gp)", L_PVP, + "Last Man Standing (150gp)", L_Brodomir, + "Nevermind.", L_Next; L_Disabled: - mes "[Battle Master]"; - mes "I am busy, come back later."; - close; + mes "[Battle Master]"; + mes "I am busy, come back later."; + close; L_Next: - mes "[Battle Master]"; - mes "\"Ha ha, coward.\""; - close; + mes "[Battle Master]"; + mes "\"Ha ha, coward.\""; + close; L_Brodomir: - if (Zeny < 150) goto L_NoMoney; - set Zeny, Zeny - 150; - mes "[Battle Master]"; - mes "\"Get ready!\""; - close2; - set DUELS, DUELS | $@DuelPvpBit; // tell the arena to send the player back here when he exits - warp "009-6.gat", 33, 37; - savepoint "009-7.gat", 39, 37; - end; + if (Zeny < 150) goto L_NoMoney; + set Zeny, Zeny - 150; + mes "[Battle Master]"; + mes "\"Get ready!\""; + close2; + set DUELS, DUELS | $@DuelPvpBit; // tell the arena to send the player back here when he exits + warp "009-6.gat", 33, 37; + savepoint "009-7.gat", 39, 37; + end; L_PVP: - if (Zeny < 50) goto L_NoMoney; - set Zeny, Zeny - 50; - mes "[Battle Master]"; - mes "\"Get ready!\""; - close2; - set DUELS, DUELS | $@DuelPvpBit; // tell the arena to send the player back here when he dies - warp "001-3.gat", 0, 0; - savepoint "009-7.gat", 39, 37; - end; + if (Zeny < 50) goto L_NoMoney; + set Zeny, Zeny - 50; + mes "[Battle Master]"; + mes "\"Get ready!\""; + close2; + set DUELS, DUELS | $@DuelPvpBit; // tell the arena to send the player back here when he dies + warp "001-3.gat", 0, 0; + savepoint "009-7.gat", 39, 37; + end; L_NoMoney: - mes "\"Wait a second, you don't have enough money.\""; - close; + mes "\"Wait a second, you don't have enough money.\""; + close; } @@ -51,52 +51,52 @@ L_NoMoney: function|script|fightclub_GoBack|, { - set @Duel_PVP, DUELS & $@DuelPvpBit; - if((@Duel_PVP == 0) && ((getmap() == "009-6") || (getmap() == "009-5"))) goto L_NormalExit; - if((getmap() != "009-6") && (getmap() != "009-5") && (getmap() != "001-2") && (getmap() != "001-3")) goto L_Clean; - if(@Duel_PVP != 0) goto L_GoBack; - return; + set @Duel_PVP, DUELS & $@DuelPvpBit; + if((@Duel_PVP == 0) && ((getmap() == "009-6") || (getmap() == "009-5"))) goto L_NormalExit; + if((getmap() != "009-6") && (getmap() != "009-5") && (getmap() != "001-2") && (getmap() != "001-3")) goto L_Clean; + if(@Duel_PVP != 0) goto L_GoBack; + return; L_GoBack: - set DUELS, DUELS &~ $@DuelPvpBit; - warp "009-7.gat", 39, 37; - gmcommand "@alive"; - message strcharinfo(0), "Thank you for participating!"; - return; + set DUELS, DUELS &~ $@DuelPvpBit; + warp "009-7.gat", 39, 37; + gmcommand "@alive"; + message strcharinfo(0), "Thank you for participating!"; + return; L_Clean: - set DUELS, DUELS &~ $@DuelPvpBit; - return; + set DUELS, DUELS &~ $@DuelPvpBit; + return; OnResave: - if(@Duel_PVP == 0) end; - savepoint "009-7.gat", 39, 37; - return; + if(@Duel_PVP == 0) end; + savepoint "009-7.gat", 39, 37; + return; L_NormalExit: - warp "009-3.gat", 162, 82; - gmcommand "@alive"; - return; + warp "009-3.gat", 162, 82; + gmcommand "@alive"; + return; } 009-6.gat,36,48,0|script|#GoBack2#Duels|127,0,1, { - callfunc "fightclub_GoBack"; - end; + callfunc "fightclub_GoBack"; + end; } 009-5.gat,53,74,0|script|#GoBack3#Duels|127,3,1, { - callfunc "fightclub_GoBack"; - end; + callfunc "fightclub_GoBack"; + end; } 001-2.gat,130,22,0|script|#GoBack4#Duels|127,1,1, { - callfunc "fightclub_GoBack"; - end; + callfunc "fightclub_GoBack"; + end; } 001-3.gat,73,28,0|script|#GoBack#Duels|127,0,1, { - callfunc "fightclub_GoBack"; - end; + callfunc "fightclub_GoBack"; + end; } diff --git a/world/map/npc/009-7/core.txt b/world/map/npc/009-7/core.txt index 9ec0ab77..a6c0c0f0 100644 --- a/world/map/npc/009-7/core.txt +++ b/world/map/npc/009-7/core.txt @@ -2,154 +2,154 @@ function|script|fightclub_sendrequest|, { - set @loop, 0; - goto L_Loop; + 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; + 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; + message @caster_name$, "There is already "+ $@Duel_PlayerQueueLimit +" duel request(s) in the queue of this player, which is the maximum."; + return; L_Exists: - message @caster_name$, "You already requested a duel with this player."; - return; + 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; + 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|, { - set $@fightclub_myself, getcharid(3); - if(@target < 1) goto L_Proceed; // get our own rules - if(attachrid(@target) == 1) goto L_Proceed; - goto L_Missing; + set $@fightclub_myself, getcharid(3); + if(@target < 1) goto L_Proceed; // get our own rules + if(attachrid(@target) == 1) goto L_Proceed; + goto L_Missing; L_Proceed: - set $@Temp_NoMagic, (DUELS & $@NoMagicBit); - if($@fightclub_myself == getcharid(3)) goto L_Proceed2; // the target is ourselves - if(attachrid($@fightclub_myself) == 1) goto L_Proceed2; - goto L_Missing; + set $@Temp_NoMagic, (DUELS & $@NoMagicBit); + 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; + 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; + 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 { - set @Duel_Loop, 0; - goto L_Loop; + 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; + 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; + 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; + 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; + 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; + 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_NotClean: - message @caster_name$, "An error occured: array element not empty. Try again in 5 seconds."; - return; + message @caster_name$, "An error occured: array element not empty. Try again in 5 seconds."; + return; L_FixId: - set $@Duel_Queue_ID[@index], ($Duel_LastDuel + 1); - if($@Duel_CurrentDuel < 1) goto L_Request; - return; + set $@Duel_Queue_ID[@index], ($Duel_LastDuel + 1); + if($@Duel_CurrentDuel < 1) goto L_Request; + return; L_Request: - callfunc "fightclub_NextBattle"; - return; + callfunc "fightclub_NextBattle"; + return; } function|script|fightclub_NextBattle|, // ** called when a duel is finished { - set $@Duel_Queue_Blue$[0], ""; // clean the 0 index - set $@Duel_Queue_Red$[0], ""; - set $@Duel_Queue_ID[0], 0; - set $@Duel_Loop, 1; // start the loop at 1 - goto L_Loop; + set $@Duel_Queue_Blue$[0], ""; // clean the 0 index + set $@Duel_Queue_Red$[0], ""; + set $@Duel_Queue_ID[0], 0; + 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; + 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; + // the queue is now empty + 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; + 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; + callfunc "fightclub_CleanStage"; + callfunc "fightclub_NextBattle"; + return; L_Proceed2: - addtimer ($@Duel_TimeBeforeNext * 1000), "#FightClub#utils::OnDelayedNextBattle"; - return; + addtimer ($@Duel_TimeBeforeNext * 1000), "#FightClub#utils::OnDelayedNextBattle"; + return; } function|script|fightclub_NextBattleProceed|, // ** called after the delay @@ -163,279 +163,279 @@ function|script|fightclub_NextBattleProceed|, // ** called after the delay function|script|fightclub_StartBattle|, { - set $@Duel_Started, 1; - npcwarp 40, 45, "Rouge#Duels"; - donpcevent "#FightClub#TimeLimit::OnStartTimer"; - if(attachrid($@Duel_RedPlayer) != 1) goto L_Missing; - callfunc "fightclub_enter"; - if(attachrid($@Duel_BluePlayer) != 1) goto L_Missing; - callfunc "fightclub_enter"; - return; + set $@Duel_Started, 1; + npcwarp 40, 45, "Rouge#Duels"; + donpcevent "#FightClub#TimeLimit::OnStartTimer"; + if(attachrid($@Duel_RedPlayer) != 1) goto L_Missing; + callfunc "fightclub_enter"; + if(attachrid($@Duel_BluePlayer) != 1) goto L_Missing; + callfunc "fightclub_enter"; + return; L_Missing: - callfunc "fightclub_CleanStage"; - callfunc "fightclub_NextBattle"; - return; + callfunc "fightclub_CleanStage"; + callfunc "fightclub_NextBattle"; + return; } function|script|fightclub_TimeOut|, { - debugmes "on time out"; - donpcevent "Rouge#Duels::OnAnnounceTimeOut"; - if(attachrid($@Duel_RedPlayer) != 1) goto L_Missing; - callfunc "fightclub_exit"; - if(attachrid($@Duel_BluePlayer) != 1) goto L_Missing; - callfunc "fightclub_exit"; - callfunc "fightclub_CleanStage"; - callfunc "fightclub_NextBattle"; - return; + debugmes "on time out"; + donpcevent "Rouge#Duels::OnAnnounceTimeOut"; + if(attachrid($@Duel_RedPlayer) != 1) goto L_Missing; + callfunc "fightclub_exit"; + if(attachrid($@Duel_BluePlayer) != 1) goto L_Missing; + callfunc "fightclub_exit"; + callfunc "fightclub_CleanStage"; + callfunc "fightclub_NextBattle"; + return; L_Missing: - callfunc "fightclub_CleanStage"; - callfunc "fightclub_NextBattle"; - return; + callfunc "fightclub_CleanStage"; + callfunc "fightclub_NextBattle"; + return; } function|script|fightclub_Intrusion|, // ** called when someone uninvited is on stage { - // nothing to do here (yet) - return; + // nothing to do here (yet) + return; } function|script|fightclub_EmergencyWipe|, { - callfunc "fightclub_CleanStage"; - callfunc "fightclub_StartUp"; - // TODO: check if everything is clean (function) and mapexit otherwise - return; + callfunc "fightclub_CleanStage"; + callfunc "fightclub_StartUp"; + // TODO: check if everything is clean (function) and mapexit otherwise + return; } function|script|fightclub_Victory|, // ** called whenever someone wins (to handle rewards and bids) { - // TODO: give some sort of reward - // TODO: increase score - // TODO: update leaderboard - return; + // TODO: give some sort of reward + // TODO: increase score + // TODO: update leaderboard + return; } function|script|fightclub_DestroyMe|, // ** called when the player needs to be reset { - callfunc "fightclub_exit"; - percentheal -100, 0; // dying removes @killable, @killer or any temp buff - return; + callfunc "fightclub_exit"; + percentheal -100, 0; // dying removes @killable, @killer or any temp buff + return; } function|script|fightclub_Missing|, // ** called when the red or blue player disappears from stage { - // $@Duel_Missing 1 = red, 2 = blue - if (attachrid($@Duel_BluePlayer) == 1) goto L_Proceed; // we need to attach to at least one player - 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) + // $@Duel_Missing 1 = red, 2 = blue + if (attachrid($@Duel_BluePlayer) == 1) goto L_Proceed; // we need to attach to at least one player + 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; + 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; + 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; + 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; + callfunc "fightclub_exit"; + if(attachrid($@Duel_RedPlayer) == 1) goto L_KillRed; + goto L_Resume; L_KillRed: - callfunc "fightclub_exit"; - goto L_Resume; + 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 + 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; + callfunc "fightclub_CleanStage"; + callfunc "fightclub_NextBattle"; + return; } function|script|fightclub_StartUp|, // ** called after the server boots up { - if($fightclub_enabled < 1) set $fightclub_enabled, 1; // init the (permanent) enabled global (this will only be done once, when the duel system is merged with master) - if($@Duel_TimeBeforeNext < 1) set $@Duel_TimeBeforeNext, 5; // init the (temporary) TimeBeforeNext global - if($@Duel_TimeBeforeWarp < 1) set $@Duel_TimeBeforeWarp, 5; // init the (temporary) TimeBeforeWarp global - if($@Duel_TimeBeforeStart < 1) set $@Duel_TimeBeforeStart, 3; // init the (temporary) TimeBeforeStart global - if($@Duel_TimeLimit < 1) set $@Duel_TimeLimit, 120; // init the (temporary) TimeLimit global - if($@Duel_QueueLimit < 1) set $@Duel_QueueLimit, 5; // init the (temporary) QueueLimit global - if($@Duel_PlayerQueueLimit < 1) set $@Duel_PlayerQueueLimit, 2; // init the (temporary) PlayerQueueLimit global - if($@fightclub_password$ == "") set $@fightclub_password$, "Banana"; // init the (temporary) fightclub_password global - setarray $@Duel_Queue_ID, 0; - cleararray $@Duel_Queue_ID, 0, ($@Duel_QueueLimit + 1); - setarray $@Duel_Queue_Blue$, ""; - cleararray $@Duel_Queue_Blue$, "", ($@Duel_QueueLimit + 1); - setarray $@Duel_Queue_Red$, ""; - cleararray $@Duel_Queue_Red$, "", ($@Duel_QueueLimit + 1); - set $@Duel_TotalTime, 0; - // flags below - set $@DuelPvpBit, (1 << 1); - set $@NoMagicBit, (1 << 2); - return; + if($fightclub_enabled < 1) set $fightclub_enabled, 1; // init the (permanent) enabled global (this will only be done once, when the duel system is merged with master) + if($@Duel_TimeBeforeNext < 1) set $@Duel_TimeBeforeNext, 5; // init the (temporary) TimeBeforeNext global + if($@Duel_TimeBeforeWarp < 1) set $@Duel_TimeBeforeWarp, 5; // init the (temporary) TimeBeforeWarp global + if($@Duel_TimeBeforeStart < 1) set $@Duel_TimeBeforeStart, 3; // init the (temporary) TimeBeforeStart global + if($@Duel_TimeLimit < 1) set $@Duel_TimeLimit, 120; // init the (temporary) TimeLimit global + if($@Duel_QueueLimit < 1) set $@Duel_QueueLimit, 5; // init the (temporary) QueueLimit global + if($@Duel_PlayerQueueLimit < 1) set $@Duel_PlayerQueueLimit, 2; // init the (temporary) PlayerQueueLimit global + if($@fightclub_password$ == "") set $@fightclub_password$, "Banana"; // init the (temporary) fightclub_password global + setarray $@Duel_Queue_ID, 0; + cleararray $@Duel_Queue_ID, 0, ($@Duel_QueueLimit + 1); + setarray $@Duel_Queue_Blue$, ""; + cleararray $@Duel_Queue_Blue$, "", ($@Duel_QueueLimit + 1); + setarray $@Duel_Queue_Red$, ""; + cleararray $@Duel_Queue_Red$, "", ($@Duel_QueueLimit + 1); + set $@Duel_TotalTime, 0; + // flags below + set $@DuelPvpBit, (1 << 1); + set $@NoMagicBit, (1 << 2); + return; } function|script|fightclub_CleanStage|, // ** called before and after each duel to wipe the vars { - if($@Duel_NoWarp != 1) areawarp "009-7.gat", $@fightclub_x1, $@fightclub_y1, $@fightclub_x2, $@fightclub_y2, "009-7.gat", 31, 40; // kick all players from stage - set $@Duel_NoWarp, 0; - set $@Duel_NoMagic, 0; // clean the Duel parameters - set $@Duel_CurrentDuel, 0; // no duel atm - set $@Duel_Started, 0; // no duel atm - set $@Duel_RedPlayer, 0; - set $@Duel_BluePlayer, 0; - set $@Duel_Missing, 0; - set $@Duel_TotalTime, 0; - npcwarp 32, 45, "Rouge#Duels"; - donpcevent "#FightClub#TimeLimit::OnStopTimer"; - killmonster "009-7.gat", "All"; - return; + if($@Duel_NoWarp != 1) areawarp "009-7.gat", $@fightclub_x1, $@fightclub_y1, $@fightclub_x2, $@fightclub_y2, "009-7.gat", 31, 40; // kick all players from stage + set $@Duel_NoWarp, 0; + set $@Duel_NoMagic, 0; // clean the Duel parameters + set $@Duel_CurrentDuel, 0; // no duel atm + set $@Duel_Started, 0; // no duel atm + set $@Duel_RedPlayer, 0; + set $@Duel_BluePlayer, 0; + set $@Duel_Missing, 0; + set $@Duel_TotalTime, 0; + npcwarp 32, 45, "Rouge#Duels"; + donpcevent "#FightClub#TimeLimit::OnStopTimer"; + killmonster "009-7.gat", "All"; + return; } function|script|fightclub_setrules|, // ** called by npc; allows the player to change their custom rules { - goto L_Main; + 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; + 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 DUELS, DUELS | $@NoMagicBit; - goto L_NoMagic; + set DUELS, DUELS | $@NoMagicBit; + goto L_NoMagic; L_NoMagic: - if((DUELS & $@NoMagicBit) != 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; + if((DUELS & $@NoMagicBit) != 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 DUELS, DUELS &~ $@NoMagicBit; - goto L_Done; + set DUELS, DUELS &~ $@NoMagicBit; + goto L_Done; L_Done: - next; - mes "You have succesfully changed your options."; - goto L_Main; + next; + mes "You have succesfully changed your options."; + goto L_Main; L_Return: - return; + return; } function|script|fightclub_death|, // ** called by event handler whenever someone dies { - if(@Duel_Fighter != 1) goto L_NoDuel; - if(@killerrid != 0) goto L_Murdered; - goto L_Killed; + if(@Duel_Fighter != 1) goto L_NoDuel; + if(@killerrid != 0) goto L_Murdered; + goto L_Killed; L_Killed: - if(getcharid(3) == $@Duel_RedPlayer) goto L_BlueWins; - goto L_RedWins; + 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; + 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; + 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; + 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; + callfunc "fightclub_CleanStage"; + callfunc "fightclub_NextBattle"; + return; L_BlueWins2: - callfunc "fightclub_exit"; - goto L_Proceed; + callfunc "fightclub_exit"; + goto L_Proceed; L_Proceed: - callfunc "fightclub_CleanStage"; - callfunc "fightclub_NextBattle"; - return; + 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 + 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; + // 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; + if(debug) donpcevent "Debug#Duels::OnVictimNotInDuel"; + end; } function|script|fightclub_enter|, // ** called every time a player enters the ring { - set @Duel_Fighter, 1; - warp "009-7.gat", rand($@fightclub_x1,$@fightclub_x2), rand($@fightclub_y1,$@fightclub_y2); - gmcommand "@alive"; // ensure that you can't duel wih a corpse - message strcharinfo(0), "Get Ready."; - addtimer ($@Duel_TimeBeforeStart * 1000), "#FightClub#utils::OnBecomeKiller"; // call fightclub_enter_killer in 3 seconds - return; + set @Duel_Fighter, 1; + warp "009-7.gat", rand($@fightclub_x1,$@fightclub_x2), rand($@fightclub_y1,$@fightclub_y2); + gmcommand "@alive"; // ensure that you can't duel wih a corpse + message strcharinfo(0), "Get Ready."; + addtimer ($@Duel_TimeBeforeStart * 1000), "#FightClub#utils::OnBecomeKiller"; // call fightclub_enter_killer in 3 seconds + return; } function|script|fightclub_enter_killer|, // ** called 3 seconds after a player enters the ring { - gmcommand "@killable"; - gmcommand "@killer"; // add both killable and killer so if one doesn't kick in, the other (hopefully) will - set @killer, 1; - message strcharinfo(0), "GO !"; - return; + gmcommand "@killable"; + gmcommand "@killer"; // add both killable and killer so if one doesn't kick in, the other (hopefully) will + set @killer, 1; + message strcharinfo(0), "GO !"; + return; } function|script|fightclub_exit|, // ** called every time a player exits the ring { - set @Duel_Fighter, 0; - if(getmap() == "009-7") warp "009-7.gat", 31, 40; // do not warp if player left the room - if(@killer != 1) goto L_Clean; - gmcommand "@killable"; - gmcommand "@killer"; - goto L_Clean; + set @Duel_Fighter, 0; + if(getmap() == "009-7") warp "009-7.gat", 31, 40; // do not warp if player left the room + if(@killer != 1) goto L_Clean; + gmcommand "@killable"; + 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; + 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 ad0e872b..6ca0de8d 100644 --- a/world/map/npc/009-7/debug.txt +++ b/world/map/npc/009-7/debug.txt @@ -1,160 +1,160 @@ function|script|fightclub_Debug|, { - goto L_Menu; + 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; + 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; + 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; + 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; + 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; + 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; + if(@Duel_Fighter < 1) goto L_DuelFighter2; + set @Duel_Fighter, 0; + goto L_Menu; L_DuelFighter2: - set @Duel_Fighter, 1; - goto L_Menu; + 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; + 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; + 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; + 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; + 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; + 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; + 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; + 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; + 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; + 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; + callfunc "fightclub_EmergencyWipe"; + mes "The temporary variables have been reset."; + goto L_Menu; L_End: - return; + return; } 009-7.gat,41,45,0|script|Debug#Duels|181, { - mes "The debug menu can also be accessed by wearing a dev cap while talking to Rouge."; - mes "For the documentation, @@https://wiki.themanaworld.org/index.php/User:Meko/FightClub/debug|click here@@##0"; - callfunc "fightclub_Debug"; - end; + mes "The debug menu can also be accessed by wearing a dev cap while talking to Rouge."; + mes "For the documentation, @@https://wiki.themanaworld.org/index.php/User:Meko/FightClub/debug|click here@@##0"; + callfunc "fightclub_Debug"; + end; OnInit: - if(!debug) disablenpc "Debug#Duels"; - end; + if(!debug) disablenpc "Debug#Duels"; + end; - // debug messages below + // debug messages below OnKillerNotInDuel: - npctalk "WARNING: The victim was not killed by its adversary. Aborting duel..."; - end; + 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; + 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; + 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 662b222a..6e560f35 100644 --- a/world/map/npc/009-7/eventHandler.txt +++ b/world/map/npc/009-7/eventHandler.txt @@ -2,157 +2,157 @@ 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; + 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; + 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; + warp "009-7.gat",44,32; + end; } 009-7.gat,22,38,0|script|#FightClub#utils|127, { - end; + 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; + 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; + callfunc "fightclub_StartBattle"; + end; OnDelayedNextBattle: - callfunc "fightclub_NextBattleProceed"; - end; + callfunc "fightclub_NextBattleProceed"; + end; OnBecomeKiller: - callfunc "fightclub_enter_killer"; - end; + 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; + 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; + end; OnStartTimer: - set $@Duel_TotalTime, 0; - goto L_StartTimer; + set $@Duel_TotalTime, 0; + goto L_StartTimer; OnStopTimer: - stopnpctimer; - end; + stopnpctimer; + end; OnTimer1000: - set $@Duel_TotalTime, ($@Duel_TotalTime + 1); - if($@Duel_TotalTime >= $@Duel_TimeLimit) goto L_TimeOut; - goto L_StartTimer; + set $@Duel_TotalTime, ($@Duel_TotalTime + 1); + if($@Duel_TotalTime >= $@Duel_TimeLimit) goto L_TimeOut; + goto L_StartTimer; L_TimeOut: - stopnpctimer; - callfunc "fightclub_TimeOut"; - end; + stopnpctimer; + callfunc "fightclub_TimeOut"; + end; L_StartTimer: - setnpctimer 0; - initnpctimer; - end; + setnpctimer 0; + initnpctimer; + end; OnInit: - set $@Duel_TotalTime, 0; - end; + set $@Duel_TotalTime, 0; + end; } 009-7.gat,20,44,0|script|#FightClub#handler|127,0,0, { - end; + 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; + // 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; + 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; + // 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; + set $@duel_loser, getcharid(3); + callfunc "fightclub_death"; + goto L_StartTimer; L_RedMissing: - set $@Duel_Missing, 1; - callfunc "fightclub_Missing"; - goto L_StartTimer; + set $@Duel_Missing, 1; + callfunc "fightclub_Missing"; + goto L_StartTimer; L_BlueMissing: - set $@Duel_Missing, 2; - callfunc "fightclub_Missing"; - goto L_StartTimer; + 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; + 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; + 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 - callfunc "fightclub_GoBack"; // TODO: we need a unified death handler - 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; + callfunc "fightclub_GoBack"; // TODO: we need a unified death handler + 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; + 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 11e7698b..72a4e9f8 100644 --- a/world/map/npc/009-7/npcs.txt +++ b/world/map/npc/009-7/npcs.txt @@ -1,18 +1,18 @@ 009-2.gat,38,105,0|script|#trapdoor#FightClub|327,0,0, { - mes "What is the password?"; - menu - $@fightclub_password$ + ".", L_Enter, - "I have no clue.", L_Close; + mes "What is the password?"; + menu + $@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; + mes "Correct. You may enter."; + close2; + warp "009-7.gat", 22, 21; + end; L_Close: - close; + close; } 009-7.gat,34,23,0|shop|Bartender#Duels|177,Beer :-1,IronPotion :-1,ConcentrationPotion :-1,SmallManaElixir :2400,BottleOfWater :-1,Milk :-1 diff --git a/world/map/npc/009-7/rouge.txt b/world/map/npc/009-7/rouge.txt index cd882581..34df9dd4 100644 --- a/world/map/npc/009-7/rouge.txt +++ b/world/map/npc/009-7/rouge.txt @@ -5,108 +5,108 @@ if (!debug && (strcharinfo(0) == "meko")) goto L_CallDebug; // allow meko to deb goto L_Main; L_CallDebug: - mes "You are wearing a dev cap: calling debug menu..."; - mes "For the documentation, @@https://wiki.themanaworld.org/index.php/User:Meko/FightClub/debug|click here@@##0"; - callfunc "fightclub_Debug"; - goto L_Main; + mes "You are wearing a dev cap: calling debug menu..."; + mes "For the documentation, @@https://wiki.themanaworld.org/index.php/User:Meko/FightClub/debug|click here@@##0"; + callfunc "fightclub_Debug"; + goto L_Main; L_Main: - mes "[Rouge]"; - if(@Duel_Queue$[0] != "") goto L_Queue; - mes "Welcome to the Sanguine Vault's duel arena."; - if(($fightclub_enabled % 5) != 3) goto L_Disabled; - mes "What do you want to do?"; - menu - "See the commands.", L_Challenge, - "Set my rules.", L_Rules, - "Nevermind.", L_End; + mes "[Rouge]"; + if(@Duel_Queue$[0] != "") goto L_Queue; + mes "Welcome to the Sanguine Vault's duel arena."; + if(($fightclub_enabled % 5) != 3) goto L_Disabled; + mes "What do you want to do?"; + menu + "See the commands.", L_Challenge, + "Set my rules.", L_Rules, + "Nevermind.", L_End; L_Queue: - set @caster_name$, @Duel_Queue$[0]; - set @target_name$, strcharinfo(0); - set @target, getcharid(3, @caster_name$); - set @Duel_Queue$[0], ""; - mes @caster_name$ + " wishes to challenge you to a duel."; - mes ""; - callfunc "fightclub_getrules"; - mes ""; - mes "Do you accept?"; - next; - menu - "Yes, I do!", L_Accept, - "No.", L_Decline; + set @caster_name$, @Duel_Queue$[0]; + set @target_name$, strcharinfo(0); + set @target, getcharid(3, @caster_name$); + set @Duel_Queue$[0], ""; + mes @caster_name$ + " wishes to challenge you to a duel."; + mes ""; + callfunc "fightclub_getrules"; + mes ""; + mes "Do you accept?"; + next; + menu + "Yes, I do!", L_Accept, + "No.", L_Decline; L_ShiftQueue: // here we shift the array to the left - if(@Duel_Queue$[@loop] == "") goto L_End; - set @Duel_Queue$[(@loop - 1)], @Duel_Queue$[@loop]; - set @Duel_Queue$[@loop], ""; - set @loop, (@loop + 1); - if(@loop >= getarraysize(@Duel_Queue$)) goto L_Queue; - goto L_ShiftQueue; + if(@Duel_Queue$[@loop] == "") goto L_End; + set @Duel_Queue$[(@loop - 1)], @Duel_Queue$[@loop]; + set @Duel_Queue$[@loop], ""; + set @loop, (@loop + 1); + if(@loop >= getarraysize(@Duel_Queue$)) goto L_Queue; + goto L_ShiftQueue; L_Accept: - callfunc "fightclub_AddToQueue"; - message @caster_name$, @target_name$ + " Accepted your offer."; - set @loop, 1; - goto L_ShiftQueue; + callfunc "fightclub_AddToQueue"; + message @caster_name$, @target_name$ + " Accepted your offer."; + set @loop, 1; + goto L_ShiftQueue; L_Decline: - message @caster_name$, @target_name$ + " turned down your offer."; - set @loop, 1; - goto L_ShiftQueue; + message @caster_name$, @target_name$ + " turned down your offer."; + set @loop, 1; + goto L_ShiftQueue; L_Challenge: - if(($fightclub_enabled % 5) != 3) goto L_Disabled; - next; - mes "[Rouge]"; - mes "To challenge a player to a duel, you need to write this command:"; - mes "%%E ##a"+ getspellinvocation("duel") +" (name)##0"; - next; - mes "Your opponent will have to talk to me to accept or decline your offer."; - next; - mes "Keep in mind that you can ignore incoming duel requests with this command:"; - mes "%%E ##a"+ getspellinvocation("dueloff") +"##0"; - next; - mes "To un-ignore, simply write the same command again."; - goto L_End; + if(($fightclub_enabled % 5) != 3) goto L_Disabled; + next; + mes "[Rouge]"; + mes "To challenge a player to a duel, you need to write this command:"; + mes "%%E ##a"+ getspellinvocation("duel") +" (name)##0"; + next; + mes "Your opponent will have to talk to me to accept or decline your offer."; + next; + mes "Keep in mind that you can ignore incoming duel requests with this command:"; + mes "%%E ##a"+ getspellinvocation("dueloff") +"##0"; + next; + mes "To un-ignore, simply write the same command again."; + goto L_End; L_Disabled: - mes "Sadly, the duel system is currently disabled. Please try again later."; - goto L_End; + mes "Sadly, the duel system is currently disabled. Please try again later."; + goto L_End; L_Rules: - callfunc "fightclub_setrules"; - goto L_End; + callfunc "fightclub_setrules"; + goto L_End; L_End: - close; + close; //announcements below OnAnnounceNext: - npctalk "##0The next battle ("+ $@Duel_Queue_ID[0] +") is ##1" + $@Duel_Queue_Red$[0] + "##0 vs. ##3" + $@Duel_Queue_Blue$[0] + "##0.The battle will start in "+ $@Duel_TimeBeforeWarp +" seconds."; - end; + npctalk "##0The next battle ("+ $@Duel_Queue_ID[0] +") is ##1" + $@Duel_Queue_Red$[0] + "##0 vs. ##3" + $@Duel_Queue_Blue$[0] + "##0.The battle will start in "+ $@Duel_TimeBeforeWarp +" seconds."; + end; OnAnnounceIntrusion: - npctalk "Intrusion detected. Annihilation in progress... Done."; - end; + npctalk "Intrusion detected. Annihilation in progress... Done."; + end; OnAnnounceTimeOut: - npctalk "Time limit reached! Both player lose!"; - end; + npctalk "Time limit reached! Both player lose!"; + end; OnAnnounceRedWins: - npctalk $@Duel_Queue_Red$[0] + " wins the duel against "+ $@Duel_Queue_Blue$[0] +"!"; - end; + npctalk $@Duel_Queue_Red$[0] + " wins the duel against "+ $@Duel_Queue_Blue$[0] +"!"; + end; OnAnnounceRedForfeit: - npctalk $@Duel_Queue_Red$[0] + " wins by forfeit!"; - end; + npctalk $@Duel_Queue_Red$[0] + " wins by forfeit!"; + end; OnAnnounceBlueWins: - npctalk $@Duel_Queue_Blue$[0] + " wins the duel against "+ $@Duel_Queue_Red$[0] +"!"; - end; + npctalk $@Duel_Queue_Blue$[0] + " wins the duel against "+ $@Duel_Queue_Red$[0] +"!"; + end; OnAnnounceBlueForfeit: - npctalk $@Duel_Queue_Blue$[0] + " wins by forfeit!"; - end; + npctalk $@Duel_Queue_Blue$[0] + " wins by forfeit!"; + end; } |