Commit ba9740d9 authored by Chen Bill's avatar Chen Bill

workwround: check last_handler after chain resolution

parent cdc86e21
......@@ -805,10 +805,14 @@ effect* effect::clone() {
return ceffect;
}
card* effect::get_owner() const {
if(active_handler)
return active_handler;
if(type & EFFECT_TYPE_XMATERIAL)
return handler->overlay_target;
if (type & EFFECT_TYPE_XMATERIAL) {
if (active_handler)
return active_handler;
if (handler->overlay_target)
return handler->overlay_target;
if (last_handler)
return last_handler;
}
return owner;
}
uint8_t effect::get_owner_player() const {
......@@ -817,10 +821,14 @@ uint8_t effect::get_owner_player() const {
return get_owner()->current.controler;
}
card* effect::get_handler() const {
if(active_handler)
return active_handler;
if(type & EFFECT_TYPE_XMATERIAL)
return handler->overlay_target;
if (type & EFFECT_TYPE_XMATERIAL) {
if (active_handler)
return active_handler;
if (handler->overlay_target)
return handler->overlay_target;
if (last_handler)
return last_handler;
}
return handler;
}
uint8_t effect::get_handler_player() const {
......
......@@ -54,6 +54,7 @@ public:
uint16_t active_location{ 0 };
uint16_t active_sequence{ 0 };
card* active_handler{ nullptr };
card* last_handler{ nullptr };
std::vector<lua_Integer> label;
int32_t label_object{ 0 };
int32_t condition{ 0 };
......
......@@ -4056,7 +4056,10 @@ int32_t field::add_chain(uint16_t step) {
if((peffect->card_type & (TYPE_TRAP | TYPE_MONSTER)) == (TYPE_TRAP | TYPE_MONSTER))
peffect->card_type -= TYPE_TRAP;
peffect->set_active_type();
peffect->active_handler = peffect->handler->overlay_target;
if (peffect->type & EFFECT_TYPE_XMATERIAL) {
peffect->active_handler = peffect->handler->overlay_target;
peffect->last_handler = peffect->handler->overlay_target;
}
clit.chain_count = (uint8_t)core.current_chain.size() + 1;
clit.target_cards = 0;
clit.target_player = PLAYER_NONE;
......
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