Commit 91002a0a authored by salix5's avatar salix5

add player_info::szone_size

actual size of LOCATION_SZONE in current rule
parent 6f76bf07
...@@ -43,6 +43,7 @@ typedef signed char int8; ...@@ -43,6 +43,7 @@ typedef signed char int8;
#define NULL 0 #define NULL 0
#endif #endif
#define MASTER_RULE3 3 //Master Rule 3 (2014)
#define NEW_MASTER_RULE 4 //New Master Rule (2017) #define NEW_MASTER_RULE 4 //New Master Rule (2017)
#define MASTER_RULE_2020 5 //Master Rule 2020 #define MASTER_RULE_2020 5 //Master Rule 2020
#define CURRENT_RULE 5 #define CURRENT_RULE 5
......
...@@ -280,10 +280,10 @@ void field::move_card(uint8 playerid, card* pcard, uint8 location, uint8 sequenc ...@@ -280,10 +280,10 @@ void field::move_card(uint8 playerid, card* pcard, uint8 location, uint8 sequenc
if (playerid == preplayer && sequence == presequence) if (playerid == preplayer && sequence == presequence)
return; return;
if(location == LOCATION_MZONE) { if(location == LOCATION_MZONE) {
if(sequence >= player[playerid].list_mzone.size() || player[playerid].list_mzone[sequence]) if(sequence >= (int32)player[playerid].list_mzone.size() || player[playerid].list_mzone[sequence])
return; return;
} else { } else {
if(sequence >= player[playerid].list_szone.size() || player[playerid].list_szone[sequence]) if(sequence >= player[playerid].szone_size || player[playerid].list_szone[sequence])
return; return;
} }
if(preplayer == playerid) { if(preplayer == playerid) {
...@@ -491,14 +491,14 @@ card* field::get_field_card(uint8 playerid, uint32 general_location, uint8 seque ...@@ -491,14 +491,14 @@ card* field::get_field_card(uint8 playerid, uint32 general_location, uint8 seque
return nullptr; return nullptr;
switch(general_location) { switch(general_location) {
case LOCATION_MZONE: { case LOCATION_MZONE: {
if(sequence < player[playerid].list_mzone.size()) if(sequence < (int32)player[playerid].list_mzone.size())
return player[playerid].list_mzone[sequence]; return player[playerid].list_mzone[sequence];
else else
return nullptr; return nullptr;
break; break;
} }
case LOCATION_SZONE: { case LOCATION_SZONE: {
if(sequence < player[playerid].list_szone.size()) if(sequence < player[playerid].szone_size)
return player[playerid].list_szone[sequence]; return player[playerid].list_szone[sequence];
else else
return nullptr; return nullptr;
...@@ -565,7 +565,7 @@ int32 field::is_location_useable(uint8 playerid, uint32 general_location, uint8 ...@@ -565,7 +565,7 @@ int32 field::is_location_useable(uint8 playerid, uint32 general_location, uint8
return FALSE; return FALSE;
uint32 flag = player[playerid].disabled_location | player[playerid].used_location; uint32 flag = player[playerid].disabled_location | player[playerid].used_location;
if (general_location == LOCATION_MZONE) { if (general_location == LOCATION_MZONE) {
if (sequence >= (int32)player[0].list_mzone.size()) if (sequence >= (int32)player[playerid].list_mzone.size())
return FALSE; return FALSE;
if(flag & (0x1u << sequence)) if(flag & (0x1u << sequence))
return FALSE; return FALSE;
...@@ -575,7 +575,7 @@ int32 field::is_location_useable(uint8 playerid, uint32 general_location, uint8 ...@@ -575,7 +575,7 @@ int32 field::is_location_useable(uint8 playerid, uint32 general_location, uint8
return FALSE; return FALSE;
} }
} else if (general_location == LOCATION_SZONE) { } else if (general_location == LOCATION_SZONE) {
if (sequence >= (int32)player[0].list_szone.size()) if (sequence >= player[playerid].szone_size)
return FALSE; return FALSE;
if(flag & (0x100u << sequence)) if(flag & (0x100u << sequence))
return FALSE; return FALSE;
...@@ -1107,7 +1107,7 @@ void field::refresh_player_info(uint8 playerid) { ...@@ -1107,7 +1107,7 @@ void field::refresh_player_info(uint8 playerid) {
if (player[playerid].list_mzone[i]) if (player[playerid].list_mzone[i])
used_flag |= 0x1U << i; used_flag |= 0x1U << i;
} }
for (int32 i = 0; i < (int32)player[playerid].list_szone.size(); ++i) { for (int32 i = 0; i < player[playerid].szone_size; ++i) {
if (player[playerid].list_szone[i]) if (player[playerid].list_szone[i])
used_flag |= 0x100U << i; used_flag |= 0x100U << i;
} }
......
...@@ -87,6 +87,7 @@ struct player_info { ...@@ -87,6 +87,7 @@ struct player_info {
uint32 disabled_location{ 0 }; uint32 disabled_location{ 0 };
uint32 extra_p_count{ 0 }; uint32 extra_p_count{ 0 };
uint32 tag_extra_p_count{ 0 }; uint32 tag_extra_p_count{ 0 };
int32 szone_size{ 6 };
card_vector list_mzone; card_vector list_mzone;
card_vector list_szone; card_vector list_szone;
card_vector list_main; card_vector list_main;
......
...@@ -148,6 +148,10 @@ int32 scriptlib::debug_reload_field_begin(lua_State *L) { ...@@ -148,6 +148,10 @@ int32 scriptlib::debug_reload_field_begin(lua_State *L) {
pduel->game_field->core.duel_rule = 1; pduel->game_field->core.duel_rule = 1;
else else
pduel->game_field->core.duel_rule = CURRENT_RULE; pduel->game_field->core.duel_rule = CURRENT_RULE;
if (pduel->game_field->core.duel_rule == MASTER_RULE3) {
pduel->game_field->player[0].szone_size = 8;
pduel->game_field->player[1].szone_size = 8;
}
return 0; return 0;
} }
int32 scriptlib::debug_reload_field_end(lua_State *L) { int32 scriptlib::debug_reload_field_end(lua_State *L) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment