Commit 0d2d78fc authored by salix5's avatar salix5

edit

parent 9516857b
...@@ -999,7 +999,7 @@ void card::cancel_field_effect() { ...@@ -999,7 +999,7 @@ void card::cancel_field_effect() {
if(unique_code && (current.location & unique_location)) if(unique_code && (current.location & unique_location))
pduel->game_field->remove_unique_card(this); pduel->game_field->remove_unique_card(this);
} }
void card::enable_field_effect(int32 enabled) { void card::enable_field_effect(bool enabled) {
if (current.location == 0) if (current.location == 0)
return; return;
if ((enabled && get_status(STATUS_EFFECT_ENABLED)) || (!enabled && !get_status(STATUS_EFFECT_ENABLED))) if ((enabled && get_status(STATUS_EFFECT_ENABLED)) || (!enabled && !get_status(STATUS_EFFECT_ENABLED)))
...@@ -1390,6 +1390,7 @@ void card::reset_effect_count() { ...@@ -1390,6 +1390,7 @@ void card::reset_effect_count() {
peffect->recharge(); peffect->recharge();
} }
} }
// refresh STATUS_DISABLED based on EFFECT_DISABLE and EFFECT_CANNOT_DISABLE
int32 card::refresh_disable_status() { int32 card::refresh_disable_status() {
int32 pre_dis = is_status(STATUS_DISABLED); int32 pre_dis = is_status(STATUS_DISABLED);
filter_immune_effect(); filter_immune_effect();
...@@ -1687,6 +1688,7 @@ void card::filter_single_continuous_effect(int32 code, effect_set* eset, uint8 s ...@@ -1687,6 +1688,7 @@ void card::filter_single_continuous_effect(int32 code, effect_set* eset, uint8 s
if(sort) if(sort)
eset->sort(); eset->sort();
} }
// refresh this->immune_effect
void card::filter_immune_effect() { void card::filter_immune_effect() {
effect* peffect; effect* peffect;
immune_effect.clear(); immune_effect.clear();
...@@ -1712,6 +1714,9 @@ void card::filter_immune_effect() { ...@@ -1712,6 +1714,9 @@ void card::filter_immune_effect() {
} }
immune_effect.sort(); immune_effect.sort();
} }
// for all disable-related peffect of this,
// 1. put all cards in the target of peffect into effects.disable_check_set, effects.disable_check_list
// 2. add equiping_target of peffect into effects.disable_check_set, effects.disable_check_list
void card::filter_disable_related_cards() { void card::filter_disable_related_cards() {
for (auto it = indexer.begin(); it != indexer.end(); ++it) { for (auto it = indexer.begin(); it != indexer.end(); ++it) {
effect* peffect = it->first; effect* peffect = it->first;
...@@ -1858,6 +1863,7 @@ void card::filter_spsummon_procedure_g(uint8 playerid, effect_set* peset) { ...@@ -1858,6 +1863,7 @@ void card::filter_spsummon_procedure_g(uint8 playerid, effect_set* peset) {
pduel->game_field->core.reason_player = op; pduel->game_field->core.reason_player = op;
} }
} }
// return: an effect with code which affects this or 0
effect* card::is_affected_by_effect(int32 code) { effect* card::is_affected_by_effect(int32 code) {
effect* peffect; effect* peffect;
auto rg = single_effect.equal_range(code); auto rg = single_effect.equal_range(code);
...@@ -2319,6 +2325,7 @@ int32 card::is_setable_szone(uint8 playerid, uint8 ignore_fd) { ...@@ -2319,6 +2325,7 @@ int32 card::is_setable_szone(uint8 playerid, uint8 ignore_fd) {
pduel->game_field->restore_lp_cost(); pduel->game_field->restore_lp_cost();
return TRUE; return TRUE;
} }
// return: this is affected by peffect or not
int32 card::is_affect_by_effect(effect* peffect) { int32 card::is_affect_by_effect(effect* peffect) {
if(is_status(STATUS_SUMMONING)) if(is_status(STATUS_SUMMONING))
return FALSE; return FALSE;
......
...@@ -187,7 +187,7 @@ public: ...@@ -187,7 +187,7 @@ public:
void xyz_remove(card* mat); void xyz_remove(card* mat);
void apply_field_effect(); void apply_field_effect();
void cancel_field_effect(); void cancel_field_effect();
void enable_field_effect(int32 enabled); void enable_field_effect(bool enabled);
int32 add_effect(effect* peffect); int32 add_effect(effect* peffect);
void remove_effect(effect* peffect); void remove_effect(effect* peffect);
void remove_effect(effect* peffect, effect_container::iterator it); void remove_effect(effect* peffect, effect_container::iterator it);
......
...@@ -376,7 +376,7 @@ int32 effect::is_activate_check(uint8 playerid, const tevent& e, int32 neglect_c ...@@ -376,7 +376,7 @@ int32 effect::is_activate_check(uint8 playerid, const tevent& e, int32 neglect_c
pduel->game_field->restore_lp_cost(); pduel->game_field->restore_lp_cost();
return result; return result;
} }
// check if pcard is the target of a field effect // check if pcard is the target of the field effect this
int32 effect::is_target(card* pcard) { int32 effect::is_target(card* pcard) {
if(type & EFFECT_TYPE_ACTIONS) if(type & EFFECT_TYPE_ACTIONS)
return FALSE; return FALSE;
......
...@@ -897,6 +897,7 @@ void field::filter_field_effect(uint32 code, effect_set* eset, uint8 sort) { ...@@ -897,6 +897,7 @@ void field::filter_field_effect(uint32 code, effect_set* eset, uint8 sort) {
if(sort) if(sort)
eset->sort(); eset->sort();
} }
// put all cards in the target of peffect into cset
void field::filter_affected_cards(effect* peffect, card_set* cset) { void field::filter_affected_cards(effect* peffect, card_set* cset) {
if ((peffect->type & EFFECT_TYPE_ACTIONS) || !(peffect->type & EFFECT_TYPE_FIELD) || peffect->is_flag(EFFECT_FLAG_PLAYER_TARGET)) if ((peffect->type & EFFECT_TYPE_ACTIONS) || !(peffect->type & EFFECT_TYPE_FIELD) || peffect->is_flag(EFFECT_FLAG_PLAYER_TARGET))
return; return;
...@@ -1389,6 +1390,7 @@ int32 field::get_overlay_count(uint8 self, uint8 s, uint8 o) { ...@@ -1389,6 +1390,7 @@ int32 field::get_overlay_count(uint8 self, uint8 s, uint8 o) {
} }
return count; return count;
} }
// put all cards in the target of peffect into effects.disable_check_set, effects.disable_check_list
void field::update_disable_check_list(effect* peffect) { void field::update_disable_check_list(effect* peffect) {
card_set cset; card_set cset;
filter_affected_cards(peffect, &cset); filter_affected_cards(peffect, &cset);
......
...@@ -43,7 +43,7 @@ int32 scriptlib::debug_add_card(lua_State *L) { ...@@ -43,7 +43,7 @@ int32 scriptlib::debug_add_card(lua_State *L) {
pduel->game_field->add_card(playerid, pcard, location, sequence); pduel->game_field->add_card(playerid, pcard, location, sequence);
pcard->current.position = position; pcard->current.position = position;
if(!(location & LOCATION_ONFIELD) || (position & POS_FACEUP)) { if(!(location & LOCATION_ONFIELD) || (position & POS_FACEUP)) {
pcard->enable_field_effect(TRUE); pcard->enable_field_effect(true);
pduel->game_field->adjust_instant(); pduel->game_field->adjust_instant();
} }
if(proc) if(proc)
......
...@@ -599,7 +599,7 @@ int32 scriptlib::duel_move_to_field(lua_State *L) { ...@@ -599,7 +599,7 @@ int32 scriptlib::duel_move_to_field(lua_State *L) {
uint32 positions = lua_tointeger(L, 5); uint32 positions = lua_tointeger(L, 5);
uint32 enable = lua_toboolean(L, 6); uint32 enable = lua_toboolean(L, 6);
duel* pduel = pcard->pduel; duel* pduel = pcard->pduel;
pcard->enable_field_effect(FALSE); pcard->enable_field_effect(false);
pduel->game_field->adjust_instant(); pduel->game_field->adjust_instant();
pduel->game_field->move_to_field(pcard, move_player, playerid, destination, positions, enable); pduel->game_field->move_to_field(pcard, move_player, playerid, destination, positions, enable);
pduel->game_field->core.subunits.begin()->type = PROCESSOR_MOVETOFIELD_S; pduel->game_field->core.subunits.begin()->type = PROCESSOR_MOVETOFIELD_S;
...@@ -616,7 +616,7 @@ int32 scriptlib::duel_return_to_field(lua_State *L) { ...@@ -616,7 +616,7 @@ int32 scriptlib::duel_return_to_field(lua_State *L) {
if(lua_gettop(L) > 1) if(lua_gettop(L) > 1)
pos = lua_tointeger(L, 2); pos = lua_tointeger(L, 2);
duel* pduel = pcard->pduel; duel* pduel = pcard->pduel;
pcard->enable_field_effect(FALSE); pcard->enable_field_effect(false);
pduel->game_field->adjust_instant(); pduel->game_field->adjust_instant();
pduel->game_field->refresh_location_info_instant(); pduel->game_field->refresh_location_info_instant();
pduel->game_field->move_to_field(pcard, pcard->previous.controler, pcard->previous.controler, pcard->previous.location, pos, TRUE, 1); pduel->game_field->move_to_field(pcard, pcard->previous.controler, pcard->previous.controler, pcard->previous.location, pos, TRUE, 1);
...@@ -974,7 +974,7 @@ int32 scriptlib::duel_equip_complete(lua_State *L) { ...@@ -974,7 +974,7 @@ int32 scriptlib::duel_equip_complete(lua_State *L) {
for(auto cit = pduel->game_field->core.equiping_cards.begin(); cit != pduel->game_field->core.equiping_cards.end(); ++cit) { for(auto cit = pduel->game_field->core.equiping_cards.begin(); cit != pduel->game_field->core.equiping_cards.end(); ++cit) {
card* equip_card = *cit; card* equip_card = *cit;
if(equip_card->is_position(POS_FACEUP)) if(equip_card->is_position(POS_FACEUP))
equip_card->enable_field_effect(TRUE); equip_card->enable_field_effect(true);
etargets.insert(equip_card->equiping_target); etargets.insert(equip_card->equiping_target);
} }
pduel->game_field->adjust_instant(); pduel->game_field->adjust_instant();
......
...@@ -140,7 +140,7 @@ extern "C" DECL_DLLEXPORT void new_card(ptr pduel, uint32 code, uint8 owner, uin ...@@ -140,7 +140,7 @@ extern "C" DECL_DLLEXPORT void new_card(ptr pduel, uint32 code, uint8 owner, uin
ptduel->game_field->add_card(playerid, pcard, location, sequence); ptduel->game_field->add_card(playerid, pcard, location, sequence);
pcard->current.position = position; pcard->current.position = position;
if(!(location & LOCATION_ONFIELD) || (position & POS_FACEUP)) { if(!(location & LOCATION_ONFIELD) || (position & POS_FACEUP)) {
pcard->enable_field_effect(TRUE); pcard->enable_field_effect(true);
ptduel->game_field->adjust_instant(); ptduel->game_field->adjust_instant();
} }
if(location & LOCATION_ONFIELD) { if(location & LOCATION_ONFIELD) {
......
...@@ -320,7 +320,7 @@ int32 field::draw(uint16 step, effect* reason_effect, uint32 reason, uint8 reaso ...@@ -320,7 +320,7 @@ int32 field::draw(uint16 step, effect* reason_effect, uint32 reason, uint8 reaso
} }
drawed++; drawed++;
pcard = player[playerid].list_main.back(); pcard = player[playerid].list_main.back();
pcard->enable_field_effect(FALSE); pcard->enable_field_effect(false);
pcard->cancel_field_effect(); pcard->cancel_field_effect();
player[playerid].list_main.pop_back(); player[playerid].list_main.pop_back();
pcard->previous.controler = pcard->current.controler; pcard->previous.controler = pcard->current.controler;
...@@ -333,7 +333,7 @@ int32 field::draw(uint16 step, effect* reason_effect, uint32 reason, uint8 reaso ...@@ -333,7 +333,7 @@ int32 field::draw(uint16 step, effect* reason_effect, uint32 reason, uint8 reaso
pcard->current.reason = reason | REASON_DRAW; pcard->current.reason = reason | REASON_DRAW;
pcard->current.location = 0; pcard->current.location = 0;
add_card(playerid, pcard, LOCATION_HAND, 0); add_card(playerid, pcard, LOCATION_HAND, 0);
pcard->enable_field_effect(TRUE); pcard->enable_field_effect(true);
effect* pub = pcard->is_affected_by_effect(EFFECT_PUBLIC); effect* pub = pcard->is_affected_by_effect(EFFECT_PUBLIC);
if(pub) if(pub)
public_count++; public_count++;
...@@ -1093,7 +1093,7 @@ int32 field::equip(uint16 step, uint8 equip_player, card * equip_card, card * ta ...@@ -1093,7 +1093,7 @@ int32 field::equip(uint16 step, uint8 equip_player, card * equip_card, card * ta
return TRUE; return TRUE;
if(equip_card->equiping_target) { if(equip_card->equiping_target) {
equip_card->unequip(); equip_card->unequip();
equip_card->enable_field_effect(FALSE); equip_card->enable_field_effect(false);
return FALSE; return FALSE;
} }
if(equip_card->current.location == LOCATION_SZONE) { if(equip_card->current.location == LOCATION_SZONE) {
...@@ -1103,7 +1103,7 @@ int32 field::equip(uint16 step, uint8 equip_player, card * equip_card, card * ta ...@@ -1103,7 +1103,7 @@ int32 field::equip(uint16 step, uint8 equip_player, card * equip_card, card * ta
} }
if(get_useable_count(equip_player, LOCATION_SZONE, equip_player, LOCATION_REASON_TOFIELD) <= 0) if(get_useable_count(equip_player, LOCATION_SZONE, equip_player, LOCATION_REASON_TOFIELD) <= 0)
return TRUE; return TRUE;
equip_card->enable_field_effect(FALSE); equip_card->enable_field_effect(false);
move_to_field(equip_card, equip_player, equip_player, LOCATION_SZONE, (up || equip_card->is_position(POS_FACEUP)) ? POS_FACEUP : POS_FACEDOWN, FALSE, FALSE, TRUE); move_to_field(equip_card, equip_player, equip_player, LOCATION_SZONE, (up || equip_card->is_position(POS_FACEUP)) ? POS_FACEUP : POS_FACEDOWN, FALSE, FALSE, TRUE);
return FALSE; return FALSE;
} }
...@@ -1129,7 +1129,7 @@ int32 field::equip(uint16 step, uint8 equip_player, card * equip_card, card * ta ...@@ -1129,7 +1129,7 @@ int32 field::equip(uint16 step, uint8 equip_player, card * equip_card, card * ta
target->effect_target_owner.insert(equip_card); target->effect_target_owner.insert(equip_card);
if(!is_step) { if(!is_step) {
if(equip_card->is_position(POS_FACEUP)) if(equip_card->is_position(POS_FACEUP))
equip_card->enable_field_effect(TRUE); equip_card->enable_field_effect(true);
adjust_disable_check_list(); adjust_disable_check_list();
card_set cset; card_set cset;
cset.insert(equip_card); cset.insert(equip_card);
...@@ -1433,7 +1433,7 @@ int32 field::summon(uint16 step, uint8 sumplayer, card * target, effect * proc, ...@@ -1433,7 +1433,7 @@ int32 field::summon(uint16 step, uint8 sumplayer, card * target, effect * proc,
if(proc->o_range) if(proc->o_range)
targetplayer = 1 - sumplayer; targetplayer = 1 - sumplayer;
} }
target->enable_field_effect(FALSE); target->enable_field_effect(false);
move_to_field(target, sumplayer, targetplayer, LOCATION_MZONE, positions); move_to_field(target, sumplayer, targetplayer, LOCATION_MZONE, positions);
core.summoning_card = target; core.summoning_card = target;
core.units.begin()->step = 10; core.units.begin()->step = 10;
...@@ -1443,7 +1443,7 @@ int32 field::summon(uint16 step, uint8 sumplayer, card * target, effect * proc, ...@@ -1443,7 +1443,7 @@ int32 field::summon(uint16 step, uint8 sumplayer, card * target, effect * proc,
core.summon_depth--; core.summon_depth--;
if(core.summon_depth) if(core.summon_depth)
return TRUE; return TRUE;
target->enable_field_effect(FALSE); target->enable_field_effect(false);
target->current.reason_effect = 0; target->current.reason_effect = 0;
target->current.reason_player = sumplayer; target->current.reason_player = sumplayer;
effect* deffect = pduel->new_effect(); effect* deffect = pduel->new_effect();
...@@ -1553,7 +1553,7 @@ int32 field::summon(uint16 step, uint8 sumplayer, card * target, effect * proc, ...@@ -1553,7 +1553,7 @@ int32 field::summon(uint16 step, uint8 sumplayer, card * target, effect * proc,
} }
target->set_status(STATUS_SUMMONING, FALSE); target->set_status(STATUS_SUMMONING, FALSE);
target->set_status(STATUS_SUMMON_TURN, TRUE); target->set_status(STATUS_SUMMON_TURN, TRUE);
target->enable_field_effect(TRUE); target->enable_field_effect(true);
if(target->is_status(STATUS_DISABLED)) if(target->is_status(STATUS_DISABLED))
target->reset(RESET_DISABLE, RESET_EVENT); target->reset(RESET_DISABLE, RESET_EVENT);
core.summoning_card = 0; core.summoning_card = 0;
...@@ -1636,7 +1636,7 @@ int32 field::flip_summon(uint16 step, uint8 sumplayer, card * target) { ...@@ -1636,7 +1636,7 @@ int32 field::flip_summon(uint16 step, uint8 sumplayer, card * target) {
} }
case 3: { case 3: {
target->set_status(STATUS_SUMMONING, FALSE); target->set_status(STATUS_SUMMONING, FALSE);
target->enable_field_effect(TRUE); target->enable_field_effect(true);
if(target->is_status(STATUS_DISABLED)) if(target->is_status(STATUS_DISABLED))
target->reset(RESET_DISABLE, RESET_EVENT); target->reset(RESET_DISABLE, RESET_EVENT);
target->set_status(STATUS_FLIP_SUMMON_TURN, TRUE); target->set_status(STATUS_FLIP_SUMMON_TURN, TRUE);
...@@ -1867,7 +1867,7 @@ int32 field::mset(uint16 step, uint8 setplayer, card * target, effect * proc, ui ...@@ -1867,7 +1867,7 @@ int32 field::mset(uint16 step, uint8 setplayer, card * target, effect * proc, ui
if(proc->o_range) if(proc->o_range)
targetplayer = 1 - setplayer; targetplayer = 1 - setplayer;
} }
target->enable_field_effect(FALSE); target->enable_field_effect(false);
move_to_field(target, setplayer, targetplayer, LOCATION_MZONE, positions); move_to_field(target, setplayer, targetplayer, LOCATION_MZONE, positions);
return FALSE; return FALSE;
} }
...@@ -1919,7 +1919,7 @@ int32 field::sset(uint16 step, uint8 setplayer, uint8 toplayer, card * target) { ...@@ -1919,7 +1919,7 @@ int32 field::sset(uint16 step, uint8 setplayer, uint8 toplayer, card * target) {
return FALSE; return FALSE;
} }
case 1: { case 1: {
target->enable_field_effect(FALSE); target->enable_field_effect(false);
move_to_field(target, setplayer, toplayer, LOCATION_SZONE, POS_FACEDOWN); move_to_field(target, setplayer, toplayer, LOCATION_SZONE, POS_FACEDOWN);
return FALSE; return FALSE;
} }
...@@ -1980,7 +1980,7 @@ int32 field::sset_g(uint16 step, uint8 setplayer, uint8 toplayer, group* ptarget ...@@ -1980,7 +1980,7 @@ int32 field::sset_g(uint16 step, uint8 setplayer, uint8 toplayer, group* ptarget
case 1: { case 1: {
card_set* set_cards = (card_set*)ptarget; card_set* set_cards = (card_set*)ptarget;
card* target = *set_cards->begin(); card* target = *set_cards->begin();
target->enable_field_effect(FALSE); target->enable_field_effect(false);
move_to_field(target, setplayer, toplayer, LOCATION_SZONE, POS_FACEDOWN, FALSE); move_to_field(target, setplayer, toplayer, LOCATION_SZONE, POS_FACEDOWN, FALSE);
return FALSE; return FALSE;
} }
...@@ -2134,7 +2134,7 @@ int32 field::special_summon_rule(uint16 step, uint8 sumplayer, card * target, ui ...@@ -2134,7 +2134,7 @@ int32 field::special_summon_rule(uint16 step, uint8 sumplayer, card * target, ui
} }
if(positions == 0) if(positions == 0)
positions = POS_FACEUP_ATTACK; positions = POS_FACEUP_ATTACK;
target->enable_field_effect(FALSE); target->enable_field_effect(false);
move_to_field(target, sumplayer, targetplayer, LOCATION_MZONE, positions); move_to_field(target, sumplayer, targetplayer, LOCATION_MZONE, positions);
target->current.reason = REASON_SPSUMMON; target->current.reason = REASON_SPSUMMON;
target->current.reason_effect = peffect; target->current.reason_effect = peffect;
...@@ -2217,7 +2217,7 @@ int32 field::special_summon_rule(uint16 step, uint8 sumplayer, card * target, ui ...@@ -2217,7 +2217,7 @@ int32 field::special_summon_rule(uint16 step, uint8 sumplayer, card * target, ui
oeit->second = 0; oeit->second = 0;
target->set_status(STATUS_SUMMONING, FALSE); target->set_status(STATUS_SUMMONING, FALSE);
target->set_status(STATUS_PROC_COMPLETE | STATUS_SPSUMMON_TURN, TRUE); target->set_status(STATUS_PROC_COMPLETE | STATUS_SPSUMMON_TURN, TRUE);
target->enable_field_effect(TRUE); target->enable_field_effect(true);
if(target->is_status(STATUS_DISABLED)) if(target->is_status(STATUS_DISABLED))
target->reset(RESET_DISABLE, RESET_EVENT); target->reset(RESET_DISABLE, RESET_EVENT);
core.summoning_card = 0; core.summoning_card = 0;
...@@ -2294,7 +2294,7 @@ int32 field::special_summon_rule(uint16 step, uint8 sumplayer, card * target, ui ...@@ -2294,7 +2294,7 @@ int32 field::special_summon_rule(uint16 step, uint8 sumplayer, card * target, ui
case 23: { case 23: {
effect* peffect = core.units.begin()->peffect; effect* peffect = core.units.begin()->peffect;
card* pcard = *core.units.begin()->ptarget->it; card* pcard = *core.units.begin()->ptarget->it;
pcard->enable_field_effect(FALSE); pcard->enable_field_effect(false);
pcard->current.reason = REASON_SPSUMMON; pcard->current.reason = REASON_SPSUMMON;
pcard->current.reason_effect = peffect; pcard->current.reason_effect = peffect;
pcard->current.reason_player = sumplayer; pcard->current.reason_player = sumplayer;
...@@ -2371,7 +2371,7 @@ int32 field::special_summon_rule(uint16 step, uint8 sumplayer, card * target, ui ...@@ -2371,7 +2371,7 @@ int32 field::special_summon_rule(uint16 step, uint8 sumplayer, card * target, ui
for(auto cit = pgroup->container.begin(); cit != pgroup->container.end(); ++cit) { for(auto cit = pgroup->container.begin(); cit != pgroup->container.end(); ++cit) {
(*cit)->set_status(STATUS_SUMMONING, FALSE); (*cit)->set_status(STATUS_SUMMONING, FALSE);
(*cit)->set_status(STATUS_SPSUMMON_TURN, TRUE); (*cit)->set_status(STATUS_SPSUMMON_TURN, TRUE);
(*cit)->enable_field_effect(TRUE); (*cit)->enable_field_effect(true);
if((*cit)->is_status(STATUS_DISABLED)) if((*cit)->is_status(STATUS_DISABLED))
(*cit)->reset(RESET_DISABLE, RESET_EVENT); (*cit)->reset(RESET_DISABLE, RESET_EVENT);
} }
...@@ -2450,7 +2450,7 @@ int32 field::special_summon_step(uint16 step, group * targets, card * target) { ...@@ -2450,7 +2450,7 @@ int32 field::special_summon_step(uint16 step, group * targets, card * target) {
case 1: { case 1: {
if(!targets) if(!targets)
core.special_summoning.insert(target); core.special_summoning.insert(target);
target->enable_field_effect(FALSE); target->enable_field_effect(false);
check_card_counter(target, 3, target->summon_player); check_card_counter(target, 3, target->summon_player);
move_to_field(target, target->summon_player, playerid, LOCATION_MZONE, positions); move_to_field(target, target->summon_player, playerid, LOCATION_MZONE, positions);
return FALSE; return FALSE;
...@@ -2527,7 +2527,7 @@ int32 field::special_summon(uint16 step, effect * reason_effect, uint8 reason_pl ...@@ -2527,7 +2527,7 @@ int32 field::special_summon(uint16 step, effect * reason_effect, uint8 reason_pl
(*cit)->set_status(STATUS_SPSUMMON_STEP, FALSE); (*cit)->set_status(STATUS_SPSUMMON_STEP, FALSE);
(*cit)->set_status(STATUS_SPSUMMON_TURN, TRUE); (*cit)->set_status(STATUS_SPSUMMON_TURN, TRUE);
if((*cit)->is_position(POS_FACEUP)) if((*cit)->is_position(POS_FACEUP))
(*cit)->enable_field_effect(TRUE); (*cit)->enable_field_effect(true);
} }
adjust_instant(); adjust_instant();
return FALSE; return FALSE;
...@@ -3136,7 +3136,7 @@ int32 field::send_to(uint16 step, group * targets, effect * reason_effect, uint3 ...@@ -3136,7 +3136,7 @@ int32 field::send_to(uint16 step, group * targets, effect * reason_effect, uint3
case 3: { case 3: {
uint32 dest, redirect, redirect_seq, check_cb; uint32 dest, redirect, redirect_seq, check_cb;
for(auto cit = targets->container.begin(); cit != targets->container.end(); ++cit) for(auto cit = targets->container.begin(); cit != targets->container.end(); ++cit)
(*cit)->enable_field_effect(FALSE); (*cit)->enable_field_effect(false);
adjust_disable_check_list(); adjust_disable_check_list();
for(auto cit = targets->container.begin(); cit != targets->container.end(); ++cit) { for(auto cit = targets->container.begin(); cit != targets->container.end(); ++cit) {
card* pcard = *cit; card* pcard = *cit;
...@@ -3231,7 +3231,7 @@ int32 field::send_to(uint16 step, group * targets, effect * reason_effect, uint3 ...@@ -3231,7 +3231,7 @@ int32 field::send_to(uint16 step, group * targets, effect * reason_effect, uint3
uint32 check_cb = (pcard->operation_param >> 20) & 0xf; uint32 check_cb = (pcard->operation_param >> 20) & 0xf;
if(check_cb) if(check_cb)
param->predirect = pcard->is_affected_by_effect(EFFECT_TO_GRAVE_REDIRECT_CB); param->predirect = pcard->is_affected_by_effect(EFFECT_TO_GRAVE_REDIRECT_CB);
pcard->enable_field_effect(FALSE); pcard->enable_field_effect(false);
if(pcard->data.type & TYPE_TOKEN) { if(pcard->data.type & TYPE_TOKEN) {
pduel->write_buffer8(MSG_MOVE); pduel->write_buffer8(MSG_MOVE);
pduel->write_buffer32(pcard->data.code); pduel->write_buffer32(pcard->data.code);
...@@ -3431,7 +3431,7 @@ int32 field::send_to(uint16 step, group * targets, effect * reason_effect, uint3 ...@@ -3431,7 +3431,7 @@ int32 field::send_to(uint16 step, group * targets, effect * reason_effect, uint3
} }
} }
if(!(pcard->data.type & TYPE_TOKEN)) { if(!(pcard->data.type & TYPE_TOKEN)) {
pcard->enable_field_effect(TRUE); pcard->enable_field_effect(true);
if(nloc == LOCATION_HAND) { if(nloc == LOCATION_HAND) {
tohand.insert(pcard); tohand.insert(pcard);
pcard->reset(RESET_TOHAND, RESET_EVENT); pcard->reset(RESET_TOHAND, RESET_EVENT);
...@@ -3575,7 +3575,7 @@ int32 field::discard_deck(uint16 step, uint8 playerid, uint8 count, uint32 reaso ...@@ -3575,7 +3575,7 @@ int32 field::discard_deck(uint16 step, uint8 playerid, uint8 count, uint32 reaso
pduel->write_buffer8(pcard->current.location); pduel->write_buffer8(pcard->current.location);
pduel->write_buffer8(pcard->current.sequence); pduel->write_buffer8(pcard->current.sequence);
pduel->write_buffer8(pcard->current.position); pduel->write_buffer8(pcard->current.position);
pcard->enable_field_effect(FALSE); pcard->enable_field_effect(false);
pcard->cancel_field_effect(); pcard->cancel_field_effect();
player[playerid].list_main.pop_back(); player[playerid].list_main.pop_back();
pcard->previous.controler = pcard->current.controler; pcard->previous.controler = pcard->current.controler;
...@@ -3585,7 +3585,7 @@ int32 field::discard_deck(uint16 step, uint8 playerid, uint8 count, uint32 reaso ...@@ -3585,7 +3585,7 @@ int32 field::discard_deck(uint16 step, uint8 playerid, uint8 count, uint32 reaso
pcard->current.controler = PLAYER_NONE; pcard->current.controler = PLAYER_NONE;
pcard->current.location = 0; pcard->current.location = 0;
add_card(pcard->owner, pcard, dest, 0); add_card(pcard->owner, pcard, dest, 0);
pcard->enable_field_effect(TRUE); pcard->enable_field_effect(true);
pcard->current.position = POS_FACEUP; pcard->current.position = POS_FACEUP;
pduel->write_buffer8(pcard->current.controler); pduel->write_buffer8(pcard->current.controler);
pduel->write_buffer8(pcard->current.location); pduel->write_buffer8(pcard->current.location);
...@@ -3773,7 +3773,7 @@ int32 field::move_to_field(uint16 step, card * target, uint32 enable, uint32 ret ...@@ -3773,7 +3773,7 @@ int32 field::move_to_field(uint16 step, card * target, uint32 enable, uint32 ret
if((target->previous.location == LOCATION_SZONE) && target->equiping_target) if((target->previous.location == LOCATION_SZONE) && target->equiping_target)
target->unequip(); target->unequip();
if(enable || ((ret == 1) && target->is_position(POS_FACEUP))) if(enable || ((ret == 1) && target->is_position(POS_FACEUP)))
target->enable_field_effect(TRUE); target->enable_field_effect(true);
if(ret == 1 && target->current.location == LOCATION_MZONE && !(target->data.type & TYPE_MONSTER)) if(ret == 1 && target->current.location == LOCATION_MZONE && !(target->data.type & TYPE_MONSTER))
send_to(target, 0, REASON_RULE, PLAYER_NONE, PLAYER_NONE, LOCATION_GRAVE, 0, 0); send_to(target, 0, REASON_RULE, PLAYER_NONE, PLAYER_NONE, LOCATION_GRAVE, 0, 0);
adjust_disable_check_list(); adjust_disable_check_list();
...@@ -3834,7 +3834,7 @@ int32 field::change_position(uint16 step, group * targets, effect * reason_effec ...@@ -3834,7 +3834,7 @@ int32 field::change_position(uint16 step, group * targets, effect * reason_effec
} }
if(enable) { if(enable) {
if(!reason_effect || !(reason_effect->type & 0x7f0) || pcard->current.location != LOCATION_MZONE) if(!reason_effect || !(reason_effect->type & 0x7f0) || pcard->current.location != LOCATION_MZONE)
pcard->enable_field_effect(TRUE); pcard->enable_field_effect(true);
else else
core.delayed_enable_set.insert(pcard); core.delayed_enable_set.insert(pcard);
} else } else
...@@ -3850,7 +3850,7 @@ int32 field::change_position(uint16 step, group * targets, effect * reason_effec ...@@ -3850,7 +3850,7 @@ int32 field::change_position(uint16 step, group * targets, effect * reason_effec
trapmonster = true; trapmonster = true;
pcard->reset(RESET_TURN_SET, RESET_EVENT); pcard->reset(RESET_TURN_SET, RESET_EVENT);
pcard->set_status(STATUS_SET_TURN, TRUE); pcard->set_status(STATUS_SET_TURN, TRUE);
pcard->enable_field_effect(FALSE); pcard->enable_field_effect(false);
pcard->summon_info &= 0xdf00ffff; pcard->summon_info &= 0xdf00ffff;
if((pcard->summon_info & SUMMON_TYPE_PENDULUM) == SUMMON_TYPE_PENDULUM) if((pcard->summon_info & SUMMON_TYPE_PENDULUM) == SUMMON_TYPE_PENDULUM)
pcard->summon_info &= 0xf000ffff; pcard->summon_info &= 0xf000ffff;
......
...@@ -4243,7 +4243,7 @@ int32 field::add_chain(uint16 step) { ...@@ -4243,7 +4243,7 @@ int32 field::add_chain(uint16 step) {
} }
} }
if(peffect->handler->current.location == LOCATION_HAND) { if(peffect->handler->current.location == LOCATION_HAND) {
peffect->handler->enable_field_effect(FALSE); peffect->handler->enable_field_effect(false);
peffect->handler->set_status(STATUS_ACT_FROM_HAND, TRUE); peffect->handler->set_status(STATUS_ACT_FROM_HAND, TRUE);
move_to_field(peffect->handler, peffect->handler->current.controler, peffect->handler->current.controler, LOCATION_SZONE, POS_FACEUP); move_to_field(peffect->handler, peffect->handler->current.controler, peffect->handler->current.controler, LOCATION_SZONE, POS_FACEUP);
} else { } else {
...@@ -4567,12 +4567,12 @@ int32 field::solve_chain(uint16 step, uint32 chainend_arg1, uint32 chainend_arg2 ...@@ -4567,12 +4567,12 @@ int32 field::solve_chain(uint16 step, uint32 chainend_arg1, uint32 chainend_arg2
card* pcard = peffect->handler; card* pcard = peffect->handler;
if((peffect->type & EFFECT_TYPE_ACTIVATE) && pcard->is_has_relation(*cait)) { if((peffect->type & EFFECT_TYPE_ACTIVATE) && pcard->is_has_relation(*cait)) {
pcard->set_status(STATUS_ACTIVATED, TRUE); pcard->set_status(STATUS_ACTIVATED, TRUE);
pcard->enable_field_effect(TRUE); pcard->enable_field_effect(true);
if(core.duel_options & DUEL_OBSOLETE_RULING) { if(core.duel_options & DUEL_OBSOLETE_RULING) {
if(pcard->data.type & TYPE_FIELD) { if(pcard->data.type & TYPE_FIELD) {
card* fscard = player[1 - pcard->current.controler].list_szone[5]; card* fscard = player[1 - pcard->current.controler].list_szone[5];
if(fscard && fscard->is_position(POS_FACEUP)) if(fscard && fscard->is_position(POS_FACEUP))
fscard->enable_field_effect(FALSE); fscard->enable_field_effect(false);
} }
} }
adjust_instant(); adjust_instant();
...@@ -4717,7 +4717,7 @@ int32 field::solve_chain(uint16 step, uint32 chainend_arg1, uint32 chainend_arg2 ...@@ -4717,7 +4717,7 @@ int32 field::solve_chain(uint16 step, uint32 chainend_arg1, uint32 chainend_arg2
} }
for(auto cit = core.delayed_enable_set.begin(); cit != core.delayed_enable_set.end(); ++cit) { for(auto cit = core.delayed_enable_set.begin(); cit != core.delayed_enable_set.end(); ++cit) {
if((*cit)->current.location == LOCATION_MZONE) if((*cit)->current.location == LOCATION_MZONE)
(*cit)->enable_field_effect(TRUE); (*cit)->enable_field_effect(true);
} }
core.delayed_enable_set.clear(); core.delayed_enable_set.clear();
adjust_all(); adjust_all();
......
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