Commit dfcff86f authored by argon.sun's avatar argon.sun

compatible with libevent

parent dbeeeac5
...@@ -101,7 +101,7 @@ int32 effect::is_available() { ...@@ -101,7 +101,7 @@ int32 effect::is_available() {
} }
return TRUE; return TRUE;
} }
int32 effect::is_activateable(uint8 playerid, event& e, int32 neglect_cond, int32 neglect_cost, int32 neglect_target) { int32 effect::is_activateable(uint8 playerid, tevent& e, int32 neglect_cond, int32 neglect_cost, int32 neglect_target) {
if (!(type & EFFECT_TYPE_ACTIONS)) if (!(type & EFFECT_TYPE_ACTIONS))
return FALSE; return FALSE;
if((flag & EFFECT_FLAG_COUNT_LIMIT) && (reset_count & 0xf00) == 0) if((flag & EFFECT_FLAG_COUNT_LIMIT) && (reset_count & 0xf00) == 0)
...@@ -206,7 +206,7 @@ int32 effect::is_action_check(uint8 playerid) { ...@@ -206,7 +206,7 @@ int32 effect::is_action_check(uint8 playerid) {
} }
return TRUE; return TRUE;
} }
int32 effect::is_activate_ready(uint8 playerid, event& e, int32 neglect_cond, int32 neglect_cost, int32 neglect_target) { int32 effect::is_activate_ready(uint8 playerid, tevent& e, int32 neglect_cond, int32 neglect_cost, int32 neglect_target) {
if (!neglect_cond && condition) { if (!neglect_cond && condition) {
pduel->lua->add_param(this, PARAM_TYPE_EFFECT); pduel->lua->add_param(this, PARAM_TYPE_EFFECT);
pduel->lua->add_param(playerid, PARAM_TYPE_INT); pduel->lua->add_param(playerid, PARAM_TYPE_INT);
...@@ -250,7 +250,7 @@ int32 effect::is_activate_ready(uint8 playerid, event& e, int32 neglect_cond, in ...@@ -250,7 +250,7 @@ int32 effect::is_activate_ready(uint8 playerid, event& e, int32 neglect_cond, in
} }
return TRUE; return TRUE;
} }
int32 effect::is_condition_check(uint8 playerid, event& e) { int32 effect::is_condition_check(uint8 playerid, tevent& e) {
if ((handler->current.location & LOCATION_ONFIELD) && (type & EFFECT_TYPE_FIELD) if ((handler->current.location & LOCATION_ONFIELD) && (type & EFFECT_TYPE_FIELD)
&& (!handler->is_position(POS_FACEUP) || !handler->is_status(STATUS_EFFECT_ENABLED))) && (!handler->is_position(POS_FACEUP) || !handler->is_status(STATUS_EFFECT_ENABLED)))
return FALSE; return FALSE;
...@@ -280,7 +280,7 @@ int32 effect::is_condition_check(uint8 playerid, event& e) { ...@@ -280,7 +280,7 @@ int32 effect::is_condition_check(uint8 playerid, event& e) {
pduel->game_field->core.reason_player = op; pduel->game_field->core.reason_player = op;
return TRUE; return TRUE;
} }
int32 effect::is_activate_check(uint8 playerid, event& e, int32 neglect_cond, int32 neglect_cost, int32 neglect_target) { int32 effect::is_activate_check(uint8 playerid, tevent& e, int32 neglect_cond, int32 neglect_cost, int32 neglect_target) {
pduel->game_field->save_lp_cost(); pduel->game_field->save_lp_cost();
effect* oreason = pduel->game_field->core.reason_effect; effect* oreason = pduel->game_field->core.reason_effect;
uint8 op = pduel->game_field->core.reason_player; uint8 op = pduel->game_field->core.reason_player;
......
...@@ -21,7 +21,7 @@ class card; ...@@ -21,7 +21,7 @@ class card;
class duel; class duel;
class group; class group;
class effect; class effect;
struct event; struct tevent;
struct effect_set; struct effect_set;
struct effect_set_v; struct effect_set_v;
...@@ -59,11 +59,11 @@ public: ...@@ -59,11 +59,11 @@ public:
int32 is_disable_related(); int32 is_disable_related();
int32 is_available(); int32 is_available();
int32 is_activateable(uint8 playerid, event& e, int32 neglect_cond = FALSE, int32 neglect_cost = FALSE, int32 neglect_target = FALSE); int32 is_activateable(uint8 playerid, tevent& e, int32 neglect_cond = FALSE, int32 neglect_cost = FALSE, int32 neglect_target = FALSE);
int32 is_action_check(uint8 playerid); int32 is_action_check(uint8 playerid);
int32 is_activate_ready(uint8 playerid, event& e, int32 neglect_cond = FALSE, int32 neglect_cost = FALSE, int32 neglect_target = FALSE); int32 is_activate_ready(uint8 playerid, tevent& e, int32 neglect_cond = FALSE, int32 neglect_cost = FALSE, int32 neglect_target = FALSE);
int32 is_condition_check(uint8 playerid, event& e); int32 is_condition_check(uint8 playerid, tevent& e);
int32 is_activate_check(uint8 playerid, event& e, int32 neglect_cond = FALSE, int32 neglect_cost = FALSE, int32 neglect_target = FALSE); int32 is_activate_check(uint8 playerid, tevent& e, int32 neglect_cond = FALSE, int32 neglect_cost = FALSE, int32 neglect_target = FALSE);
int32 is_target(card* pcard); int32 is_target(card* pcard);
int32 is_target_player(uint8 playerid); int32 is_target_player(uint8 playerid);
int32 is_player_effect_target(card* pcard); int32 is_player_effect_target(card* pcard);
......
...@@ -450,7 +450,7 @@ void field::add_effect(effect* peffect, uint8 owner_player) { ...@@ -450,7 +450,7 @@ void field::add_effect(effect* peffect, uint8 owner_player) {
it = effects.aura_effect.insert(make_pair(peffect->code, peffect)); it = effects.aura_effect.insert(make_pair(peffect->code, peffect));
else { else {
if (peffect->type & EFFECT_TYPE_IGNITION) if (peffect->type & EFFECT_TYPE_IGNITION)
it = effects.startup_effect.insert(make_pair(peffect->code, peffect)); it = effects.ignition_effect.insert(make_pair(peffect->code, peffect));
else if (peffect->type & EFFECT_TYPE_ACTIVATE) else if (peffect->type & EFFECT_TYPE_ACTIVATE)
it = effects.activate_effect.insert(make_pair(peffect->code, peffect)); it = effects.activate_effect.insert(make_pair(peffect->code, peffect));
else if (peffect->type & EFFECT_TYPE_TRIGGER_O && peffect->type & EFFECT_TYPE_FIELD) else if (peffect->type & EFFECT_TYPE_TRIGGER_O && peffect->type & EFFECT_TYPE_FIELD)
...@@ -458,9 +458,9 @@ void field::add_effect(effect* peffect, uint8 owner_player) { ...@@ -458,9 +458,9 @@ void field::add_effect(effect* peffect, uint8 owner_player) {
else if (peffect->type & EFFECT_TYPE_TRIGGER_F && peffect->type & EFFECT_TYPE_FIELD) else if (peffect->type & EFFECT_TYPE_TRIGGER_F && peffect->type & EFFECT_TYPE_FIELD)
it = effects.trigger_f_effect.insert(make_pair(peffect->code, peffect)); it = effects.trigger_f_effect.insert(make_pair(peffect->code, peffect));
else if (peffect->type & EFFECT_TYPE_QUICK_O) else if (peffect->type & EFFECT_TYPE_QUICK_O)
it = effects.instant_o_effect.insert(make_pair(peffect->code, peffect)); it = effects.quick_o_effect.insert(make_pair(peffect->code, peffect));
else if (peffect->type & EFFECT_TYPE_QUICK_F) else if (peffect->type & EFFECT_TYPE_QUICK_F)
it = effects.instant_f_effect.insert(make_pair(peffect->code, peffect)); it = effects.quick_f_effect.insert(make_pair(peffect->code, peffect));
else if (peffect->type & EFFECT_TYPE_CONTINUOUS) else if (peffect->type & EFFECT_TYPE_CONTINUOUS)
it = effects.continuous_effect.insert(make_pair(peffect->code, peffect)); it = effects.continuous_effect.insert(make_pair(peffect->code, peffect));
} }
...@@ -484,7 +484,7 @@ void field::remove_effect(effect* peffect) { ...@@ -484,7 +484,7 @@ void field::remove_effect(effect* peffect) {
effects.aura_effect.erase(it); effects.aura_effect.erase(it);
else { else {
if (peffect->type & EFFECT_TYPE_IGNITION) if (peffect->type & EFFECT_TYPE_IGNITION)
effects.startup_effect.erase(it); effects.ignition_effect.erase(it);
else if (peffect->type & EFFECT_TYPE_ACTIVATE) else if (peffect->type & EFFECT_TYPE_ACTIVATE)
effects.activate_effect.erase(it); effects.activate_effect.erase(it);
else if (peffect->type & EFFECT_TYPE_TRIGGER_O) else if (peffect->type & EFFECT_TYPE_TRIGGER_O)
...@@ -492,9 +492,9 @@ void field::remove_effect(effect* peffect) { ...@@ -492,9 +492,9 @@ void field::remove_effect(effect* peffect) {
else if (peffect->type & EFFECT_TYPE_TRIGGER_F) else if (peffect->type & EFFECT_TYPE_TRIGGER_F)
effects.trigger_f_effect.erase(it); effects.trigger_f_effect.erase(it);
else if (peffect->type & EFFECT_TYPE_QUICK_O) else if (peffect->type & EFFECT_TYPE_QUICK_O)
effects.instant_o_effect.erase(it); effects.quick_o_effect.erase(it);
else if (peffect->type & EFFECT_TYPE_QUICK_F) else if (peffect->type & EFFECT_TYPE_QUICK_F)
effects.instant_f_effect.erase(it); effects.quick_f_effect.erase(it);
else if (peffect->type & EFFECT_TYPE_CONTINUOUS) else if (peffect->type & EFFECT_TYPE_CONTINUOUS)
effects.continuous_effect.erase(it); effects.continuous_effect.erase(it);
} }
...@@ -543,7 +543,7 @@ void field::reset_effect(uint32 id, uint32 reset_type) { ...@@ -543,7 +543,7 @@ void field::reset_effect(uint32 id, uint32 reset_type) {
effects.aura_effect.erase(pit); effects.aura_effect.erase(pit);
} else { } else {
if (peffect->type & EFFECT_TYPE_IGNITION) if (peffect->type & EFFECT_TYPE_IGNITION)
effects.startup_effect.erase(pit); effects.ignition_effect.erase(pit);
else if (peffect->type & EFFECT_TYPE_ACTIVATE) else if (peffect->type & EFFECT_TYPE_ACTIVATE)
effects.activate_effect.erase(pit); effects.activate_effect.erase(pit);
else if (peffect->type & EFFECT_TYPE_TRIGGER_O) else if (peffect->type & EFFECT_TYPE_TRIGGER_O)
...@@ -551,9 +551,9 @@ void field::reset_effect(uint32 id, uint32 reset_type) { ...@@ -551,9 +551,9 @@ void field::reset_effect(uint32 id, uint32 reset_type) {
else if (peffect->type & EFFECT_TYPE_TRIGGER_F) else if (peffect->type & EFFECT_TYPE_TRIGGER_F)
effects.trigger_f_effect.erase(pit); effects.trigger_f_effect.erase(pit);
else if (peffect->type & EFFECT_TYPE_QUICK_O) else if (peffect->type & EFFECT_TYPE_QUICK_O)
effects.instant_o_effect.erase(pit); effects.quick_o_effect.erase(pit);
else if (peffect->type & EFFECT_TYPE_QUICK_F) else if (peffect->type & EFFECT_TYPE_QUICK_F)
effects.instant_f_effect.erase(pit); effects.quick_f_effect.erase(pit);
else if (peffect->type & EFFECT_TYPE_CONTINUOUS) else if (peffect->type & EFFECT_TYPE_CONTINUOUS)
effects.continuous_effect.erase(pit); effects.continuous_effect.erase(pit);
} }
...@@ -1074,7 +1074,7 @@ int32 field::check_lp_cost(uint8 playerid, uint32 lp) { ...@@ -1074,7 +1074,7 @@ int32 field::check_lp_cost(uint8 playerid, uint32 lp) {
if(val <= 0) if(val <= 0)
return TRUE; return TRUE;
} }
event e; tevent e;
e.event_cards = 0; e.event_cards = 0;
e.event_player = playerid; e.event_player = playerid;
e.event_value = lp; e.event_value = lp;
...@@ -1121,12 +1121,10 @@ uint32 field::get_field_counter(uint8 self, uint8 s, uint8 o, uint16 countertype ...@@ -1121,12 +1121,10 @@ uint32 field::get_field_counter(uint8 self, uint8 s, uint8 o, uint16 countertype
} }
return count; return count;
} }
int32 field::effect_replace_check(uint32 code, event e) { int32 field::effect_replace_check(uint32 code, tevent& e) {
pair<effect_container::iterator, effect_container::iterator> pr; auto pr = effects.continuous_effect.equal_range(code);
pr = effects.continuous_effect.equal_range(code);
effect* peffect;
for (; pr.first != pr.second; ++pr.first) { for (; pr.first != pr.second; ++pr.first) {
peffect = pr.first->second; effect* peffect = pr.first->second;
if(peffect->is_activateable(peffect->get_handler_player(), e)) if(peffect->is_activateable(peffect->get_handler_player(), e))
return TRUE; return TRUE;
} }
...@@ -1407,7 +1405,7 @@ int32 field::is_player_can_remove_counter(uint8 playerid, card * pcard, uint8 s, ...@@ -1407,7 +1405,7 @@ int32 field::is_player_can_remove_counter(uint8 playerid, card * pcard, uint8 s,
pair<effect_container::iterator, effect_container::iterator> pr; pair<effect_container::iterator, effect_container::iterator> pr;
pr = effects.continuous_effect.equal_range(EFFECT_RCOUNTER_REPLACE + countertype); pr = effects.continuous_effect.equal_range(EFFECT_RCOUNTER_REPLACE + countertype);
effect* peffect; effect* peffect;
event e; tevent e;
e.event_cards = 0; e.event_cards = 0;
e.event_player = playerid; e.event_player = playerid;
e.event_value = count; e.event_value = count;
...@@ -1427,7 +1425,7 @@ int32 field::is_player_can_remove_overlay_card(uint8 playerid, card* pcard, uint ...@@ -1427,7 +1425,7 @@ int32 field::is_player_can_remove_overlay_card(uint8 playerid, card* pcard, uint
pair<effect_container::iterator, effect_container::iterator> pr; pair<effect_container::iterator, effect_container::iterator> pr;
pr = effects.continuous_effect.equal_range(EFFECT_OVERLAY_REMOVE_REPLACE); pr = effects.continuous_effect.equal_range(EFFECT_OVERLAY_REMOVE_REPLACE);
effect* peffect; effect* peffect;
event e; tevent e;
e.event_cards = 0; e.event_cards = 0;
e.event_player = playerid; e.event_player = playerid;
e.event_value = min; e.event_value = min;
......
...@@ -22,7 +22,7 @@ class duel; ...@@ -22,7 +22,7 @@ class duel;
class group; class group;
class effect; class effect;
struct event { struct tevent {
uint32 event_code; uint32 event_code;
void* event_cards; void* event_cards;
uint32 event_value; uint32 event_value;
...@@ -53,7 +53,7 @@ struct chain { ...@@ -53,7 +53,7 @@ struct chain {
int32 target_param; int32 target_param;
effect* disable_reason; effect* disable_reason;
uint8 disable_player; uint8 disable_player;
event evt; tevent evt;
opmap opinfos; opmap opinfos;
uint32 flag; uint32 flag;
static bool chain_operation_sort(chain c1, chain c2); static bool chain_operation_sort(chain c1, chain c2);
...@@ -81,12 +81,12 @@ struct field_effect { ...@@ -81,12 +81,12 @@ struct field_effect {
typedef std::set<effect*> effect_collection; typedef std::set<effect*> effect_collection;
effect_container aura_effect; effect_container aura_effect;
effect_container startup_effect; effect_container ignition_effect;
effect_container activate_effect; effect_container activate_effect;
effect_container trigger_o_effect; effect_container trigger_o_effect;
effect_container trigger_f_effect; effect_container trigger_f_effect;
effect_container instant_o_effect; effect_container quick_o_effect;
effect_container instant_f_effect; effect_container quick_f_effect;
effect_container continuous_effect; effect_container continuous_effect;
effect_indexer indexer; effect_indexer indexer;
oath_effects oath; oath_effects oath;
...@@ -131,7 +131,7 @@ struct processor { ...@@ -131,7 +131,7 @@ struct processor {
typedef std::vector<card*> card_vector; typedef std::vector<card*> card_vector;
typedef std::vector<uint32> option_vector; typedef std::vector<uint32> option_vector;
typedef std::list<card*> card_list; typedef std::list<card*> card_list;
typedef std::list<event> event_list; typedef std::list<tevent> event_list;
typedef std::list<chain> chain_list; typedef std::list<chain> chain_list;
typedef std::map<effect*, chain> instant_f_list; typedef std::map<effect*, chain> instant_f_list;
typedef std::vector<chain> chain_array; typedef std::vector<chain> chain_array;
...@@ -172,7 +172,7 @@ struct processor { ...@@ -172,7 +172,7 @@ struct processor {
chain_list new_ochain_b; chain_list new_ochain_b;
chain_list flip_chain_b; chain_list flip_chain_b;
chain_list new_chains; chain_list new_chains;
instant_f_list instant_f_chain; instant_f_list quick_f_chain;
card_set leave_confirmed; card_set leave_confirmed;
card_set special_summoning; card_set special_summoning;
card_list adjust_list; card_list adjust_list;
...@@ -253,7 +253,7 @@ public: ...@@ -253,7 +253,7 @@ public:
typedef std::vector<card*> card_vector; typedef std::vector<card*> card_vector;
typedef std::vector<uint32> option_vector; typedef std::vector<uint32> option_vector;
typedef std::list<card*> card_list; typedef std::list<card*> card_list;
typedef std::list<event> event_list; typedef std::list<tevent> event_list;
typedef std::list<chain> chain_list; typedef std::list<chain> chain_list;
typedef std::map<effect*, chain> instant_f_list; typedef std::map<effect*, chain> instant_f_list;
typedef std::vector<chain> chain_array; typedef std::vector<chain> chain_array;
...@@ -268,7 +268,7 @@ public: ...@@ -268,7 +268,7 @@ public:
field_effect effects; field_effect effects;
processor core; processor core;
return_value returns; return_value returns;
event nil_event; tevent nil_event;
static int32 field_used_count[32]; static int32 field_used_count[32];
field(duel* pduel); field(duel* pduel);
...@@ -317,7 +317,7 @@ public: ...@@ -317,7 +317,7 @@ public:
int32 pay_lp_cost(uint32 step, uint8 playerid, uint32 cost); int32 pay_lp_cost(uint32 step, uint8 playerid, uint32 cost);
uint32 get_field_counter(uint8 self, uint8 s, uint8 o, uint16 countertype); uint32 get_field_counter(uint8 self, uint8 s, uint8 o, uint16 countertype);
int32 effect_replace_check(uint32 code, event e); int32 effect_replace_check(uint32 code, tevent& e);
int32 get_attack_target(card* pcard, card_vector* v, uint8 chain_attack = FALSE); int32 get_attack_target(card* pcard, card_vector* v, uint8 chain_attack = FALSE);
int32 check_synchro_material(card* pcard, int32 findex1, int32 findex2, int32 min); int32 check_synchro_material(card* pcard, int32 findex1, int32 findex2, int32 min);
int32 check_tuner_material(card* pcard, card* tuner, int32 findex1, int32 findex2, int32 min); int32 check_tuner_material(card* pcard, card* tuner, int32 findex1, int32 findex2, int32 min);
...@@ -352,7 +352,7 @@ public: ...@@ -352,7 +352,7 @@ public:
void raise_event(card* event_card, uint32 event_code, effect* reason_effect, uint32 reason, uint8 reason_player, uint8 event_player, uint32 event_value); void raise_event(card* event_card, uint32 event_code, effect* reason_effect, uint32 reason, uint8 reason_player, uint8 event_player, uint32 event_value);
void raise_event(card_set* event_cards, uint32 event_code, effect* reason_effect, uint32 reason, uint8 reason_player, uint8 event_player, uint32 event_value); void raise_event(card_set* event_cards, uint32 event_code, effect* reason_effect, uint32 reason, uint8 reason_player, uint8 event_player, uint32 event_value);
void raise_single_event(card* event_card, uint32 event_code, effect* reason_effect, uint32 reason, uint8 reason_player, uint8 event_player, uint32 event_value ); void raise_single_event(card* event_card, uint32 event_code, effect* reason_effect, uint32 reason, uint8 reason_player, uint8 event_player, uint32 event_value );
int32 check_event(uint32 code, event* pe = 0); int32 check_event(uint32 code, tevent* pe = 0);
int32 check_hint_timing(effect* peffect); int32 check_hint_timing(effect* peffect);
int32 process_phase_event(int16 step, int32 phase_event); int32 process_phase_event(int16 step, int32 phase_event);
int32 process_point_event(int16 step, int32 special, int32 skip_new); int32 process_point_event(int16 step, int32 special, int32 skip_new);
......
...@@ -1601,6 +1601,7 @@ int32 scriptlib::card_trap_monster_block(lua_State *L) { ...@@ -1601,6 +1601,7 @@ int32 scriptlib::card_trap_monster_block(lua_State *L) {
peffect->reset_flag = RESET_EVENT + 0x5fe0000; peffect->reset_flag = RESET_EVENT + 0x5fe0000;
peffect->value = 1 + (0x10000 << pcard->previous.sequence); peffect->value = 1 + (0x10000 << pcard->previous.sequence);
pcard->add_effect(peffect); pcard->add_effect(peffect);
return 0;
} }
int32 scriptlib::card_cancel_to_grave(lua_State *L) { int32 scriptlib::card_cancel_to_grave(lua_State *L) {
check_param_count(L, 1); check_param_count(L, 1);
......
...@@ -487,7 +487,7 @@ int32 field::pay_lp_cost(uint32 step, uint8 playerid, uint32 cost) { ...@@ -487,7 +487,7 @@ int32 field::pay_lp_cost(uint32 step, uint8 playerid, uint32 cost) {
return TRUE; return TRUE;
} }
core.units.begin()->arg2 = val; core.units.begin()->arg2 = val;
event e; tevent e;
e.event_cards = 0; e.event_cards = 0;
e.event_player = playerid; e.event_player = playerid;
e.event_value = val; e.event_value = val;
...@@ -529,7 +529,7 @@ int32 field::pay_lp_cost(uint32 step, uint8 playerid, uint32 cost) { ...@@ -529,7 +529,7 @@ int32 field::pay_lp_cost(uint32 step, uint8 playerid, uint32 cost) {
pduel->write_buffer32(cost); pduel->write_buffer32(cost);
return TRUE; return TRUE;
} }
event e; tevent e;
e.event_cards = 0; e.event_cards = 0;
e.event_player = playerid; e.event_player = playerid;
e.event_value = cost; e.event_value = cost;
...@@ -555,7 +555,7 @@ int32 field::remove_counter(uint16 step, uint32 reason, card* pcard, uint8 rplay ...@@ -555,7 +555,7 @@ int32 field::remove_counter(uint16 step, uint32 reason, card* pcard, uint8 rplay
pair<effect_container::iterator, effect_container::iterator> pr; pair<effect_container::iterator, effect_container::iterator> pr;
pr = effects.continuous_effect.equal_range(EFFECT_RCOUNTER_REPLACE + countertype); pr = effects.continuous_effect.equal_range(EFFECT_RCOUNTER_REPLACE + countertype);
effect* peffect; effect* peffect;
event e; tevent e;
e.event_cards = 0; e.event_cards = 0;
e.event_player = rplayer; e.event_player = rplayer;
e.event_value = count; e.event_value = count;
...@@ -583,7 +583,7 @@ int32 field::remove_counter(uint16 step, uint32 reason, card* pcard, uint8 rplay ...@@ -583,7 +583,7 @@ int32 field::remove_counter(uint16 step, uint32 reason, card* pcard, uint8 rplay
case 1: { case 1: {
effect* peffect = core.select_effects[returns.ivalue[0]]; effect* peffect = core.select_effects[returns.ivalue[0]];
if(peffect) { if(peffect) {
event e; tevent e;
e.event_cards = 0; e.event_cards = 0;
e.event_player = rplayer; e.event_player = rplayer;
e.event_value = count; e.event_value = count;
...@@ -657,7 +657,7 @@ int32 field::remove_overlay_card(uint16 step, uint32 reason, card* pcard, uint8 ...@@ -657,7 +657,7 @@ int32 field::remove_overlay_card(uint16 step, uint32 reason, card* pcard, uint8
pair<effect_container::iterator, effect_container::iterator> pr; pair<effect_container::iterator, effect_container::iterator> pr;
pr = effects.continuous_effect.equal_range(EFFECT_OVERLAY_REMOVE_REPLACE); pr = effects.continuous_effect.equal_range(EFFECT_OVERLAY_REMOVE_REPLACE);
effect* peffect; effect* peffect;
event e; tevent e;
e.event_cards = 0; e.event_cards = 0;
e.event_player = rplayer; e.event_player = rplayer;
e.event_value = min; e.event_value = min;
...@@ -685,7 +685,7 @@ int32 field::remove_overlay_card(uint16 step, uint32 reason, card* pcard, uint8 ...@@ -685,7 +685,7 @@ int32 field::remove_overlay_card(uint16 step, uint32 reason, card* pcard, uint8
case 1: { case 1: {
effect* peffect = core.select_effects[returns.ivalue[0]]; effect* peffect = core.select_effects[returns.ivalue[0]];
if(peffect) { if(peffect) {
event e; tevent e;
e.event_cards = 0; e.event_cards = 0;
e.event_player = rplayer; e.event_player = rplayer;
e.event_value = min + (max << 16);; e.event_value = min + (max << 16);;
...@@ -2713,7 +2713,7 @@ int32 field::operation_replace(uint16 step, effect * replace_effect, group * tar ...@@ -2713,7 +2713,7 @@ int32 field::operation_replace(uint16 step, effect * replace_effect, group * tar
if(!replace_effect->target) if(!replace_effect->target)
return TRUE; return TRUE;
card* target = (card*)arg1; card* target = (card*)arg1;
event e; tevent e;
e.event_cards = targets; e.event_cards = targets;
e.event_player = replace_effect->get_handler_player(); e.event_player = replace_effect->get_handler_player();
e.event_value = 0; e.event_value = 0;
...@@ -2774,7 +2774,7 @@ int32 field::operation_replace(uint16 step, effect * replace_effect, group * tar ...@@ -2774,7 +2774,7 @@ int32 field::operation_replace(uint16 step, effect * replace_effect, group * tar
return TRUE; return TRUE;
} }
case 5: { case 5: {
event e; tevent e;
e.event_cards = targets; e.event_cards = targets;
e.event_player = replace_effect->get_handler_player(); e.event_player = replace_effect->get_handler_player();
e.event_value = 0; e.event_value = 0;
...@@ -2849,7 +2849,7 @@ int32 field::operation_replace(uint16 step, effect * replace_effect, group * tar ...@@ -2849,7 +2849,7 @@ int32 field::operation_replace(uint16 step, effect * replace_effect, group * tar
if(!replace_effect->target) if(!replace_effect->target)
return TRUE; return TRUE;
card* target = (card*)arg1; card* target = (card*)arg1;
event e; tevent e;
e.event_cards = targets; e.event_cards = targets;
e.event_player = replace_effect->get_handler_player(); e.event_player = replace_effect->get_handler_player();
e.event_value = 0; e.event_value = 0;
...@@ -2891,7 +2891,7 @@ int32 field::operation_replace(uint16 step, effect * replace_effect, group * tar ...@@ -2891,7 +2891,7 @@ int32 field::operation_replace(uint16 step, effect * replace_effect, group * tar
return TRUE; return TRUE;
} }
case 12: { case 12: {
event e; tevent e;
e.event_cards = targets; e.event_cards = targets;
e.event_player = replace_effect->get_handler_player(); e.event_player = replace_effect->get_handler_player();
e.event_value = 0; e.event_value = 0;
...@@ -3228,7 +3228,7 @@ int32 field::toss_coin(uint16 step, effect* reason_effect, uint8 reason_player, ...@@ -3228,7 +3228,7 @@ int32 field::toss_coin(uint16 step, effect* reason_effect, uint8 reason_player,
case 0: { case 0: {
effect_set eset; effect_set eset;
effect* peffect = 0; effect* peffect = 0;
event e; tevent e;
e.event_cards = 0; e.event_cards = 0;
e.reason_effect = core.reason_effect; e.reason_effect = core.reason_effect;
e.reason_player = core.reason_player; e.reason_player = core.reason_player;
...@@ -3273,7 +3273,7 @@ int32 field::toss_dice(uint16 step, effect* reason_effect, uint8 reason_player, ...@@ -3273,7 +3273,7 @@ int32 field::toss_dice(uint16 step, effect* reason_effect, uint8 reason_player,
case 0: { case 0: {
effect_set eset; effect_set eset;
effect* peffect = 0; effect* peffect = 0;
event e; tevent e;
e.event_cards = 0; e.event_cards = 0;
e.reason_effect = core.reason_effect; e.reason_effect = core.reason_effect;
e.reason_player = core.reason_player; e.reason_player = core.reason_player;
......
...@@ -692,7 +692,7 @@ int32 field::process() { ...@@ -692,7 +692,7 @@ int32 field::process() {
} }
case PROCESSOR_SELECT_FUSION: { case PROCESSOR_SELECT_FUSION: {
if(it->step == 0) { if(it->step == 0) {
event e; tevent e;
e.event_cards = it->ptarget; e.event_cards = it->ptarget;
e.reason_effect = it->peffect; e.reason_effect = it->peffect;
e.reason_player = it->arg1; e.reason_player = it->arg1;
...@@ -972,7 +972,7 @@ int32 field::execute_cost(uint16 step, effect * triggering_effect, uint8 trigger ...@@ -972,7 +972,7 @@ int32 field::execute_cost(uint16 step, effect * triggering_effect, uint8 trigger
} }
if (step == 0) { if (step == 0) {
core.solving_event.splice(core.solving_event.begin(), core.sub_solving_event); core.solving_event.splice(core.solving_event.begin(), core.sub_solving_event);
event e = *core.solving_event.begin(); tevent e = *core.solving_event.begin();
pduel->lua->add_param(1, PARAM_TYPE_INT, true); pduel->lua->add_param(1, PARAM_TYPE_INT, true);
pduel->lua->add_param(e.reason_player, PARAM_TYPE_INT, true); pduel->lua->add_param(e.reason_player, PARAM_TYPE_INT, true);
pduel->lua->add_param(e.reason, PARAM_TYPE_INT, true); pduel->lua->add_param(e.reason, PARAM_TYPE_INT, true);
...@@ -1024,7 +1024,7 @@ int32 field::execute_operation(uint16 step, effect * triggering_effect, uint8 tr ...@@ -1024,7 +1024,7 @@ int32 field::execute_operation(uint16 step, effect * triggering_effect, uint8 tr
} }
if (step == 0) { if (step == 0) {
core.solving_event.splice(core.solving_event.begin(), core.sub_solving_event); core.solving_event.splice(core.solving_event.begin(), core.sub_solving_event);
event e = *core.solving_event.begin(); tevent e = *core.solving_event.begin();
pduel->lua->add_param(e.reason_player, PARAM_TYPE_INT, true); pduel->lua->add_param(e.reason_player, PARAM_TYPE_INT, true);
pduel->lua->add_param(e.reason, PARAM_TYPE_INT, true); pduel->lua->add_param(e.reason, PARAM_TYPE_INT, true);
pduel->lua->add_param(e.reason_effect , PARAM_TYPE_EFFECT, true); pduel->lua->add_param(e.reason_effect , PARAM_TYPE_EFFECT, true);
...@@ -1075,7 +1075,7 @@ int32 field::execute_target(uint16 step, effect * triggering_effect, uint8 trigg ...@@ -1075,7 +1075,7 @@ int32 field::execute_target(uint16 step, effect * triggering_effect, uint8 trigg
} }
if (step == 0) { if (step == 0) {
core.solving_event.splice(core.solving_event.begin(), core.sub_solving_event); core.solving_event.splice(core.solving_event.begin(), core.sub_solving_event);
event e = *core.solving_event.begin(); tevent e = *core.solving_event.begin();
pduel->lua->add_param(1, PARAM_TYPE_INT, true); pduel->lua->add_param(1, PARAM_TYPE_INT, true);
pduel->lua->add_param(e.reason_player, PARAM_TYPE_INT, true); pduel->lua->add_param(e.reason_player, PARAM_TYPE_INT, true);
pduel->lua->add_param(e.reason, PARAM_TYPE_INT, true); pduel->lua->add_param(e.reason, PARAM_TYPE_INT, true);
...@@ -1120,7 +1120,7 @@ int32 field::execute_target(uint16 step, effect * triggering_effect, uint8 trigg ...@@ -1120,7 +1120,7 @@ int32 field::execute_target(uint16 step, effect * triggering_effect, uint8 trigg
return FALSE; return FALSE;
} }
void field::raise_event(card * event_card, uint32 event_code, effect * reason_effect, uint32 reason, uint8 reason_player, uint8 event_player, uint32 event_value) { void field::raise_event(card * event_card, uint32 event_code, effect * reason_effect, uint32 reason, uint8 reason_player, uint8 event_player, uint32 event_value) {
event new_event; tevent new_event;
if (event_card) { if (event_card) {
group* pgroup = pduel->new_group(event_card); group* pgroup = pduel->new_group(event_card);
pgroup->is_readonly = TRUE; pgroup->is_readonly = TRUE;
...@@ -1136,7 +1136,7 @@ void field::raise_event(card * event_card, uint32 event_code, effect * reason_ef ...@@ -1136,7 +1136,7 @@ void field::raise_event(card * event_card, uint32 event_code, effect * reason_ef
core.queue_event.push_back(new_event); core.queue_event.push_back(new_event);
} }
void field::raise_event(card_set * event_cards, uint32 event_code, effect * reason_effect, uint32 reason, uint8 reason_player, uint8 event_player, uint32 event_value) { void field::raise_event(card_set * event_cards, uint32 event_code, effect * reason_effect, uint32 reason, uint8 reason_player, uint8 event_player, uint32 event_value) {
event new_event; tevent new_event;
if (event_cards) { if (event_cards) {
group* pgroup = pduel->new_group(); group* pgroup = pduel->new_group();
pgroup->is_readonly = TRUE; pgroup->is_readonly = TRUE;
...@@ -1152,7 +1152,7 @@ void field::raise_event(card_set * event_cards, uint32 event_code, effect * reas ...@@ -1152,7 +1152,7 @@ void field::raise_event(card_set * event_cards, uint32 event_code, effect * reas
core.queue_event.push_back(new_event); core.queue_event.push_back(new_event);
} }
void field::raise_single_event(card * event_card, uint32 event_code, effect * reason_effect, uint32 reason, uint8 reason_player, uint8 event_player, uint32 event_value) { void field::raise_single_event(card * event_card, uint32 event_code, effect * reason_effect, uint32 reason, uint8 reason_player, uint8 event_player, uint32 event_value) {
event new_event; tevent new_event;
new_event.event_cards = (void*) event_card; new_event.event_cards = (void*) event_card;
new_event.event_code = event_code; new_event.event_code = event_code;
new_event.reason_effect = reason_effect; new_event.reason_effect = reason_effect;
...@@ -1162,7 +1162,7 @@ void field::raise_single_event(card * event_card, uint32 event_code, effect * re ...@@ -1162,7 +1162,7 @@ void field::raise_single_event(card * event_card, uint32 event_code, effect * re
new_event.event_value = event_value; new_event.event_value = event_value;
core.single_event.push_back(new_event); core.single_event.push_back(new_event);
} }
int32 field::check_event(uint32 code, event * pe) { int32 field::check_event(uint32 code, tevent * pe) {
event_list::iterator eit; event_list::iterator eit;
for(eit = core.point_event.begin(); eit != core.point_event.end(); ++eit) { for(eit = core.point_event.begin(); eit != core.point_event.end(); ++eit) {
if(eit->event_code == code) { if(eit->event_code == code) {
...@@ -1296,7 +1296,7 @@ int32 field::process_phase_event(int16 step, int32 phase) { ...@@ -1296,7 +1296,7 @@ int32 field::process_phase_event(int16 step, int32 phase) {
core.ntpchain.push_back(newchain); core.ntpchain.push_back(newchain);
} }
} }
pr = effects.instant_o_effect.equal_range(EVENT_FREE_CHAIN); pr = effects.quick_o_effect.equal_range(EVENT_FREE_CHAIN);
for(; pr.first != pr.second; ++pr.first) { for(; pr.first != pr.second; ++pr.first) {
peffect = pr.first->second; peffect = pr.first->second;
if(!peffect->is_chainable(peffect->get_handler_player()) || !peffect->is_activateable(peffect->get_handler_player(), nil_event)) if(!peffect->is_chainable(peffect->get_handler_player()) || !peffect->is_activateable(peffect->get_handler_player(), nil_event))
...@@ -1482,7 +1482,7 @@ int32 field::process_phase_event(int16 step, int32 phase) { ...@@ -1482,7 +1482,7 @@ int32 field::process_phase_event(int16 step, int32 phase) {
case 16: { case 16: {
core.new_fchain.clear(); core.new_fchain.clear();
core.new_ochain.clear(); core.new_ochain.clear();
core.instant_f_chain.clear(); core.quick_f_chain.clear();
return TRUE; return TRUE;
} }
} }
...@@ -1661,15 +1661,15 @@ int32 field::process_point_event(int16 step, int32 special, int32 skip_new) { ...@@ -1661,15 +1661,15 @@ int32 field::process_point_event(int16 step, int32 special, int32 skip_new) {
} }
case 7: { case 7: {
/* Due to the new official rules, the priority of ignition effects when summon, special summon, flip summon is canceled /* Due to the new official rules, the priority of ignition effects when summon, special summon, flip summon is canceled
//startup & quick effect //ignition & quick effect
event e; tevent e;
if(core.current_chain.size() == 0 && if(core.current_chain.size() == 0 &&
(check_event(EVENT_SUMMON_SUCCESS, &e) || check_event(EVENT_SPSUMMON_SUCCESS, &e) || check_event(EVENT_FLIP_SUMMON_SUCCESS, &e)) (check_event(EVENT_SUMMON_SUCCESS, &e) || check_event(EVENT_SPSUMMON_SUCCESS, &e) || check_event(EVENT_FLIP_SUMMON_SUCCESS, &e))
&& e.reason_player == infos.turn_player) { && e.reason_player == infos.turn_player) {
effect* peffect; effect* peffect;
effect_container::iterator eit; effect_container::iterator eit;
chain newchain; chain newchain;
event e; tevent e;
e.event_cards = 0; e.event_cards = 0;
e.event_value = 0; e.event_value = 0;
e.event_player = PLAYER_NONE; e.event_player = PLAYER_NONE;
...@@ -1731,10 +1731,9 @@ int32 field::process_quick_effect(int16 step, int32 special, uint8 priority) { ...@@ -1731,10 +1731,9 @@ int32 field::process_quick_effect(int16 step, int32 special, uint8 priority) {
case 0: { case 0: {
core.tpchain.clear(); core.tpchain.clear();
core.ntpchain.clear(); core.ntpchain.clear();
if(!core.instant_f_chain.size()) if(!core.quick_f_chain.size())
return FALSE; return FALSE;
instant_f_list::iterator ifit; for(auto ifit = core.quick_f_chain.begin(); ifit != core.quick_f_chain.end(); ++ifit) {
for(ifit = core.instant_f_chain.begin(); ifit != core.instant_f_chain.end(); ++ifit) {
peffect = ifit->first; peffect = ifit->first;
if(peffect->is_chainable(ifit->second.triggering_player) && peffect->handler->is_has_relation(peffect)) { if(peffect->is_chainable(ifit->second.triggering_player) && peffect->handler->is_has_relation(peffect)) {
if(ifit->second.triggering_player == infos.turn_player) if(ifit->second.triggering_player == infos.turn_player)
...@@ -1744,7 +1743,7 @@ int32 field::process_quick_effect(int16 step, int32 special, uint8 priority) { ...@@ -1744,7 +1743,7 @@ int32 field::process_quick_effect(int16 step, int32 special, uint8 priority) {
peffect->handler->set_status(STATUS_CHAINING, TRUE); peffect->handler->set_status(STATUS_CHAINING, TRUE);
} }
} }
core.instant_f_chain.clear(); core.quick_f_chain.clear();
if(core.tpchain.size() > 1) if(core.tpchain.size() > 1)
add_process(PROCESSOR_SORT_CHAIN, 0, 0, 0, 1, infos.turn_player); add_process(PROCESSOR_SORT_CHAIN, 0, 0, 0, 1, infos.turn_player);
if(core.ntpchain.size() > 1) if(core.ntpchain.size() > 1)
...@@ -1770,7 +1769,7 @@ int32 field::process_quick_effect(int16 step, int32 special, uint8 priority) { ...@@ -1770,7 +1769,7 @@ int32 field::process_quick_effect(int16 step, int32 special, uint8 priority) {
core.select_chains.push_back(newchain); core.select_chains.push_back(newchain);
} }
} }
pr = effects.instant_o_effect.equal_range(evit->event_code); pr = effects.quick_o_effect.equal_range(evit->event_code);
for(; pr.first != pr.second; ++pr.first) { for(; pr.first != pr.second; ++pr.first) {
peffect = pr.first->second; peffect = pr.first->second;
if(peffect->is_chainable(priority) && peffect->is_activateable(priority, *evit)) { if(peffect->is_chainable(priority) && peffect->is_activateable(priority, *evit)) {
...@@ -1810,7 +1809,7 @@ int32 field::process_quick_effect(int16 step, int32 special, uint8 priority) { ...@@ -1810,7 +1809,7 @@ int32 field::process_quick_effect(int16 step, int32 special, uint8 priority) {
} }
} }
} }
pr = effects.instant_o_effect.equal_range(EVENT_FREE_CHAIN); pr = effects.quick_o_effect.equal_range(EVENT_FREE_CHAIN);
for(; pr.first != pr.second; ++pr.first) { for(; pr.first != pr.second; ++pr.first) {
peffect = pr.first->second; peffect = pr.first->second;
if(peffect->is_chainable(priority) && peffect->is_activateable(priority, nil_event)) { if(peffect->is_chainable(priority) && peffect->is_activateable(priority, nil_event)) {
...@@ -1946,7 +1945,7 @@ int32 field::process_instant_event() { ...@@ -1946,7 +1945,7 @@ int32 field::process_instant_event() {
core.new_ochain.push_back(newchain); core.new_ochain.push_back(newchain);
} }
//instant_f //instant_f
pr = effects.instant_f_effect.equal_range(elit->event_code); pr = effects.quick_f_effect.equal_range(elit->event_code);
for(; pr.first != pr.second; ++pr.first) { for(; pr.first != pr.second; ++pr.first) {
peffect = pr.first->second; peffect = pr.first->second;
if(peffect->is_activateable(peffect->handler->current.controler, *elit)) { if(peffect->is_activateable(peffect->handler->current.controler, *elit)) {
...@@ -1961,7 +1960,7 @@ int32 field::process_instant_event() { ...@@ -1961,7 +1960,7 @@ int32 field::process_instant_event() {
if((peffect->flag & EFFECT_FLAG_EVENT_PLAYER) && (elit->event_player == 0 || elit->event_player == 1)) if((peffect->flag & EFFECT_FLAG_EVENT_PLAYER) && (elit->event_player == 0 || elit->event_player == 1))
newchain.triggering_player = elit->event_player; newchain.triggering_player = elit->event_player;
else newchain.triggering_player = peffect->handler->current.controler; else newchain.triggering_player = peffect->handler->current.controler;
core.instant_f_chain[peffect] = newchain; core.quick_f_chain[peffect] = newchain;
} }
} }
} }
...@@ -1994,7 +1993,7 @@ int32 field::process_single_event() { ...@@ -1994,7 +1993,7 @@ int32 field::process_single_event() {
starget = (card*)elit->event_cards; starget = (card*)elit->event_cards;
ev = elit->event_code; ev = elit->event_code;
pr = starget->single_effect.equal_range(ev); pr = starget->single_effect.equal_range(ev);
event e = *elit; tevent e = *elit;
e.event_cards = 0; e.event_cards = 0;
for(; pr.first != pr.second; ++pr.first) { for(; pr.first != pr.second; ++pr.first) {
peffect = pr.first->second; peffect = pr.first->second;
...@@ -2117,14 +2116,14 @@ int32 field::process_idle_command(uint16 step) { ...@@ -2117,14 +2116,14 @@ int32 field::process_idle_command(uint16 step) {
if(peffect->is_activateable(infos.turn_player, nil_event)) if(peffect->is_activateable(infos.turn_player, nil_event))
core.select_chains.push_back(newchain); core.select_chains.push_back(newchain);
} }
pr = effects.instant_o_effect.equal_range(EVENT_FREE_CHAIN); pr = effects.quick_o_effect.equal_range(EVENT_FREE_CHAIN);
for(; pr.first != pr.second; ++pr.first) { for(; pr.first != pr.second; ++pr.first) {
peffect = pr.first->second; peffect = pr.first->second;
newchain.triggering_effect = peffect; newchain.triggering_effect = peffect;
if(peffect->is_activateable(infos.turn_player, nil_event)) if(peffect->is_activateable(infos.turn_player, nil_event))
core.select_chains.push_back(newchain); core.select_chains.push_back(newchain);
} }
for(eit = effects.startup_effect.begin(); eit != effects.startup_effect.end(); ++eit) { for(eit = effects.ignition_effect.begin(); eit != effects.ignition_effect.end(); ++eit) {
peffect = eit->second; peffect = eit->second;
newchain.triggering_effect = peffect; newchain.triggering_effect = peffect;
if(peffect->is_activateable(infos.turn_player, nil_event)) if(peffect->is_activateable(infos.turn_player, nil_event))
...@@ -2331,7 +2330,7 @@ int32 field::process_battle_command(uint16 step) { ...@@ -2331,7 +2330,7 @@ int32 field::process_battle_command(uint16 step) {
if(peffect->is_activateable(infos.turn_player, nil_event) && peffect->get_speed() > 1) if(peffect->is_activateable(infos.turn_player, nil_event) && peffect->get_speed() > 1)
core.select_chains.push_back(newchain); core.select_chains.push_back(newchain);
} }
pr = effects.instant_o_effect.equal_range(EVENT_FREE_CHAIN); pr = effects.quick_o_effect.equal_range(EVENT_FREE_CHAIN);
for(; pr.first != pr.second; ++pr.first) { for(; pr.first != pr.second; ++pr.first) {
peffect = pr.first->second; peffect = pr.first->second;
newchain.triggering_effect = peffect; newchain.triggering_effect = peffect;
...@@ -3267,7 +3266,7 @@ int32 field::process_turn(uint16 step, uint8 turn_player) { ...@@ -3267,7 +3266,7 @@ int32 field::process_turn(uint16 step, uint8 turn_player) {
case 1: { case 1: {
core.new_fchain.clear(); core.new_fchain.clear();
core.new_ochain.clear(); core.new_ochain.clear();
core.instant_f_chain.clear(); core.quick_f_chain.clear();
if(is_player_affected_by_effect(infos.turn_player, EFFECT_SKIP_DP)) { if(is_player_affected_by_effect(infos.turn_player, EFFECT_SKIP_DP)) {
core.units.begin()->step = 2; core.units.begin()->step = 2;
reset_phase(PHASE_DRAW); reset_phase(PHASE_DRAW);
...@@ -3309,7 +3308,7 @@ int32 field::process_turn(uint16 step, uint8 turn_player) { ...@@ -3309,7 +3308,7 @@ int32 field::process_turn(uint16 step, uint8 turn_player) {
case 5: { case 5: {
core.new_fchain.clear(); core.new_fchain.clear();
core.new_ochain.clear(); core.new_ochain.clear();
core.instant_f_chain.clear(); core.quick_f_chain.clear();
if(is_player_affected_by_effect(infos.turn_player, EFFECT_SKIP_SP)) { if(is_player_affected_by_effect(infos.turn_player, EFFECT_SKIP_SP)) {
reset_phase(PHASE_STANDBY); reset_phase(PHASE_STANDBY);
adjust_all(); adjust_all();
...@@ -3337,7 +3336,7 @@ int32 field::process_turn(uint16 step, uint8 turn_player) { ...@@ -3337,7 +3336,7 @@ int32 field::process_turn(uint16 step, uint8 turn_player) {
case 8: { case 8: {
core.new_fchain.clear(); core.new_fchain.clear();
core.new_ochain.clear(); core.new_ochain.clear();
core.instant_f_chain.clear(); core.quick_f_chain.clear();
pduel->write_buffer8(MSG_NEW_PHASE); pduel->write_buffer8(MSG_NEW_PHASE);
pduel->write_buffer8(infos.phase); pduel->write_buffer8(infos.phase);
add_process(PROCESSOR_IDLE_COMMAND, 0, 0, 0, 0, 0); add_process(PROCESSOR_IDLE_COMMAND, 0, 0, 0, 0, 0);
...@@ -3373,7 +3372,7 @@ int32 field::process_turn(uint16 step, uint8 turn_player) { ...@@ -3373,7 +3372,7 @@ int32 field::process_turn(uint16 step, uint8 turn_player) {
case 11: { case 11: {
core.new_fchain.clear(); core.new_fchain.clear();
core.new_ochain.clear(); core.new_ochain.clear();
core.instant_f_chain.clear(); core.quick_f_chain.clear();
add_process(PROCESSOR_BATTLE_COMMAND, 0, 0, 0, 0, 0); add_process(PROCESSOR_BATTLE_COMMAND, 0, 0, 0, 0, 0);
return FALSE; return FALSE;
} }
...@@ -3398,7 +3397,7 @@ int32 field::process_turn(uint16 step, uint8 turn_player) { ...@@ -3398,7 +3397,7 @@ int32 field::process_turn(uint16 step, uint8 turn_player) {
case 14: { case 14: {
core.new_fchain.clear(); core.new_fchain.clear();
core.new_ochain.clear(); core.new_ochain.clear();
core.instant_f_chain.clear(); core.quick_f_chain.clear();
pduel->write_buffer8(MSG_NEW_PHASE); pduel->write_buffer8(MSG_NEW_PHASE);
pduel->write_buffer8(infos.phase); pduel->write_buffer8(infos.phase);
add_process(PROCESSOR_IDLE_COMMAND, 0, 0, 0, 0, 0); add_process(PROCESSOR_IDLE_COMMAND, 0, 0, 0, 0, 0);
...@@ -3423,7 +3422,7 @@ int32 field::process_turn(uint16 step, uint8 turn_player) { ...@@ -3423,7 +3422,7 @@ int32 field::process_turn(uint16 step, uint8 turn_player) {
case 17: { case 17: {
core.new_fchain.clear(); core.new_fchain.clear();
core.new_ochain.clear(); core.new_ochain.clear();
core.instant_f_chain.clear(); core.quick_f_chain.clear();
add_process(PROCESSOR_PHASE_EVENT, 0, 0, 0, PHASE_END, 0); add_process(PROCESSOR_PHASE_EVENT, 0, 0, 0, PHASE_END, 0);
return FALSE; return FALSE;
} }
......
...@@ -609,7 +609,7 @@ end ...@@ -609,7 +609,7 @@ end
function Auxiliary.FConditionCodeRep(code,cc,sub,insf) function Auxiliary.FConditionCodeRep(code,cc,sub,insf)
return function(e,g,gc,chkf) return function(e,g,gc,chkf)
if g==nil then return insf end if g==nil then return insf end
if gc then return gc:IsHasEffect() and g:IsExists(Card.IsCode,cc-1,nil,code) end if gc then return gc:IsHasEffect(EFFECT_FUSION_SUBSTITUTE) and g:IsExists(Card.IsCode,cc-1,nil,code) end
local g1=g:Filter(Card.IsCode,nil,code) local g1=g:Filter(Card.IsCode,nil,code)
if not sub then if not sub then
if chkf~=PLAYER_NONE then return g1:GetCount()>=cc and g1:FilterCount(Card.IsOnField,nil)~=0 if chkf~=PLAYER_NONE then return g1:GetCount()>=cc and g1:FilterCount(Card.IsOnField,nil)~=0
......
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