manabrew_engine/ability/effects/
bid_life_effect.rs1use super::EffectContext;
8use crate::ids::PlayerId;
9
10#[manabrew_engine_macros::spell_effect(BidLifeEffect)]
14fn resolve(ctx: &mut EffectContext, sa: &crate::spellability::SpellAbility) {
15 let controller = sa.activating_player;
16 let players: Vec<PlayerId> = ctx.game.player_order.clone();
17
18 let mut highest_bid = 0i32;
19 let mut highest_bidder = controller;
20
21 for &pid in &players {
23 if ctx.game.player(pid).has_lost {
24 continue;
25 }
26
27 ctx.agents[pid.index()].snapshot_state(ctx.game, ctx.mana_pools);
28 let _max_bid = ctx.game.player(pid).life;
31 let bid = if pid == controller { 1 } else { 0 };
33
34 if bid > highest_bid {
35 highest_bid = bid;
36 highest_bidder = pid;
37 }
38 }
39
40 if highest_bid > 0 {
42 ctx.game.player_lose_life(highest_bidder, highest_bid);
43 }
44
45 if let Some(sid) = sa.source {
47 ctx.game.card_mut(sid).add_remembered_player(highest_bidder);
48 ctx.game
49 .card_mut(sid)
50 .set_s_var("HighestLifeBid", format!("Number${highest_bid}"));
51 }
52}