Commit 3ee63201 authored by VanillaSalt's avatar VanillaSalt

fix

parent b2071620
......@@ -1045,28 +1045,45 @@ int32 field::control_adjust(uint16 step) {
int32 field::self_destroy(uint16 step) {
switch(step) {
case 0: {
if(core.self_destroy_set.empty()) {
core.units.begin()->step = 1;
return FALSE;
}
card_set cset;
for (auto cit = core.self_destroy_set.begin(); cit != core.self_destroy_set.end();) {
auto rm = cit++;
card* pcard = *rm;
if(pcard->current.reason_effect->code == EFFECT_UNIQUE_CHECK) {
cset.insert(pcard);
core.self_destroy_set.erase(rm);
}
}
if(!cset.empty())
destroy(&cset, 0, REASON_RULE, 5);
return FALSE;
}
case 1: {
core.operated_set.clear();
if(!core.self_destroy_set.empty())
destroy(&core.self_destroy_set, 0, REASON_EFFECT, 5);
else
returns.ivalue[0] = 0;
return FALSE;
}
case 1: {
case 2: {
core.self_destroy_set.clear();
core.operated_set.clear();
returns.ivalue[0] = 0;
if(!(core.global_flag & GLOBALFLAG_SELF_TOGRAVE))
return TRUE;
core.units.begin()->arg1 = returns.ivalue[0];
if(!core.self_tograve_set.empty())
send_to(&core.self_tograve_set, 0, REASON_EFFECT, PLAYER_NONE, PLAYER_NONE, LOCATION_GRAVE, 0, POS_FACEUP);
else
return TRUE;
return FALSE;
}
case 2: {
case 3: {
core.self_tograve_set.clear();
core.operated_set.clear();
returns.ivalue[0] += core.units.begin()->arg1;
returns.ivalue[0] = 0;
return 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