Commit c302730f authored by salix5's avatar salix5

const reference in field::release

parent 8ededdfd
...@@ -1940,7 +1940,7 @@ void field::ritual_release(const card_set& material) { ...@@ -1940,7 +1940,7 @@ void field::ritual_release(const card_set& material) {
rel.insert(pcard); rel.insert(pcard);
} }
send_to(&tgy, core.reason_effect, REASON_RITUAL + REASON_EFFECT + REASON_MATERIAL, core.reason_player, PLAYER_NONE, LOCATION_GRAVE, 0, POS_FACEUP); send_to(&tgy, core.reason_effect, REASON_RITUAL + REASON_EFFECT + REASON_MATERIAL, core.reason_player, PLAYER_NONE, LOCATION_GRAVE, 0, POS_FACEUP);
release(&rel, core.reason_effect, REASON_RITUAL + REASON_EFFECT + REASON_MATERIAL, core.reason_player); release(rel, core.reason_effect, REASON_RITUAL + REASON_EFFECT + REASON_MATERIAL, core.reason_player);
send_to(&rem, core.reason_effect, REASON_RITUAL + REASON_EFFECT + REASON_MATERIAL, core.reason_player, PLAYER_NONE, LOCATION_REMOVED, 0, POS_FACEUP); send_to(&rem, core.reason_effect, REASON_RITUAL + REASON_EFFECT + REASON_MATERIAL, core.reason_player, PLAYER_NONE, LOCATION_REMOVED, 0, POS_FACEUP);
} }
void field::get_xyz_material(lua_State* L, card* scard, int32 findex, uint32 lv, int32 maxc, group* mg) { void field::get_xyz_material(lua_State* L, card* scard, int32 findex, uint32 lv, int32 maxc, group* mg) {
......
...@@ -580,7 +580,7 @@ public: ...@@ -580,7 +580,7 @@ public:
void special_summon_complete(effect* reason_effect, uint8 reason_player); void special_summon_complete(effect* reason_effect, uint8 reason_player);
void destroy(card_set* targets, effect* reason_effect, uint32 reason, uint32 reason_player, uint32 playerid = 2, uint32 destination = 0, uint32 sequence = 0); void destroy(card_set* targets, effect* reason_effect, uint32 reason, uint32 reason_player, uint32 playerid = 2, uint32 destination = 0, uint32 sequence = 0);
void destroy(card* target, effect* reason_effect, uint32 reason, uint32 reason_player, uint32 playerid = 2, uint32 destination = 0, uint32 sequence = 0); void destroy(card* target, effect* reason_effect, uint32 reason, uint32 reason_player, uint32 playerid = 2, uint32 destination = 0, uint32 sequence = 0);
void release(card_set* targets, effect* reason_effect, uint32 reason, uint32 reason_player); void release(const card_set& targets, effect* reason_effect, uint32 reason, uint32 reason_player);
void release(card* target, effect* reason_effect, uint32 reason, uint32 reason_player); void release(card* target, effect* reason_effect, uint32 reason, uint32 reason_player);
void send_to(card_set* targets, effect* reason_effect, uint32 reason, uint32 reason_player, uint32 playerid, uint32 destination, uint32 sequence, uint32 position, uint8 send_activating = FALSE); void send_to(card_set* targets, effect* reason_effect, uint32 reason, uint32 reason_player, uint32 playerid, uint32 destination, uint32 sequence, uint32 position, uint8 send_activating = FALSE);
void send_to(card* target, effect* reason_effect, uint32 reason, uint32 reason_player, uint32 playerid, uint32 destination, uint32 sequence, uint32 position, uint8 send_activating = FALSE); void send_to(card* target, effect* reason_effect, uint32 reason, uint32 reason_player, uint32 playerid, uint32 destination, uint32 sequence, uint32 position, uint8 send_activating = FALSE);
......
...@@ -838,7 +838,7 @@ int32 scriptlib::duel_release(lua_State *L) { ...@@ -838,7 +838,7 @@ int32 scriptlib::duel_release(lua_State *L) {
if(pcard) if(pcard)
pduel->game_field->release(pcard, pduel->game_field->core.reason_effect, reason, reason_player); pduel->game_field->release(pcard, pduel->game_field->core.reason_effect, reason, reason_player);
else else
pduel->game_field->release(&(pgroup->container), pduel->game_field->core.reason_effect, reason, reason_player); pduel->game_field->release(pgroup->container, pduel->game_field->core.reason_effect, reason, reason_player);
return lua_yieldk(L, 0, (lua_KContext)pduel, [](lua_State *L, int32 status, lua_KContext ctx) { return lua_yieldk(L, 0, (lua_KContext)pduel, [](lua_State *L, int32 status, lua_KContext ctx) {
duel* pduel = (duel*)ctx; duel* pduel = (duel*)ctx;
lua_pushinteger(L, pduel->game_field->returns.ivalue[0]); lua_pushinteger(L, pduel->game_field->returns.ivalue[0]);
......
...@@ -233,8 +233,8 @@ void field::destroy(card* target, effect* reason_effect, uint32 reason, uint32 r ...@@ -233,8 +233,8 @@ void field::destroy(card* target, effect* reason_effect, uint32 reason, uint32 r
tset.insert(target); tset.insert(target);
destroy(&tset, reason_effect, reason, reason_player, playerid, destination, sequence); destroy(&tset, reason_effect, reason, reason_player, playerid, destination, sequence);
} }
void field::release(card_set* targets, effect* reason_effect, uint32 reason, uint32 reason_player) { void field::release(const card_set& targets, effect* reason_effect, uint32 reason, uint32 reason_player) {
for(auto& pcard : *targets) { for(auto& pcard : targets) {
pcard->temp.reason = pcard->current.reason; pcard->temp.reason = pcard->current.reason;
pcard->temp.reason_effect = pcard->current.reason_effect; pcard->temp.reason_effect = pcard->current.reason_effect;
pcard->temp.reason_player = pcard->current.reason_player; pcard->temp.reason_player = pcard->current.reason_player;
...@@ -243,14 +243,13 @@ void field::release(card_set* targets, effect* reason_effect, uint32 reason, uin ...@@ -243,14 +243,13 @@ void field::release(card_set* targets, effect* reason_effect, uint32 reason, uin
pcard->current.reason_player = reason_player; pcard->current.reason_player = reason_player;
pcard->sendto_param.set(pcard->owner, POS_FACEUP, LOCATION_GRAVE); pcard->sendto_param.set(pcard->owner, POS_FACEUP, LOCATION_GRAVE);
} }
group* ng = pduel->new_group(*targets); group* ng = pduel->new_group(targets);
ng->is_readonly = GTYPE_READ_ONLY; ng->is_readonly = GTYPE_READ_ONLY;
add_process(PROCESSOR_RELEASE, 0, reason_effect, ng, reason, reason_player); add_process(PROCESSOR_RELEASE, 0, reason_effect, ng, reason, reason_player);
} }
void field::release(card* target, effect* reason_effect, uint32 reason, uint32 reason_player) { void field::release(card* target, effect* reason_effect, uint32 reason, uint32 reason_player) {
card_set tset; card_set tset{ target };
tset.insert(target); release(tset, reason_effect, reason, reason_player);
release(&tset, reason_effect, reason, reason_player);
} }
void field::send_to(card_set* targets, effect* reason_effect, uint32 reason, uint32 reason_player, uint32 playerid, uint32 destination, uint32 sequence, uint32 position, uint8 send_activating) { void field::send_to(card_set* targets, effect* reason_effect, uint32 reason, uint32 reason_player, uint32 playerid, uint32 destination, uint32 sequence, uint32 position, uint8 send_activating) {
if(destination & LOCATION_ONFIELD) if(destination & LOCATION_ONFIELD)
...@@ -1744,7 +1743,7 @@ int32 field::summon(uint16 step, uint8 sumplayer, card* target, effect* proc, ui ...@@ -1744,7 +1743,7 @@ int32 field::summon(uint16 step, uint8 sumplayer, card* target, effect* proc, ui
for(auto& pcard : *tributes) for(auto& pcard : *tributes)
pcard->current.reason_card = target; pcard->current.reason_card = target;
target->set_material(tributes); target->set_material(tributes);
release(tributes, 0, REASON_SUMMON | REASON_MATERIAL, sumplayer); release(*tributes, 0, REASON_SUMMON | REASON_MATERIAL, sumplayer);
target->summon_info = SUMMON_TYPE_NORMAL | SUMMON_TYPE_ADVANCE | (LOCATION_HAND << 16); target->summon_info = SUMMON_TYPE_NORMAL | SUMMON_TYPE_ADVANCE | (LOCATION_HAND << 16);
delete tributes; delete tributes;
core.units.begin()->peffect = 0; core.units.begin()->peffect = 0;
...@@ -2335,7 +2334,7 @@ int32 field::mset(uint16 step, uint8 setplayer, card* target, effect* proc, uint ...@@ -2335,7 +2334,7 @@ int32 field::mset(uint16 step, uint8 setplayer, card* target, effect* proc, uint
for(auto& pcard : *tributes) for(auto& pcard : *tributes)
pcard->current.reason_card = target; pcard->current.reason_card = target;
target->set_material(tributes); target->set_material(tributes);
release(tributes, 0, REASON_SUMMON | REASON_MATERIAL, setplayer); release(*tributes, 0, REASON_SUMMON | REASON_MATERIAL, setplayer);
target->summon_info = SUMMON_TYPE_NORMAL | SUMMON_TYPE_ADVANCE | (LOCATION_HAND << 16); target->summon_info = SUMMON_TYPE_NORMAL | SUMMON_TYPE_ADVANCE | (LOCATION_HAND << 16);
delete tributes; delete tributes;
core.units.begin()->peffect = 0; core.units.begin()->peffect = 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