summaryrefslogtreecommitdiff
path: root/world/map/npc/009-7/rouge.txt
diff options
context:
space:
mode:
Diffstat (limited to 'world/map/npc/009-7/rouge.txt')
-rw-r--r--world/map/npc/009-7/rouge.txt11
1 files changed, 10 insertions, 1 deletions
diff --git a/world/map/npc/009-7/rouge.txt b/world/map/npc/009-7/rouge.txt
index c8c4dfaa..78491431 100644
--- a/world/map/npc/009-7/rouge.txt
+++ b/world/map/npc/009-7/rouge.txt
@@ -1,7 +1,7 @@
009-7.gat,32,45,0|script|Rouge#Duels|181
{
if (getgmlevel() >= 40 && getequipid(equip_head) == 647) goto L_CallDebug;
-if (!debug && (strcharinfo(0) == "meko")) goto L_CallDebug; // allow meko to debug (has no dev cap)
+if (!debug && (strcharinfo(0) == "meko") && (getequipid(equip_head) < 1)) goto L_CallDebug; // allow meko to debug (has no dev cap)
goto L_Main;
L_CallDebug:
@@ -13,6 +13,7 @@ L_CallDebug:
L_Main:
set @requests, 0;
if(@Duel_Queue$[0] != "") goto L_Queue;
+ if(@Duel_Queue$[1] != "") goto L_Decline; // if the user previously closed without declining we resume the procedure
mes "[Rouge]";
mes "Welcome to the Sanguine Vault's duel arena.";
if($SANGUINE & $@SV_FCDBit != 0) goto L_Disabled;
@@ -24,10 +25,13 @@ L_Main:
L_Queue:
set @caster_name$, @Duel_Queue$[0];
+ set @caster_time, @Duel_Queue[0];
set @target_name$, strcharinfo(0);
set @target, getcharid(3, @caster_name$);
set $@my_rid, getcharid(3);
set @Duel_Queue$[0], "";
+ set @Duel_Queue[0], 0;
+ if((gettimetick(2) - @caster_time) >= $@Duel_PlayerQueueTimeOut) goto L_Decline;
if(attachrid(@target) != 1) goto L_Missing;
if(getmap() != "009-7") goto L_Missing;
if(attachrid($@my_rid) != 1) goto L_End;
@@ -47,7 +51,9 @@ L_ShiftQueue: // here we shift the array to the left
if((@Duel_Queue$[@loop] == "" ) && (@requests < 1)) goto L_Main;
if(@Duel_Queue$[@loop] == "") goto L_End;
set @Duel_Queue$[(@loop - 1)], @Duel_Queue$[@loop];
+ set @Duel_Queue[(@loop - 1)], @Duel_Queue[@loop];
set @Duel_Queue$[@loop], "";
+ set @Duel_Queue[@loop], 0;
set @loop, (@loop + 1);
if(@loop >= getarraysize(@Duel_Queue$)) goto L_Queue;
goto L_ShiftQueue;
@@ -68,12 +74,15 @@ L_Missing:
L_Challenge:
if($SANGUINE & $@SV_FCDBit != 0) goto L_Disabled;
+ set @ms, $@Duel_PlayerQueueTimeOut * 1000;
+ callfunc "HumanTime";
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.";
+ mes "The request will expire ##2"+ @time$ +"##0 after being sent.";
next;
mes "Keep in mind that you can ignore incoming duel requests with this command:";
mes "%%E ##a"+ getspellinvocation("dueloff") +"##0";