Commit b90b6fad authored by mercury233's avatar mercury233
parents bdcf92c6 eed4383b
......@@ -1108,8 +1108,6 @@ void field::add_effect(effect* peffect, uint8 owner_player) {
} else {
if (peffect->type & EFFECT_TYPE_IGNITION)
it = effects.ignition_effect.emplace(peffect->code, peffect);
else if (peffect->type & EFFECT_TYPE_ACTIVATE)
it = effects.activate_effect.emplace(peffect->code, peffect);
else if (peffect->type & EFFECT_TYPE_TRIGGER_O && peffect->type & EFFECT_TYPE_FIELD)
it = effects.trigger_o_effect.emplace(peffect->code, peffect);
else if (peffect->type & EFFECT_TYPE_TRIGGER_F && peffect->type & EFFECT_TYPE_FIELD)
......@@ -1118,6 +1116,8 @@ void field::add_effect(effect* peffect, uint8 owner_player) {
it = effects.quick_o_effect.emplace(peffect->code, peffect);
else if (peffect->type & EFFECT_TYPE_QUICK_F)
it = effects.quick_f_effect.emplace(peffect->code, peffect);
else if (peffect->type & EFFECT_TYPE_ACTIVATE)
it = effects.activate_effect.emplace(peffect->code, peffect);
else if (peffect->type & EFFECT_TYPE_CONTINUOUS)
it = effects.continuous_effect.emplace(peffect->code, peffect);
}
......
......@@ -4185,6 +4185,14 @@ int32 field::move_to_field(uint16 step, card* target, uint32 enable, uint32 ret,
}
if(ct <= 0)
return TRUE;
if((zone & zone - 1) == 0) {
for(uint8 seq = 0; seq < 8; seq++) {
if((1 << seq) & zone) {
returns.bvalue[2] = seq;
return FALSE;
}
}
}
if(move_player == playerid) {
if(location == LOCATION_SZONE)
flag = ((flag & 0xff) << 8) | 0xffff00ff;
......
......@@ -4687,9 +4687,6 @@ int32 field::solve_chain(uint16 step, uint32 chainend_arg1, uint32 chainend_arg2
}
case 1: {
effect* peffect = cait->triggering_effect;
int32 activate = (peffect->type & EFFECT_TYPE_ACTIVATE);
if(activate && (cait->flag & CHAIN_ACTIVATING))
peffect->type &= ~EFFECT_TYPE_ACTIVATE;
if(cait->flag & CHAIN_DISABLE_ACTIVATE && is_chain_negatable(cait->chain_count)) {
remove_oath_effect(peffect);
if(peffect->is_flag(EFFECT_FLAG_COUNT_LIMIT) && (peffect->count_code & EFFECT_COUNT_CODE_OATH)) {
......@@ -4707,7 +4704,7 @@ int32 field::solve_chain(uint16 step, uint32 chainend_arg1, uint32 chainend_arg2
break_effect();
core.chain_solving = TRUE;
card* pcard = peffect->get_handler();
if(activate && pcard->is_has_relation(*cait)) {
if((peffect->type & EFFECT_TYPE_ACTIVATE) && pcard->is_has_relation(*cait)) {
pcard->set_status(STATUS_ACTIVATED, TRUE);
pcard->enable_field_effect(true);
if(core.duel_rule <= 2) {
......@@ -4828,6 +4825,8 @@ int32 field::solve_chain(uint16 step, uint32 chainend_arg1, uint32 chainend_arg2
case 10: {
effect* peffect = cait->triggering_effect;
card* pcard = peffect->get_handler();
if((peffect->type & EFFECT_TYPE_ACTIVATE) && (cait->flag & CHAIN_ACTIVATING))
peffect->type &= ~EFFECT_TYPE_ACTIVATE;
if((cait->flag & CHAIN_HAND_EFFECT) && !pcard->is_position(POS_FACEUP) && (pcard->current.location == LOCATION_HAND))
shuffle(pcard->current.controler, LOCATION_HAND);
if(cait->target_cards && cait->target_cards->container.size()) {
......
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