summaryrefslogtreecommitdiff
path: root/world/map/npc/009-7/core.txt
diff options
context:
space:
mode:
authormekolat <mekolat@gmail.com>2014-11-04 13:01:07 -0500
committermekolat <mekolat@gmail.com>2014-11-12 14:02:47 -0500
commit64a4adaa06f1059c4ac705199d5a0716c8edef60 (patch)
tree32d1f05c6e846aa791f82d1773f2972f71ad166e /world/map/npc/009-7/core.txt
parent0ca075ae66c4e6a983e1f25f6e63a39ee12a568e (diff)
downloadserverdata-64a4adaa06f1059c4ac705199d5a0716c8edef60.tar.gz
serverdata-64a4adaa06f1059c4ac705199d5a0716c8edef60.tar.bz2
serverdata-64a4adaa06f1059c4ac705199d5a0716c8edef60.tar.xz
serverdata-64a4adaa06f1059c4ac705199d5a0716c8edef60.zip
fix fight club => v0.4
disallow towel inside ring kill on exit replace killer var with duel_killer remove nosave trigger restart on enable/disable remove accept/decline notification fix ring x2 and y2 forbid betsanc and asorm fix password var in debug allow random passwords handle all effects do not accept if not present fix rules check map too warp randomly on death fallthrough if no acceptable requests use bitmasking instead of modulo remove resave simplify goback do not re-declare randompassword password minigame
Diffstat (limited to 'world/map/npc/009-7/core.txt')
-rw-r--r--world/map/npc/009-7/core.txt76
1 files changed, 30 insertions, 46 deletions
diff --git a/world/map/npc/009-7/core.txt b/world/map/npc/009-7/core.txt
index ab033c66..cc4b9806 100644
--- a/world/map/npc/009-7/core.txt
+++ b/world/map/npc/009-7/core.txt
@@ -49,9 +49,9 @@ L_Missing:
L_Proceed2:
set $@fightclub_myself, 0;
set @target, 0;
- if($@Temp_NoMagic != 1)
+ if($@Temp_NoMagic == 0)
mes "(no rules)";
- if($@Temp_NoMagic == 1) mes "- No Magic";
+ if($@Temp_NoMagic != 0) mes "- No Magic";
set $@Temp_NoMagic, 0; // now we clean these vars ASAP because they're globals
return;
}
@@ -59,14 +59,14 @@ L_Proceed2:
// ** called when someone agree to duel
function|script|fightclub_AddToQueue
{
- set @Duel_Loop, 0;
+ set @ATQ_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;
+ 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;
+ set @ATQ_Loop, (@ATQ_Loop + 1);
+ if(@ATQ_Loop >= getarraysize($@Duel_Queue_ID)) goto L_Proceed2;
goto L_Loop;
L_Exists:
@@ -77,14 +77,14 @@ L_Full:
mes "There is already " + $@Duel_QueueLimit + " battles in the queue, which is the maximum. Please try again later.";
close;
-L_Proceed:
+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;
+ if(@index >= 1) goto L_Proceed22;
set @index, 1;
- goto L_Proceed2;
+ goto L_Proceed22;
-L_Proceed2:
+L_Proceed22:
if($@Duel_Queue_Red$[@index] != "") goto L_NotClean;
set $@Duel_Queue_Red$[@index], @caster_name$;
if($@Duel_Queue_Blue$[@index] != "") goto L_NotClean;
@@ -92,7 +92,6 @@ L_Proceed2:
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:
@@ -101,11 +100,6 @@ L_NotClean:
L_FixId:
set $@Duel_Queue_ID[@index], ($Duel_LastDuel + 1);
- if($@Duel_CurrentDuel < 1) goto L_Request;
- return;
-
-L_Request:
- callfunc "fightclub_NextBattle";
return;
}
@@ -150,17 +144,18 @@ L_Missing:
return;
L_Proceed2:
- addtimer ($@Duel_TimeBeforeNext * 1000), "#FightClub#utils::OnDelayedNextBattle";
+ addtimer ($@Duel_TimeBeforeNext * 1000), "#FightClubUtils::OnDelayedNextBattle";
return;
}
// ** called after the delay
function|script|fightclub_NextBattleProceed
{
- set $@Duel_NoMagic, (DUELS & $@NoMagicBit); // get the rules of the caster
+ set $@Duel_NoMagic, 0;
+ if((DUELS & $@NoMagicBit) != 0) set $@Duel_NoMagic, 1; // get the rules of the caster
donpcevent "Rouge#Duels::OnAnnounceNext";
set $@Duel_Started, 0;
- addtimer ($@Duel_TimeBeforeWarp * 1000), "#FightClub#utils::OnDelayedStart";
+ addtimer ($@Duel_TimeBeforeWarp * 1000), "#FightClubUtils::OnDelayedStart";
return;
}
@@ -168,7 +163,7 @@ function|script|fightclub_StartBattle
{
set $@Duel_Started, 1;
npcwarp 40, 45, "Rouge#Duels";
- donpcevent "#FightClub#TimeLimit::OnStartTimer";
+ donpcevent "#FightClubTimeLimit::OnStartTimer";
if(attachrid($@Duel_RedPlayer) != 1) goto L_Missing;
callfunc "fightclub_enter";
if(attachrid($@Duel_BluePlayer) != 1) goto L_Missing;
@@ -183,7 +178,6 @@ L_Missing:
function|script|fightclub_TimeOut
{
- debugmes "on time out";
donpcevent "Rouge#Duels::OnAnnounceTimeOut";
if(attachrid($@Duel_RedPlayer) != 1) goto L_Missing;
callfunc "fightclub_exit";
@@ -226,8 +220,11 @@ function|script|fightclub_Victory
// ** called when the player needs to be reset
function|script|fightclub_DestroyMe
{
- callfunc "fightclub_exit";
- percentheal -100, 0; // dying removes @killable, @killer or any temp buff
+ set @Duel_Fighter, 0;
+ 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
+ percentheal -100, 0; // doing @killer is unreliable
+ gmcommand "@alive"; // refill hp/mana
+ if(getmap() == "009-7") warp "009-7.gat", rand($@fightclub_x1, $@fightclub_x2), rand(($@fightclub_y1 - 2), ($@fightclub_y1 - 3));
return;
}
@@ -278,14 +275,12 @@ L_Resume:
// ** called after the server boots up
function|script|fightclub_StartUp
{
- 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$, "";
@@ -293,9 +288,12 @@ function|script|fightclub_StartUp
setarray $@Duel_Queue_Red$, "";
cleararray $@Duel_Queue_Red$, "", ($@Duel_QueueLimit + 1);
set $@Duel_TotalTime, 0;
- // flags below
+ // DUELS flags below
set $@DuelPvpBit, (1 << 1);
set $@NoMagicBit, (1 << 2);
+ // $SANGUINE flags below
+ set $@SV_FCDBit, (1 << 1);
+ set $@SV_BMDBit, (1 << 2);
return;
}
@@ -312,7 +310,7 @@ function|script|fightclub_CleanStage
set $@Duel_Missing, 0;
set $@Duel_TotalTime, 0;
npcwarp 32, 45, "Rouge#Duels";
- donpcevent "#FightClub#TimeLimit::OnStopTimer";
+ donpcevent "#FightClubTimeLimit::OnStopTimer";
killmonster "009-7.gat", "All";
return;
}
@@ -335,7 +333,6 @@ L_Start:
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
@@ -387,9 +384,7 @@ L_BlueWins:
goto L_Missing;
L_Missing:
- callfunc "fightclub_CleanStage";
- callfunc "fightclub_NextBattle";
- return;
+ goto L_Proceed;
L_BlueWins2:
callfunc "fightclub_exit";
@@ -397,7 +392,6 @@ L_BlueWins2:
L_Proceed:
callfunc "fightclub_CleanStage";
- callfunc "fightclub_NextBattle";
return;
L_Murdered:
@@ -426,8 +420,9 @@ function|script|fightclub_enter
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
+ 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), "#FightClub#utils::OnBecomeKiller"; // call fightclub_enter_killer in 3 seconds
+ addtimer ($@Duel_TimeBeforeStart * 1000), "#FightClubUtils::OnBecomeKiller"; // call fightclub_enter_killer in 3 seconds
return;
}
@@ -436,7 +431,6 @@ function|script|fightclub_enter_killer
{
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;
}
@@ -444,17 +438,7 @@ function|script|fightclub_enter_killer
// ** called every time a player exits the ring
function|script|fightclub_exit
{
- 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
+ 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;