Commit 3b29e94c authored by salix5's avatar salix5

add STATUS_FLIP_SUMMONING

parent 6b971a56
......@@ -1884,7 +1884,14 @@ int32 field::summon(uint16 step, uint8 sumplayer, card* target, effect* proc, ui
return FALSE;
}
case 13: {
target->set_status(STATUS_SUMMONING, TRUE);
if (core.is_gemini_summoning) {
target->set_status(STATUS_SUMMONING, FALSE);
target->set_status(STATUS_FLIP_SUMMONING, TRUE);
}
else {
target->set_status(STATUS_SUMMONING, TRUE);
target->set_status(STATUS_FLIP_SUMMONING, FALSE);
}
target->set_status(STATUS_SUMMON_DISABLED, FALSE);
raise_event(target, EVENT_SUMMON, proc, 0, sumplayer, sumplayer, 0);
process_instant_event();
......@@ -1892,26 +1899,29 @@ int32 field::summon(uint16 step, uint8 sumplayer, card* target, effect* proc, ui
return FALSE;
}
case 14: {
if(target->is_status(STATUS_SUMMONING)) {
if (core.is_gemini_summoning && target->is_status(STATUS_FLIP_SUMMONING) || !core.is_gemini_summoning && target->is_status(STATUS_SUMMONING)) {
core.units.begin()->step = 14;
return FALSE;
}
core.is_gemini_summoning = false;
if(proc) {
remove_oath_effect(proc);
if(proc->is_flag(EFFECT_FLAG_COUNT_LIMIT) && (proc->count_code & EFFECT_COUNT_CODE_OATH)) {
dec_effect_code(proc->count_code, sumplayer);
if (core.is_summon_negated) {
if (proc) {
remove_oath_effect(proc);
if (proc->is_flag(EFFECT_FLAG_COUNT_LIMIT) && (proc->count_code & EFFECT_COUNT_CODE_OATH)) {
dec_effect_code(proc->count_code, sumplayer);
}
}
if (effect_set* peset = (effect_set*)core.units.begin()->ptr2) {
for (int32 i = 0; i < peset->size(); ++i)
remove_oath_effect(peset->at(i));
delete peset;
core.units.begin()->ptr2 = 0;
}
if (target->is_status(STATUS_SUMMON_DISABLED) && target->current.location == LOCATION_MZONE)
send_to(target, 0, REASON_RULE, PLAYER_NONE, sumplayer, LOCATION_GRAVE, 0, 0);
adjust_instant();
}
if(effect_set* peset = (effect_set*)core.units.begin()->ptr2) {
for(int32 i = 0; i < peset->size(); ++i)
remove_oath_effect(peset->at(i));
delete peset;
core.units.begin()->ptr2 = 0;
}
if (target->is_status(STATUS_SUMMON_DISABLED) && target->current.location == LOCATION_MZONE)
send_to(target, 0, REASON_RULE, PLAYER_NONE, sumplayer, LOCATION_GRAVE, 0, 0);
adjust_instant();
core.is_gemini_summoning = false;
core.is_summon_negated = false;
add_process(PROCESSOR_POINT_EVENT, 0, 0, 0, FALSE, 0);
return TRUE;
}
......@@ -1927,6 +1937,7 @@ int32 field::summon(uint16 step, uint8 sumplayer, card* target, effect* proc, ui
core.units.begin()->ptr2 = 0;
}
target->set_status(STATUS_SUMMONING, FALSE);
target->set_status(STATUS_FLIP_SUMMONING, FALSE);
target->set_status(STATUS_SUMMON_TURN, TRUE);
target->enable_field_effect(true);
if(target->is_status(STATUS_DISABLED))
......@@ -2001,7 +2012,7 @@ int32 field::flip_summon(uint16 step, uint8 sumplayer, card * target, uint32 act
if(target->is_affected_by_effect(EFFECT_CANNOT_DISABLE_FLIP_SUMMON))
core.units.begin()->step = 2;
else {
target->set_status(STATUS_SUMMONING, TRUE);
target->set_status(STATUS_FLIP_SUMMONING, TRUE);
target->set_status(STATUS_SUMMON_DISABLED, FALSE);
raise_event(target, EVENT_FLIP_SUMMON, 0, 0, sumplayer, sumplayer, 0);
process_instant_event();
......@@ -2010,16 +2021,19 @@ int32 field::flip_summon(uint16 step, uint8 sumplayer, card * target, uint32 act
return FALSE;
}
case 2: {
if(target->is_status(STATUS_SUMMONING))
if(target->is_status(STATUS_FLIP_SUMMONING))
return FALSE;
if(effect_set* peset = (effect_set*)core.units.begin()->ptr1) {
for(int32 i = 0; i < peset->size(); ++i)
remove_oath_effect(peset->at(i));
delete peset;
core.units.begin()->ptr1 = 0;
if (core.is_summon_negated) {
if (effect_set* peset = (effect_set*)core.units.begin()->ptr1) {
for (int32 i = 0; i < peset->size(); ++i)
remove_oath_effect(peset->at(i));
delete peset;
core.units.begin()->ptr1 = 0;
}
if (target->is_status(STATUS_SUMMON_DISABLED) && target->current.location == LOCATION_MZONE)
send_to(target, 0, REASON_RULE, PLAYER_NONE, sumplayer, LOCATION_GRAVE, 0, 0);
}
if (target->is_status(STATUS_SUMMON_DISABLED) && target->current.location == LOCATION_MZONE)
send_to(target, 0, REASON_RULE, PLAYER_NONE, sumplayer, LOCATION_GRAVE, 0, 0);
core.is_summon_negated = false;
add_process(PROCESSOR_POINT_EVENT, 0, 0, 0, FALSE, 0);
return TRUE;
}
......@@ -2030,7 +2044,7 @@ int32 field::flip_summon(uint16 step, uint8 sumplayer, card * target, uint32 act
delete peset;
core.units.begin()->ptr1 = 0;
}
target->set_status(STATUS_SUMMONING, FALSE);
target->set_status(STATUS_FLIP_SUMMONING, FALSE);
target->enable_field_effect(true);
if(target->is_status(STATUS_DISABLED))
target->reset(RESET_DISABLE, RESET_EVENT);
......@@ -4139,6 +4153,7 @@ int32 field::send_to(uint16 step, group * targets, effect * reason_effect, uint3
if((core.deck_reversed && pcard->current.location == LOCATION_DECK) || (pcard->current.position == POS_FACEUP_DEFENSE))
param->show_decktop[pcard->current.controler] = true;
pcard->set_status(STATUS_LEAVE_CONFIRMED, FALSE);
pcard->set_status(STATUS_FLIP_SUMMONING, FALSE);
if(pcard->status & (STATUS_SUMMON_DISABLED | STATUS_ACTIVATE_DISABLED)) {
pcard->set_status(STATUS_SUMMON_DISABLED | STATUS_ACTIVATE_DISABLED, FALSE);
pcard->previous.location = 0;
......@@ -4187,6 +4202,7 @@ int32 field::send_to(uint16 step, group * targets, effect * reason_effect, uint3
pduel->write_buffer32(pcard->get_info_location());
pduel->write_buffer32(pcard->current.reason);
pcard->set_status(STATUS_LEAVE_CONFIRMED, FALSE);
pcard->set_status(STATUS_FLIP_SUMMONING, FALSE);
if(pcard->status & (STATUS_SUMMON_DISABLED | STATUS_ACTIVATE_DISABLED)) {
pcard->set_status(STATUS_SUMMON_DISABLED | STATUS_ACTIVATE_DISABLED, FALSE);
pcard->previous.location = 0;
......@@ -4900,6 +4916,7 @@ int32 field::change_position(uint16 step, group * targets, effect * reason_effec
trapmonster = true;
if(pcard->status & (STATUS_SUMMON_DISABLED | STATUS_ACTIVATE_DISABLED))
pcard->set_status(STATUS_SUMMON_DISABLED | STATUS_ACTIVATE_DISABLED, FALSE);
pcard->set_status(STATUS_FLIP_SUMMONING, FALSE);
pcard->reset(RESET_TURN_SET, RESET_EVENT);
pcard->clear_card_target();
pcard->set_status(STATUS_SET_TURN, TRUE);
......
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