@@ -477,7 +477,7 @@ static void bg_config_read(void)
477477
478478 libconfig -> setting_lookup_int (arena , "requeue_delay" , & requeue_delay );
479479
480- if ( requeue_delay < 0 ) {
480+ if ( requeue_delay < 0 ) {
481481 ShowWarning ("bg_config_read: invalid %d value for arena '%s' requeue_delay, defaulting to 300.\n" ,requeue_delay ,aName );
482482 requeue_delay = 300 ;
483483 }
@@ -602,8 +602,14 @@ static void bg_queue_player_cleanup(struct map_session_data *sd)
602602 else
603603 clif -> bgqueue_notice_delete (sd ,BGQND_FAIL_NOT_QUEUING ,bg -> arena [0 ]-> name );
604604 }
605- if ( sd -> bg_queue .arena )
606- script -> queue_remove (sd -> bg_queue .arena -> queue_id ,sd -> status .account_id );
605+ if (sd -> bg_queue .arena ) {
606+ int qid ;
607+ if (sd -> bg_queue .arena -> match_queue_id )
608+ qid = sd -> bg_queue .arena -> match_queue_id ;
609+ else
610+ qid = sd -> bg_queue .arena -> queue_id ;
611+ script -> queue_remove (qid , sd -> status .account_id );
612+ }
607613 sd -> bg_queue .arena = NULL ;
608614 sd -> bg_queue .ready = 0 ;
609615 sd -> bg_queue .client_has_bg_data = 0 ;
@@ -637,7 +643,7 @@ static void bg_match_over(struct bg_arena *arena, bool canceled)
637643 pc_setglobalreg (sd , script -> add_variable (arena -> delay_var ), (unsigned int )time (NULL ) + arena -> requeue_delay );
638644 }
639645
640- if ( arena -> match_queue_id == 0 ) {
646+ if ( arena -> match_queue_id == 0 ) {
641647 arena -> begin_timer = INVALID_TIMER ;
642648 arena -> fillup_timer = INVALID_TIMER ;
643649 }
@@ -723,7 +729,7 @@ static int bg_afk_timer(int tid, int64 tick, int id, intptr_t data)
723729 for (sd = BL_UCAST (BL_PC , mapit -> first (iter )); mapit -> exists (iter ); sd = BL_UCAST (BL_PC , mapit -> next (iter ))) {
724730 if ( !sd -> bg_queue .arena || !sd -> bg_id )
725731 continue ;
726- if ( DIFF_TICK (sockt -> last_tick , sd -> idletime ) > (bg -> mafksec * 1000 ) )
732+ if ( DIFF_TICK (sockt -> last_tick , sd -> idletime ) > (bg -> mafksec * 1000 ))
727733 bg -> team_leave (sd ,BGTL_AFK );
728734 count ++ ;
729735 }
@@ -779,6 +785,15 @@ static void bg_queue_check(struct bg_arena *arena)
779785 }
780786}
781787
788+ static bool bg_member_meets_requirements (struct map_session_data * sd , struct bg_arena * arena )
789+ {
790+ if (sd -> status .base_level < arena -> min_level || sd -> status .base_level > arena -> max_level )
791+ return false;
792+ if ((sd -> job & JOBL_2 ) == 0 )
793+ return false;
794+ return true;
795+ }
796+
782797static void bg_queue_add (struct map_session_data * sd , struct bg_arena * arena , enum bg_queue_types type )
783798{
784799 enum BATTLEGROUNDS_QUEUE_ACK result = bg -> can_queue (sd ,arena ,type );
@@ -787,7 +802,7 @@ static void bg_queue_add(struct map_session_data *sd, struct bg_arena *arena, en
787802
788803 nullpo_retv (sd );
789804 nullpo_retv (arena );
790- if ( arena -> begin_timer != INVALID_TIMER ) {
805+ if ( arena -> begin_timer != INVALID_TIMER ) {
791806 clif -> bgqueue_ack (sd ,BGQA_FAIL_QUEUING_FINISHED ,arena -> id );
792807 return ;
793808 }
@@ -801,8 +816,10 @@ static void bg_queue_add(struct map_session_data *sd, struct bg_arena *arena, en
801816 case BGQT_PARTY : {
802817 struct party_data * p = party -> search (sd -> status .party_id );
803818 for ( i = 0 ; i < MAX_PARTY ; i ++ ) {
804- if ( !p -> data [i ].sd || p -> data [i ].sd -> bg_queue .arena != NULL ) continue ;
805- if ( !bg_member_meets_requirements (p -> data [i ].sd , arena ) ) continue ;
819+ if (!p -> data [i ].sd || p -> data [i ].sd -> bg_queue .arena != NULL )
820+ continue ;
821+ if (!bg_member_meets_requirements (p -> data [i ].sd , arena ))
822+ continue ;
806823 count ++ ;
807824 }
808825 }
@@ -811,7 +828,7 @@ static void bg_queue_add(struct map_session_data *sd, struct bg_arena *arena, en
811828 for ( i = 0 ; i < sd -> guild -> max_member ; i ++ ) {
812829 if ( !sd -> guild -> member [i ].sd || sd -> guild -> member [i ].sd -> bg_queue .arena != NULL )
813830 continue ;
814- if ( !bg_member_meets_requirements (sd -> guild -> member [i ].sd , arena ) )
831+ if (!bg_member_meets_requirements (sd -> guild -> member [i ].sd , arena ))
815832 continue ;
816833 count ++ ;
817834 }
@@ -840,8 +857,10 @@ static void bg_queue_add(struct map_session_data *sd, struct bg_arena *arena, en
840857 case BGQT_PARTY : {
841858 struct party_data * p = party -> search (sd -> status .party_id );
842859 for ( i = 0 ; i < MAX_PARTY ; i ++ ) {
843- if ( !p -> data [i ].sd || p -> data [i ].sd -> bg_queue .arena != NULL ) continue ;
844- if ( !bg_member_meets_requirements (p -> data [i ].sd , arena ) ) continue ;
860+ if (!p -> data [i ].sd || p -> data [i ].sd -> bg_queue .arena != NULL )
861+ continue ;
862+ if (!bg_member_meets_requirements (p -> data [i ].sd , arena ))
863+ continue ;
845864 p -> data [i ].sd -> bg_queue .type = type ;
846865 p -> data [i ].sd -> bg_queue .arena = arena ;
847866 p -> data [i ].sd -> bg_queue .ready = 0 ;
@@ -855,7 +874,7 @@ static void bg_queue_add(struct map_session_data *sd, struct bg_arena *arena, en
855874 for ( i = 0 ; i < sd -> guild -> max_member ; i ++ ) {
856875 if ( !sd -> guild -> member [i ].sd || sd -> guild -> member [i ].sd -> bg_queue .arena != NULL )
857876 continue ;
858- if ( !bg_member_meets_requirements (sd -> guild -> member [i ].sd , arena ) )
877+ if (!bg_member_meets_requirements (sd -> guild -> member [i ].sd , arena ))
859878 continue ;
860879 sd -> guild -> member [i ].sd -> bg_queue .type = type ;
861880 sd -> guild -> member [i ].sd -> bg_queue .arena = arena ;
@@ -872,15 +891,6 @@ static void bg_queue_add(struct map_session_data *sd, struct bg_arena *arena, en
872891 bg -> queue_check (arena );
873892}
874893
875- static bool bg_member_meets_requirements (struct map_session_data * msd , struct bg_arena * arena )
876- {
877- if (msd -> status .base_level < arena -> min_level || msd -> status .base_level > arena -> max_level )
878- return false;
879- if ((msd -> job & JOBL_2 ) == 0 )
880- return false;
881- return true;
882- }
883-
884894static enum BATTLEGROUNDS_QUEUE_ACK bg_canqueue (struct map_session_data * sd , struct bg_arena * arena , enum bg_queue_types type )
885895{
886896 int tick ;
@@ -928,11 +938,12 @@ static enum BATTLEGROUNDS_QUEUE_ACK bg_canqueue(struct map_session_data *sd, str
928938 return BGQA_NOT_PARTY_GUILD_LEADER ;
929939 else {
930940 int i , count = 0 ;
931- for ( i = 0 ; i < sd -> guild -> max_member ; i ++ ) {
932- struct map_session_data * msd = sd -> guild -> member [i ].sd ;
933- if ( !msd || msd -> bg_queue .arena != NULL )
941+ struct guild * guild = sd -> guild ;
942+ for (i = 0 ; i < guild -> max_member ; i ++ ) {
943+ struct map_session_data * sd = guild -> member [i ].sd ;
944+ if (!sd || sd -> bg_queue .arena != NULL )
934945 continue ;
935- if ( !bg_member_meets_requirements (msd , arena ) )
946+ if (!bg_member_meets_requirements (sd , arena ))
936947 continue ;
937948 count ++ ;
938949 }
@@ -957,12 +968,12 @@ static enum BATTLEGROUNDS_QUEUE_ACK bg_canqueue(struct map_session_data *sd, str
957968 bool is_leader = false;
958969
959970 for (i = 0 ; i < MAX_PARTY ; i ++ ) {
960- struct map_session_data * msd = p -> data [i ].sd ;
961- if ( !msd )
962- continue ;
963- if ( p -> party .member [i ].leader && sd == msd )
971+ if (p -> party .member [i ].leader && p -> data [i ].sd == sd )
964972 is_leader = true;
965- if ( msd -> bg_queue .arena == NULL && bg_member_meets_requirements (msd , arena ) )
973+ struct map_session_data * sd = p -> data [i ].sd ;
974+ if (!sd )
975+ continue ;
976+ if (sd -> bg_queue .arena == NULL && bg_member_meets_requirements (sd , arena ))
966977 count ++ ;
967978 }
968979
0 commit comments