manabrew_engine/ability/effects/
ownership_gain_effect.rs1use super::EffectContext;
6use crate::ids::CardId;
7
8#[manabrew_engine_macros::spell_effect(OwnershipGainEffect)]
12fn resolve(ctx: &mut EffectContext, sa: &crate::spellability::SpellAbility) {
13 let new_owner = if let Some(def) = sa.defined_player() {
14 let players = super::resolve_defined_players(def, sa.activating_player, ctx.game);
15 players.into_iter().next().unwrap_or(sa.activating_player)
16 } else {
17 sa.activating_player
18 };
19
20 let targets: Vec<CardId> = if let Some(target) = sa.target_chosen.target_card {
21 vec![target]
22 } else if let Some(source) = sa.source {
23 ctx.game.card(source).remembered_cards.clone()
24 } else {
25 return;
26 };
27
28 for card_id in targets {
29 ctx.game.card_mut(card_id).set_owner(new_owner);
31 ctx.game.card_mut(card_id).set_controller(new_owner);
32 }
33}