From aab42b9b921be4dcc4b5889afdf59e49330b9295 Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Fri, 9 Apr 2021 18:22:24 -0300 Subject: Remove Fight Club, we have @duel which is "superior" --- npc/009-7/core.txt | 345 +---------------------------------------------------- 1 file changed, 1 insertion(+), 344 deletions(-) diff --git a/npc/009-7/core.txt b/npc/009-7/core.txt index 921cd26e..cb94ef97 100755 --- a/npc/009-7/core.txt +++ b/npc/009-7/core.txt @@ -1,198 +1,32 @@ +// Replaced with @duel function script fightclub_sendrequest { - goto L_try; - -L_try: - @loop = 0; - goto L_Loop; - -L_Loop: - if(@Duel_Queue$[@loop] == @caster_name$) goto L_Exists; - if((@Duel_Queue$[@loop] == "") && (@Duel_Queue$[(@loop + 1)] == "")) goto L_Proceed; - if((@Duel_Queue$[@loop] == "") && (@Duel_Queue$[(@loop + 1)] != "")) goto L_ShiftQueue; - @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_ShiftQueue: - @Duel_Queue$[@loop] = @Duel_Queue$[(@loop + 1)]; - @Duel_Queue[@loop] = @Duel_Queue[(@loop + 1)]; - @Duel_Queue$[(@loop + 1)] = ""; - @Duel_Queue[(@loop + 1)] = 0; - @loop = (@loop + 1); - if(@loop >= getarraysize(@Duel_Queue)) goto L_try; - goto L_ShiftQueue; - -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_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."; - @Duel_Queue$[@loop] = @caster_name$; - @Duel_Queue[@loop] = gettimetick(2); - 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 { - $@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: - $@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: - return; - -L_Proceed2: - $@fightclub_myself = 0; - @target = 0; - if($@Temp_NoMagic == 0) - mes "(no rules)"; - if($@Temp_NoMagic != 0) mes "- No Magic"; - set $@Temp_NoMagic, 0; // now we clean these vars ASAP because they're globals return; } function script fightclub_AddToQueue { - @ATQ_Loop = 0; - goto L_Loop; - -L_Loop: - if(($@Duel_Queue_Blue$[@ATQ_Loop] == @caster_name$) && ($@Duel_Queue_Red$[@ATQ_Loop] == @target_name$)) goto L_Exists; - if(($@Duel_Queue_Red$[@ATQ_Loop] == @caster_name$) && ($@Duel_Queue_Blue$[@ATQ_Loop] == @target_name$)) goto L_Exists; - @ATQ_Loop = (@ATQ_Loop + 1); - if(@ATQ_Loop >= getarraysize($@Duel_Queue_ID)) goto L_Proceed2; - goto L_Loop; - -L_Exists: mes "This battle is already in the queue."; return; - -L_Full: - mes "There is already " + $@Duel_QueueLimit + " battles in the queue, which is the maximum. Please try again later."; - return; - -L_Proceed2: - if(getarraysize($@Duel_Queue_ID) >= ($@Duel_QueueLimit + 1)) goto L_Full; - @index = getarraysize($@Duel_Queue_ID); - if(@index >= 1) goto L_Proceed22; - @index = 1; - goto L_Proceed22; - -L_Proceed22: - if($@Duel_Queue_Red$[@index] != "") goto L_NotClean; - $@Duel_Queue_Red$[@index] = @caster_name$; - if($@Duel_Queue_Blue$[@index] != "") goto L_NotClean; - $@Duel_Queue_Blue$[@index] = @target_name$; - if($@Duel_Queue_ID[@index] != 0) goto L_NotClean; - $@Duel_Queue_ID[@index] = ($@Duel_Queue_ID[(@index - 1)] + 1); - if($@Duel_Queue_ID[@index] <= $Duel_LastDuel) goto L_FixId; - return; - -L_NotClean: - message @caster_name$, "An error occured: array element not empty. Try again in 5 seconds."; - return; - -L_FixId: - $@Duel_Queue_ID[@index] = ($Duel_LastDuel + 1); - return; } function script fightclub_NextBattle { - set $@Duel_Queue_Blue$[0], ""; // clean the 0 index - $@Duel_Queue_Red$[0] = ""; - $@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; - $@Duel_Queue_Red$[($@Duel_Loop - 1)] = $@Duel_Queue_Red$[$@Duel_Loop]; - set $@Duel_Queue_Red$[$@Duel_Loop], ""; // it is always important to clean - $@Duel_Queue_Blue$[($@Duel_Loop - 1)] = $@Duel_Queue_Blue$[$@Duel_Loop]; - $@Duel_Queue_Blue$[$@Duel_Loop] = ""; - $@Duel_Queue_ID[($@Duel_Loop - 1)] = $@Duel_Queue_ID[$@Duel_Loop]; - $@Duel_Queue_ID[$@Duel_Loop] = 0; - $@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_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 - $@Duel_BluePlayer = getcharid(3,$@Duel_Queue_Blue$[0]); - $@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), "#FightClubUtils::OnDelayedNextBattle"; return; } function script fightclub_NextBattleProceed { - $@Duel_NoMagic = 0; - if((DUELS & $@NoMagicBit) != 0) set $@Duel_NoMagic, 1; // get the rules of the caster - donpcevent "Rouge#Duels::OnAnnounceNext"; - $@Duel_Started = 0; - addtimer ($@Duel_TimeBeforeWarp * 1000), "#FightClubUtils::OnDelayedStart"; return; } function script fightclub_StartBattle { - $@Duel_Started = 1; - npcwarp 40, 45, "Rouge#Duels"; - donpcevent "#FightClubTimeLimit::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; } function script fightclub_TimeOut { - 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; } @@ -217,7 +51,6 @@ function script fightclub_Victory { function script fightclub_DestroyMe { @Duel_Fighter = 0; - setpvpchannel @previous_channel; sc_end 132; sc_end 14; sc_end 37; sc_end 185; sc_end 194; sc_end 195; sc_end 196; sc_end 197; sc_end 198; sc_end 199; // remove effects heal MaxHp, MaxSp; // refill hp/mana if(getmapname() == "009-7") warp "009-7", rand($@fightclub_x1, $@fightclub_x2), rand(($@fightclub_y1 - 2), ($@fightclub_y1 - 3)); @@ -225,70 +58,10 @@ function script fightclub_DestroyMe { } function script fightclub_Missing { - // $@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; - -L_BlueWins: - donpcevent "Rouge#Duels::OnAnnounceBlueForfeit"; - $@duel_winner = $@Duel_BluePlayer; - callfunc "fightclub_Victory"; - goto L_Clean; - -L_RedWins: - donpcevent "Rouge#Duels::OnAnnounceRedForfeit"; - $@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 { - 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($@Duel_PlayerQueueTimeOut < 1) set $@Duel_PlayerQueueTimeOut, 300; // init the (temporary) PlayerQueueTimeOut 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); - $@Duel_TotalTime = 0; - $@Duel_Channel = 20; - if($fightclub_enabled) set $fightclub_enabled, 0; // this var moved to $SANGUINE - // DUELS flags below - $@DuelPvpBit = (1 << 1); - $@NoMagicBit = (1 << 2); - // $SANGUINE flags below - $@SV_FCDBit = (1 << 1); - $@SV_BMDBit = (1 << 2); return; } @@ -309,149 +82,33 @@ function script fightclub_CleanStage { } function script fightclub_setrules { - 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: - DUELS = DUELS | $@NoMagicBit; - goto L_NoMagic; - -L_NoMagic: - 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: - DUELS = DUELS &~ $@NoMagicBit; - goto L_Done; - -L_Done: - next; - mes "You have succesfully changed your options."; - goto L_Main; - -L_Return: return; } function script fightclub_death { - if(@Duel_Fighter != 1) goto L_NoDuel; - if(($@Duel_CurrentDuel < 1) || ($@Duel_Started != 1)) goto L_Reset; - 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"; - $@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"; - $@duel_winner = $@Duel_BluePlayer; - callfunc "fightclub_Victory"; - callfunc "fightclub_exit"; - if(attachrid($@Duel_BluePlayer) == 1) goto L_BlueWins2; - goto L_Missing; - -L_Missing: - goto L_Proceed; - -L_BlueWins2: - callfunc "fightclub_exit"; - goto L_Proceed; - -L_Proceed: - callfunc "fightclub_CleanStage"; - 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"; - return; - L_NoDuel: if(debug) donpcevent "Debug#Duels::OnVictimNotInDuel"; return; - -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 - return; } function script fightclub_enter { - @Duel_Fighter = 1; - warp "009-7", rand($@fightclub_x1,$@fightclub_x2), rand($@fightclub_y1,$@fightclub_y2); - heal MaxHp, MaxSp; // ensure that you can't duel wih a corpse - sc_end 132; sc_end 14; sc_end 37; sc_end 185; sc_end 194; sc_end 195; sc_end 196; sc_end 197; sc_end 198; sc_end 199; // remove effects - message strcharinfo(0), "Get Ready."; - addtimer ($@Duel_TimeBeforeStart * 1000), "#FightClubUtils::OnBecomeKiller"; // call fightclub_enter_killer in 3 seconds return; } function script fightclub_enter_killer { - if(getpvpflag(0) != $@Duel_Channel) set @previous_channel, getpvpflag(0); - setpvpchannel $@Duel_Channel; - message strcharinfo(0), "GO !"; return; } function script fightclub_exit { - callfunc "fightclub_DestroyMe"; // kill and reset state - 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; } function script fightclub_event_killed { - @duel_killer = 0; - if(@Duel_Fighter != 1) goto L_End; - if(getmapname() != "009-7") goto L_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"; - goto L_End; -L_End: - if(getpvpflag(0) == $@Duel_Channel) setpvpflag @previous_channel; return; } function script fightclub_event_die { - @duel_killer = 0; - if(@Duel_Fighter != 1) goto L_End; - if(getmapname() != "009-7") goto L_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"; - goto L_End; -L_End: - if(getpvpflag(0) == $@Duel_Channel) setpvpflag @previous_channel; return; } -- cgit v1.2.3-60-g2f50