manabrew_engine/ability/effects/
draft_effect.rs1use super::EffectContext;
6use crate::parsing::keys;
7
8#[manabrew_engine_macros::spell_effect(DraftEffect)]
12fn resolve(ctx: &mut EffectContext, sa: &crate::spellability::SpellAbility) {
13 let source = match sa.source {
14 Some(s) => s,
15 None => return,
16 };
17 let controller = sa.activating_player;
18
19 let spellbook = match sa.ir.spellbook_text.as_deref() {
21 Some(sb) => sb
22 .split(',')
23 .map(|s| s.trim().replace(';', ","))
24 .collect::<Vec<_>>(),
25 None => return,
26 };
27
28 let num_to_draft = super::resolve_numeric_svar(ctx.game, sa, "DraftNum", 1).max(1) as usize;
29
30 for _ in 0..num_to_draft {
31 if spellbook.is_empty() {
32 break;
33 }
34 let chosen_name =
37 &spellbook[ctx.rng.next_int(spellbook.len() as i32) as usize % spellbook.len()];
38
39 if sa.param_is_true(keys::REMEMBER_DRAFTED) {
41 ctx.game
42 .card_mut(source)
43 .set_s_var("DraftedCard", chosen_name.clone());
44 }
45 }
46 let _ = controller; }