Commit 226d77fc authored by fallenstardust's avatar fallenstardust

sync ocgcore

parent c57d6445
...@@ -106,7 +106,7 @@ uint32 card::get_infos(byte* buf, int32 query_flag, int32 use_cache) { ...@@ -106,7 +106,7 @@ uint32 card::get_infos(byte* buf, int32 query_flag, int32 use_cache) {
if(query_flag & QUERY_CODE) *p++ = data.code; if(query_flag & QUERY_CODE) *p++ = data.code;
if(query_flag & QUERY_POSITION) *p++ = get_info_location(); if(query_flag & QUERY_POSITION) *p++ = get_info_location();
if(!use_cache) { if(!use_cache) {
if(query_flag & QUERY_ALIAS) q_cache.code = *p++ = get_code(); if(query_flag & QUERY_ALIAS) q_cache.alias = *p++ = get_code();
if(query_flag & QUERY_TYPE) q_cache.type = *p++ = get_type(); if(query_flag & QUERY_TYPE) q_cache.type = *p++ = get_type();
if(query_flag & QUERY_LEVEL) q_cache.level = *p++ = get_level(); if(query_flag & QUERY_LEVEL) q_cache.level = *p++ = get_level();
if(query_flag & QUERY_RANK) q_cache.rank = *p++ = get_rank(); if(query_flag & QUERY_RANK) q_cache.rank = *p++ = get_rank();
......
...@@ -4342,7 +4342,7 @@ int32 field::add_chain(uint16 step) { ...@@ -4342,7 +4342,7 @@ int32 field::add_chain(uint16 step) {
set_spsummon_counter(clit.triggering_player, true, true); set_spsummon_counter(clit.triggering_player, true, true);
if(clit.opinfos[0x200].op_player == PLAYER_ALL) if(clit.opinfos[0x200].op_player == PLAYER_ALL)
set_spsummon_counter(1 - clit.triggering_player, true, true); set_spsummon_counter(1 - clit.triggering_player, true, true);
if((core.global_flag & GLOBALFLAG_SPSUMMON_ONCE) && peffect->is_flag(EFFECT_FLAG_CARD_TARGET)) { if(core.global_flag & GLOBALFLAG_SPSUMMON_ONCE) {
auto& optarget = clit.opinfos[0x200]; auto& optarget = clit.opinfos[0x200];
if(optarget.op_cards) { if(optarget.op_cards) {
if(optarget.op_player == PLAYER_ALL) { if(optarget.op_player == PLAYER_ALL) {
...@@ -4588,32 +4588,30 @@ int32 field::solve_chain(uint16 step, uint32 chainend_arg1, uint32 chainend_arg2 ...@@ -4588,32 +4588,30 @@ int32 field::solve_chain(uint16 step, uint32 chainend_arg1, uint32 chainend_arg2
if(cait->opinfos[0x200].op_player == PLAYER_ALL && core.spsummon_state_count_tmp[1 - cait->triggering_player] == core.spsummon_state_count[1 - cait->triggering_player]) if(cait->opinfos[0x200].op_player == PLAYER_ALL && core.spsummon_state_count_tmp[1 - cait->triggering_player] == core.spsummon_state_count[1 - cait->triggering_player])
set_spsummon_counter(1 - cait->triggering_player); set_spsummon_counter(1 - cait->triggering_player);
//sometimes it may add twice, only works for once per turn //sometimes it may add twice, only works for once per turn
if(cait->triggering_effect->is_flag(EFFECT_FLAG_CARD_TARGET)) { auto& optarget = cait->opinfos[0x200];
auto& optarget = cait->opinfos[0x200]; if(optarget.op_cards) {
if(optarget.op_cards) { if(optarget.op_player == PLAYER_ALL) {
if(optarget.op_player == PLAYER_ALL) { uint32 sumplayer = optarget.op_param;
uint32 sumplayer = optarget.op_param; if(core.global_flag & GLOBALFLAG_SPSUMMON_ONCE) {
if(core.global_flag & GLOBALFLAG_SPSUMMON_ONCE) {
auto opit = optarget.op_cards->container.begin();
if((*opit)->spsummon_code)
core.spsummon_once_map[sumplayer][(*opit)->spsummon_code]++;
++opit;
if((*opit)->spsummon_code)
core.spsummon_once_map[1 - sumplayer][(*opit)->spsummon_code]++;
}
auto opit = optarget.op_cards->container.begin(); auto opit = optarget.op_cards->container.begin();
check_card_counter(*opit, 3, sumplayer); if((*opit)->spsummon_code)
core.spsummon_once_map[sumplayer][(*opit)->spsummon_code]++;
++opit; ++opit;
check_card_counter(*opit, 3, 1 - sumplayer); if((*opit)->spsummon_code)
} else { core.spsummon_once_map[1 - sumplayer][(*opit)->spsummon_code]++;
uint32 sumplayer = cait->triggering_player; }
if(optarget.op_player == 1) auto opit = optarget.op_cards->container.begin();
sumplayer = 1 - sumplayer; check_card_counter(*opit, 3, sumplayer);
for(auto& ptarget : optarget.op_cards->container) { ++opit;
if((core.global_flag & GLOBALFLAG_SPSUMMON_ONCE) && ptarget->spsummon_code) check_card_counter(*opit, 3, 1 - sumplayer);
core.spsummon_once_map[sumplayer][ptarget->spsummon_code]++; } else {
check_card_counter(ptarget, 3, sumplayer); uint32 sumplayer = cait->triggering_player;
} if(optarget.op_player == 1)
sumplayer = 1 - sumplayer;
for(auto& ptarget : optarget.op_cards->container) {
if((core.global_flag & GLOBALFLAG_SPSUMMON_ONCE) && ptarget->spsummon_code)
core.spsummon_once_map[sumplayer][ptarget->spsummon_code]++;
check_card_counter(ptarget, 3, sumplayer);
} }
} }
} }
......
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