From ffe3ba695befd8a6f0b390116b6f67268cf42556 Mon Sep 17 00:00:00 2001 From: Edoardo Lolletti Date: Fri, 8 Mar 2024 11:03:06 +0100 Subject: [PATCH] Make field::raise_event take card_set by value --- field.cpp | 2 +- field.h | 2 +- libduel.cpp | 15 ++++----- operations.cpp | 89 +++++++++++++++++++++++++------------------------- processor.cpp | 19 +++++------ 5 files changed, 61 insertions(+), 66 deletions(-) diff --git a/field.cpp b/field.cpp index dbe7f366..beb126e6 100644 --- a/field.cpp +++ b/field.cpp @@ -1064,7 +1064,7 @@ void field::swap_deck_and_grave(uint8_t playerid) { if(cur_player.list_main.size() || ex.size()) { card_set cset(ex.begin(), ex.end()); cset.insert(cur_player.list_main.begin(), cur_player.list_main.end()); - raise_event(&cset, EVENT_LEAVE_GRAVE, pduel->game_field->core.reason_effect, 0, pduel->game_field->core.reason_player, 0, 0); + raise_event(std::move(cset), EVENT_LEAVE_GRAVE, pduel->game_field->core.reason_effect, 0, pduel->game_field->core.reason_player, 0, 0); process_single_event(); process_instant_event(); } diff --git a/field.h b/field.h index 4b45160c..79097550 100644 --- a/field.h +++ b/field.h @@ -568,7 +568,7 @@ class field { } void raise_event(card* event_card, uint32_t event_code, effect* reason_effect, uint32_t reason, uint8_t reason_player, uint8_t event_player, uint32_t event_value); - void raise_event(card_set* event_cards, uint32_t event_code, effect* reason_effect, uint32_t reason, uint8_t reason_player, uint8_t event_player, uint32_t event_value); + void raise_event(card_set event_cards, uint32_t event_code, effect* reason_effect, uint32_t reason, uint8_t reason_player, uint8_t event_player, uint32_t event_value); void raise_single_event(card* trigger_card, card_set* event_cards, uint32_t event_code, effect* reason_effect, uint32_t reason, uint8_t reason_player, uint8_t event_player, uint32_t event_value); int32_t check_event(uint32_t code, tevent* pe = nullptr); int32_t check_event_c(effect* peffect, uint8_t playerid, int32_t neglect_con, int32_t neglect_cost, int32_t copy_info, tevent* pe = nullptr); diff --git a/libduel.cpp b/libduel.cpp index b9bdca36..a1d67004 100644 --- a/libduel.cpp +++ b/libduel.cpp @@ -769,10 +769,9 @@ LUA_STATIC_FUNCTION(SwapSequence) { && pcard1->is_affect_by_effect(pduel->game_field->core.reason_effect) && pcard2->is_affect_by_effect(pduel->game_field->core.reason_effect)) { pduel->game_field->swap_card(pcard1, pcard2); - card_set swapped{ pcard1, pcard2 }; pduel->game_field->raise_single_event(pcard1, nullptr, EVENT_MOVE, pduel->game_field->core.reason_effect, 0, pduel->game_field->core.reason_player, player, 0); pduel->game_field->raise_single_event(pcard2, nullptr, EVENT_MOVE, pduel->game_field->core.reason_effect, 0, pduel->game_field->core.reason_player, player, 0); - pduel->game_field->raise_event(&swapped, EVENT_MOVE, pduel->game_field->core.reason_effect, 0, pduel->game_field->core.reason_player, player, 0); + pduel->game_field->raise_event({ pcard1, pcard2 }, EVENT_MOVE, pduel->game_field->core.reason_effect, 0, pduel->game_field->core.reason_player, player, 0); pduel->game_field->process_single_event(); pduel->game_field->process_instant_event(); } @@ -908,10 +907,10 @@ LUA_STATIC_FUNCTION(ConfirmCards) { message->write(_pcard->current.sequence); raise_confirm_event(_pcard); } - field.raise_event(&pgroup->container, EVENT_CONFIRM, trigeff, reason, field.core.reason_player, revealingplayer, 0); + field.raise_event(pgroup->container, EVENT_CONFIRM, trigeff, reason, field.core.reason_player, revealingplayer, 0); } if(handgroup.size()) - field.raise_event(&handgroup, EVENT_TOHAND_CONFIRM, trigeff, reason, field.core.reason_player, revealingplayer, 0); + field.raise_event(std::move(handgroup), EVENT_TOHAND_CONFIRM, trigeff, reason, field.core.reason_player, revealingplayer, 0); field.process_single_event(); field.process_instant_event(); return yield(); @@ -983,7 +982,7 @@ LUA_STATIC_FUNCTION(RaiseEvent) { if(auto [pcard, pgroup] = lua_get_card_or_group(L, 1); pcard) pduel->game_field->raise_event(pcard, code, peffect, r, rp, ep, ev); else - pduel->game_field->raise_event(&pgroup->container, code, peffect, r, rp, ep, ev); + pduel->game_field->raise_event(pgroup->container, code, peffect, r, rp, ep, ev); pduel->game_field->process_instant_event(); return yield(); } @@ -1219,7 +1218,7 @@ LUA_STATIC_FUNCTION(EquipComplete) { field->raise_single_event(equip_target, &core.equiping_cards, EVENT_EQUIP, core.reason_effect, 0, core.reason_player, PLAYER_NONE, 0); } - field->raise_event(&core.equiping_cards, EVENT_EQUIP, + field->raise_event(core.equiping_cards, EVENT_EQUIP, core.reason_effect, 0, core.reason_player, PLAYER_NONE, 0); core.hint_timing[0] |= TIMING_EQUIP; core.hint_timing[1] |= TIMING_EQUIP; @@ -1411,7 +1410,7 @@ LUA_STATIC_FUNCTION(ShuffleSetCard) { pcard->current.sequence = seq[i]; field->raise_single_event(pcard, nullptr, EVENT_MOVE, pcard->current.reason_effect, pcard->current.reason, pcard->current.reason_player, tp, 0); } - field->raise_event(&pgroup->container, EVENT_MOVE, field->core.reason_effect, 0, field->core.reason_player, tp, 0); + field->raise_event(pgroup->container, EVENT_MOVE, field->core.reason_effect, 0, field->core.reason_player, tp, 0); field->process_single_event(); field->process_instant_event(); for(uint32_t i = 0; i < ct; ++i) { @@ -1633,7 +1632,7 @@ LUA_STATIC_FUNCTION(NegateSummon) { if(pcard) pduel->game_field->raise_event(pcard, event_code, reason_effect, REASON_EFFECT, reason_player, sumplayer, 0); else - pduel->game_field->raise_event(&pgroup->container, event_code, reason_effect, REASON_EFFECT, reason_player, sumplayer, 0); + pduel->game_field->raise_event(pgroup->container, event_code, reason_effect, REASON_EFFECT, reason_player, sumplayer, 0); pduel->game_field->process_instant_event(); return 0; } diff --git a/operations.cpp b/operations.cpp index 322233b3..16516786 100644 --- a/operations.cpp +++ b/operations.cpp @@ -510,9 +510,9 @@ bool field::process(Processors::Draw& arg) { raise_single_event(pcard, nullptr, EVENT_MOVE, reason_effect, reason, reason_player, playerid, 0); } process_single_event(); - raise_event(&drawn_set, EVENT_DRAW, reason_effect, reason, reason_player, playerid, drawn); - raise_event(&drawn_set, EVENT_TO_HAND, reason_effect, reason, reason_player, playerid, drawn); - raise_event(&drawn_set, EVENT_MOVE, reason_effect, reason, reason_player, playerid, drawn); + raise_event(drawn_set, EVENT_DRAW, reason_effect, reason, reason_player, playerid, drawn); + raise_event(drawn_set, EVENT_TO_HAND, reason_effect, reason, reason_player, playerid, drawn); + raise_event(drawn_set, EVENT_MOVE, reason_effect, reason, reason_player, playerid, drawn); process_instant_event(); } return FALSE; @@ -1040,7 +1040,7 @@ bool field::process(Processors::XyzOverlay& arg) { writetopcard(0); writetopcard(1); if(from_grave.size()) { - raise_event(&from_grave, EVENT_LEAVE_GRAVE, core.reason_effect, 0, core.reason_player, 0, 0); + raise_event(std::move(from_grave), EVENT_LEAVE_GRAVE, core.reason_effect, 0, core.reason_player, 0, 0); process_single_event(); process_instant_event(); } @@ -1155,8 +1155,8 @@ bool field::process(Processors::GetControl& arg) { raise_single_event(pcard, nullptr, EVENT_MOVE, reason_effect, REASON_EFFECT, reason_player, playerid, 0); } if(targets->container.size()) { - raise_event(&targets->container, EVENT_CONTROL_CHANGED, reason_effect, REASON_EFFECT, reason_player, playerid, 0); - raise_event(&targets->container, EVENT_MOVE, reason_effect, REASON_EFFECT, reason_player, playerid, 0); + raise_event(targets->container, EVENT_CONTROL_CHANGED, reason_effect, REASON_EFFECT, reason_player, playerid, 0); + raise_event(targets->container, EVENT_MOVE, reason_effect, REASON_EFFECT, reason_player, playerid, 0); } process_single_event(); process_instant_event(); @@ -1314,8 +1314,8 @@ bool field::process(Processors::SwapControl& arg) { raise_single_event(pcard, nullptr, EVENT_CONTROL_CHANGED, reason_effect, REASON_EFFECT, reason_player, pcard->current.controler, 0); raise_single_event(pcard, nullptr, EVENT_MOVE, reason_effect, REASON_EFFECT, reason_player, pcard->current.controler, 0); } - raise_event(&targets1->container, EVENT_CONTROL_CHANGED, reason_effect, REASON_EFFECT, reason_player, 0, 0); - raise_event(&targets1->container, EVENT_MOVE, reason_effect, REASON_EFFECT, reason_player, 0, 0); + raise_event(targets1->container, EVENT_CONTROL_CHANGED, reason_effect, REASON_EFFECT, reason_player, 0, 0); + raise_event(targets1->container, EVENT_MOVE, reason_effect, REASON_EFFECT, reason_player, 0, 0); process_single_event(); process_instant_event(); return FALSE; @@ -1448,8 +1448,8 @@ bool field::process(Processors::ControlAdjust& arg) { raise_single_event(pcard, nullptr, EVENT_MOVE, nullptr, REASON_RULE, 0, pcard->current.controler, 0); } if(core.control_adjust_set[0].size()) { - raise_event(&core.control_adjust_set[0], EVENT_CONTROL_CHANGED, nullptr, 0, 0, 0, 0); - raise_event(&core.control_adjust_set[0], EVENT_MOVE, nullptr, 0, 0, 0, 0); + raise_event(core.control_adjust_set[0], EVENT_CONTROL_CHANGED, nullptr, 0, 0, 0, 0); + raise_event(core.control_adjust_set[0], EVENT_MOVE, nullptr, 0, 0, 0, 0); } process_single_event(); process_instant_event(); @@ -1755,7 +1755,7 @@ bool field::process(Processors::Equip& arg) { card_set cset; cset.insert(equip_card); raise_single_event(target, &cset, EVENT_EQUIP, core.reason_effect, 0, core.reason_player, PLAYER_NONE, 0); - raise_event(&cset, EVENT_EQUIP, core.reason_effect, 0, core.reason_player, PLAYER_NONE, 0); + raise_event(std::move(cset), EVENT_EQUIP, core.reason_effect, 0, core.reason_player, PLAYER_NONE, 0); core.hint_timing[target->overlay_target ? target->overlay_target->current.controler : target->current.controler] |= TIMING_EQUIP; process_single_event(); process_instant_event(); @@ -2250,7 +2250,7 @@ bool field::process(Processors::SummonRule& arg) { if (target->material_cards.size()) { for (auto& mcard : target->material_cards) raise_single_event(mcard, nullptr, EVENT_BE_PRE_MATERIAL, summon_procedure_effect, REASON_SUMMON, sumplayer, sumplayer, 0); - raise_event(&target->material_cards, EVENT_BE_PRE_MATERIAL, summon_procedure_effect, REASON_SUMMON, sumplayer, sumplayer, 0); + raise_event(target->material_cards, EVENT_BE_PRE_MATERIAL, summon_procedure_effect, REASON_SUMMON, sumplayer, sumplayer, 0); } process_single_event(); process_instant_event(); @@ -2313,7 +2313,7 @@ bool field::process(Processors::SummonRule& arg) { if(target->material_cards.size()) { for(auto& mcard : target->material_cards) raise_single_event(mcard, nullptr, EVENT_BE_MATERIAL, summon_procedure_effect, REASON_SUMMON, sumplayer, sumplayer, 0); - raise_event(&target->material_cards, EVENT_BE_MATERIAL, summon_procedure_effect, REASON_SUMMON, sumplayer, sumplayer, 0); + raise_event(target->material_cards, EVENT_BE_MATERIAL, summon_procedure_effect, REASON_SUMMON, sumplayer, sumplayer, 0); } process_single_event(); process_instant_event(); @@ -2984,7 +2984,7 @@ bool field::process(Processors::SpellSetGroup& arg) { } case 7: { adjust_instant(); - raise_event(&core.operated_set, EVENT_SSET, reason_effect, 0, setplayer, setplayer, 0); + raise_event(core.operated_set, EVENT_SSET, reason_effect, 0, setplayer, setplayer, 0); process_instant_event(); if(core.current_chain.size() == 0) { adjust_all(); @@ -3174,7 +3174,7 @@ bool field::process(Processors::SpSummonRule& arg) { for (auto& mcard : target->material_cards) raise_single_event(mcard, nullptr, EVENT_BE_PRE_MATERIAL, proc, matreason, sumplayer, sumplayer, 0); } - raise_event(&target->material_cards, EVENT_BE_PRE_MATERIAL, proc, matreason, sumplayer, sumplayer, 0); + raise_event(target->material_cards, EVENT_BE_PRE_MATERIAL, proc, matreason, sumplayer, sumplayer, 0); process_single_event(); process_instant_event(); return FALSE; @@ -3246,7 +3246,7 @@ bool field::process(Processors::SpSummonRule& arg) { for(auto& mcard : target->material_cards) raise_single_event(mcard, nullptr, EVENT_BE_MATERIAL, proc, matreason, sumplayer, sumplayer, 0); } - raise_event(&target->material_cards, EVENT_BE_MATERIAL, proc, matreason, sumplayer, sumplayer, 0); + raise_event(target->material_cards, EVENT_BE_MATERIAL, proc, matreason, sumplayer, sumplayer, 0); process_single_event(); process_instant_event(); return FALSE; @@ -3402,7 +3402,7 @@ bool field::process(Processors::SpSummonRule& arg) { } } if(cset.size()) { - raise_event(&cset, EVENT_SPSUMMON, arg.summon_proc_effect, 0, sumplayer, sumplayer, 0); + raise_event(std::move(cset), EVENT_SPSUMMON, arg.summon_proc_effect, 0, sumplayer, sumplayer, 0); process_instant_event(); emplace_process(true, true, true); } @@ -3476,7 +3476,7 @@ bool field::process(Processors::SpSummonRule& arg) { for(auto& pcard : pgroup->container) raise_single_event(pcard, nullptr, EVENT_SPSUMMON_SUCCESS, pcard->current.reason_effect, 0, pcard->current.reason_player, pcard->summon.player, 0); process_single_event(); - raise_event(&pgroup->container, EVENT_SPSUMMON_SUCCESS, arg.summon_proc_effect, 0, sumplayer, sumplayer, 0); + raise_event(pgroup->container, EVENT_SPSUMMON_SUCCESS, arg.summon_proc_effect, 0, sumplayer, sumplayer, 0); process_instant_event(); if(core.current_chain.size() == 0) { adjust_all(); @@ -3744,7 +3744,7 @@ bool field::process(Processors::SpSummon& arg) { matreason = REASON_LINK; for(auto& mcard : pcard->material_cards) raise_single_event(mcard, &targets->container, EVENT_BE_MATERIAL, pcard->current.reason_effect, matreason, pcard->current.reason_player, pcard->summon.player, 0); - raise_event(&(pcard->material_cards), EVENT_BE_MATERIAL, reason_effect, matreason, reason_player, pcard->summon.player, 0); + raise_event(pcard->material_cards, EVENT_BE_MATERIAL, reason_effect, matreason, reason_player, pcard->summon.player, 0); } pcard->set_status(STATUS_FUTURE_FUSION, FALSE); } @@ -3753,7 +3753,7 @@ bool field::process(Processors::SpSummon& arg) { return FALSE; } case 4: { - raise_event(&targets->container, EVENT_SPSUMMON_SUCCESS, reason_effect, 0, reason_player, PLAYER_NONE, 0); + raise_event(targets->container, EVENT_SPSUMMON_SUCCESS, reason_effect, 0, reason_player, PLAYER_NONE, 0); process_instant_event(); return FALSE; } @@ -3968,7 +3968,7 @@ bool field::process(Processors::Destroy& arg) { } adjust_instant(); process_single_event(); - raise_event(&targets->container, EVENT_DESTROY, reason_effect, reason, reason_player, 0, 0); + raise_event(targets->container, EVENT_DESTROY, reason_effect, reason, reason_player, 0, 0); process_instant_event(); return FALSE; } @@ -4345,9 +4345,9 @@ bool field::process(Processors::SendTo& arg) { } } if(leave_p.size()) - raise_event(&leave_p, EVENT_LEAVE_FIELD_P, reason_effect, reason, reason_player, 0, 0); + raise_event(std::move(leave_p), EVENT_LEAVE_FIELD_P, reason_effect, reason, reason_player, 0, 0); if(destroying.size()) - raise_event(&destroying, EVENT_DESTROY, reason_effect, reason, reason_player, 0, 0); + raise_event(std::move(destroying), EVENT_DESTROY, reason_effect, reason, reason_player, 0, 0); process_single_event(); process_instant_event(); return FALSE; @@ -4640,11 +4640,11 @@ bool field::process(Processors::SendTo& arg) { } process_single_event(); if(param->leave_field.size()) - raise_event(¶m->leave_field, EVENT_LEAVE_FIELD, reason_effect, reason, reason_player, 0, 0); + raise_event(std::move(param->leave_field), EVENT_LEAVE_FIELD, reason_effect, reason, reason_player, 0, 0); if(param->leave_grave.size()) - raise_event(¶m->leave_grave, EVENT_LEAVE_GRAVE, reason_effect, reason, reason_player, 0, 0); + raise_event(std::move(param->leave_grave), EVENT_LEAVE_GRAVE, reason_effect, reason, reason_player, 0, 0); if((core.global_flag & GLOBALFLAG_DETACH_EVENT) && param->detach.size()) - raise_event(¶m->detach, EVENT_DETACH_MATERIAL, reason_effect, reason, reason_player, 0, 0); + raise_event(std::move(param->detach), EVENT_DETACH_MATERIAL, reason_effect, reason, reason_player, 0, 0); process_instant_event(); adjust_instant(); return FALSE; @@ -4711,20 +4711,20 @@ bool field::process(Processors::SendTo& arg) { raise_single_event(pcard, nullptr, EVENT_MOVE, pcard->current.reason_effect, pcard->current.reason, pcard->current.reason_player, 0, 0); } if(tohand.size()) - raise_event(&tohand, EVENT_TO_HAND, reason_effect, reason, reason_player, 0, 0); + raise_event(std::move(tohand), EVENT_TO_HAND, reason_effect, reason, reason_player, 0, 0); if(todeck.size()) - raise_event(&todeck, EVENT_TO_DECK, reason_effect, reason, reason_player, 0, 0); + raise_event(std::move(todeck), EVENT_TO_DECK, reason_effect, reason, reason_player, 0, 0); if(tograve.size()) - raise_event(&tograve, EVENT_TO_GRAVE, reason_effect, reason, reason_player, 0, 0); + raise_event(std::move(tograve), EVENT_TO_GRAVE, reason_effect, reason, reason_player, 0, 0); if(remove.size()) - raise_event(&remove, EVENT_REMOVE, reason_effect, reason, reason_player, 0, 0); + raise_event(std::move(remove), EVENT_REMOVE, reason_effect, reason, reason_player, 0, 0); if(discard.size()) - raise_event(&discard, EVENT_DISCARD, reason_effect, reason, reason_player, 0, 0); + raise_event(std::move(discard), EVENT_DISCARD, reason_effect, reason, reason_player, 0, 0); if(released.size()) - raise_event(&released, EVENT_RELEASE, reason_effect, reason, reason_player, 0, 0); + raise_event(std::move(released), EVENT_RELEASE, reason_effect, reason, reason_player, 0, 0); if(destroyed.size()) - raise_event(&destroyed, EVENT_DESTROYED, reason_effect, reason, reason_player, 0, 0); - raise_event(&targets->container, EVENT_MOVE, reason_effect, reason, reason_player, 0, 0); + raise_event(std::move(destroyed), EVENT_DESTROYED, reason_effect, reason, reason_player, 0, 0); + raise_event(targets->container, EVENT_MOVE, reason_effect, reason, reason_player, 0, 0); process_single_event(); process_instant_event(); if(equipings.size()) @@ -4850,23 +4850,22 @@ bool field::process(Processors::DiscardDeck& arg) { core.discarded_set.insert(pcard); } if(tohand.size()) - raise_event(&tohand, EVENT_TO_HAND, core.reason_effect, reason, core.reason_player, 0, 0); + raise_event(std::move(tohand), EVENT_TO_HAND, core.reason_effect, reason, core.reason_player, 0, 0); if(todeck.size()) - raise_event(&todeck, EVENT_TO_DECK, core.reason_effect, reason, core.reason_player, 0, 0); + raise_event(std::move(todeck), EVENT_TO_DECK, core.reason_effect, reason, core.reason_player, 0, 0); if(tograve.size()) - raise_event(&tograve, EVENT_TO_GRAVE, core.reason_effect, reason, core.reason_player, 0, 0); + raise_event(std::move(tograve), EVENT_TO_GRAVE, core.reason_effect, reason, core.reason_player, 0, 0); if(remove.size()) - raise_event(&remove, EVENT_REMOVE, core.reason_effect, reason, core.reason_player, 0, 0); - raise_event(&core.discarded_set, EVENT_MOVE, core.reason_effect, reason, core.reason_player, 0, 0); + raise_event(std::move(remove), EVENT_REMOVE, core.reason_effect, reason, core.reason_player, 0, 0); + raise_event(core.discarded_set, EVENT_MOVE, core.reason_effect, reason, core.reason_player, 0, 0); process_single_event(); process_instant_event(); adjust_instant(); return FALSE; } case 2: { - core.operated_set.clear(); - core.operated_set = core.discarded_set; - returns.set(0, static_cast(core.discarded_set.size())); + core.operated_set.swap(core.discarded_set); + returns.set(0, static_cast(core.operated_set.size())); core.discarded_set.clear(); return TRUE; } @@ -5325,11 +5324,11 @@ bool field::process(Processors::ChangePos& arg) { adjust_instant(); process_single_event(); if(flips.size()) - raise_event(&flips, EVENT_FLIP, reason_effect, 0, reason_player, 0, 0); + raise_event(std::move(flips), EVENT_FLIP, reason_effect, 0, reason_player, 0, 0); if(ssets.size()) - raise_event(&ssets, EVENT_SSET, reason_effect, 0, reason_player, 0, 0); + raise_event(std::move(ssets), EVENT_SSET, reason_effect, 0, reason_player, 0, 0); if(pos_changed.size()) - raise_event(&pos_changed, EVENT_CHANGE_POS, reason_effect, 0, reason_player, 0, 0); + raise_event(std::move(pos_changed), EVENT_CHANGE_POS, reason_effect, 0, reason_player, 0, 0); process_instant_event(); if(equipings.size()) destroy(std::move(equipings), nullptr, REASON_LOST_TARGET + REASON_RULE, PLAYER_NONE); diff --git a/processor.cpp b/processor.cpp index 12590534..873caca8 100644 --- a/processor.cpp +++ b/processor.cpp @@ -210,15 +210,12 @@ void field::raise_event(card* event_card, uint32_t event_code, effect* reason_ef new_event.event_value = event_value; new_event.global_id = infos.event_id; } -void field::raise_event(card_set* event_cards, uint32_t event_code, effect* reason_effect, uint32_t reason, uint8_t reason_player, uint8_t event_player, uint32_t event_value) { +void field::raise_event(card_set event_cards, uint32_t event_code, effect* reason_effect, uint32_t reason, uint8_t reason_player, uint8_t event_player, uint32_t event_value) { auto& new_event = core.queue_event.emplace_back(); new_event.trigger_card = nullptr; - if (event_cards) { - group* pgroup = pduel->new_group(*event_cards); - pgroup->is_readonly = TRUE; - new_event.event_cards = pgroup; - } else - new_event.event_cards = nullptr; + group* pgroup = pduel->new_group(std::move(event_cards)); + pgroup->is_readonly = TRUE; + new_event.event_cards = pgroup; new_event.event_code = event_code; new_event.reason_effect = reason_effect; new_event.reason = reason; @@ -2671,10 +2668,10 @@ bool field::process(Processors::BattleCommand& arg) { ed.insert(core.attack_target); } if(ing.size()) - raise_event(&ing, EVENT_BATTLE_DESTROYING, nullptr, 0, 0, 0, 0); + raise_event(std::move(ing), EVENT_BATTLE_DESTROYING, nullptr, 0, 0, 0, 0); if(ed.size()) { - raise_event(&ed, EVENT_BATTLE_DESTROYED, nullptr, 0, 0, 0, 0); - raise_event(&ed, EVENT_DESTROYED, nullptr, 0, 0, 0, 0); + raise_event(ed, EVENT_BATTLE_DESTROYED, nullptr, 0, 0, 0, 0); + raise_event(std::move(ed), EVENT_DESTROYED, nullptr, 0, 0, 0, 0); } raise_single_event(core.attacker, nullptr, EVENT_DAMAGE_STEP_END, nullptr, 0, 0, 0, 0); if(core.attack_target) @@ -3836,7 +3833,7 @@ bool field::process(Processors::AddChain& arg) { raise_single_event(pcard, nullptr, EVENT_BECOME_TARGET, peffect, 0, clit.triggering_player, 0, clit.chain_count); process_single_event(); if(clit.target_cards->container.size()) - raise_event(&clit.target_cards->container, EVENT_BECOME_TARGET, peffect, 0, clit.triggering_player, clit.triggering_player, clit.chain_count); + raise_event(clit.target_cards->container, EVENT_BECOME_TARGET, peffect, 0, clit.triggering_player, clit.triggering_player, clit.chain_count); } } if(peffect->type & EFFECT_TYPE_ACTIVATE) {