use forge_foundation::ZoneType;
use super::{resolve_numeric_svar, EffectContext};
use crate::ids::CardId;
use crate::parsing::keys;
#[manabrew_engine_macros::spell_effect(MultiplePilesEffect)]
fn resolve(ctx: &mut EffectContext, sa: &crate::spellability::SpellAbility) {
let source = match sa.source {
Some(s) => s,
None => return,
};
let controller = sa.activating_player;
let pile_count = resolve_numeric_svar(ctx.game, sa, keys::PILES, 2).max(0) as usize;
let random_chosen = sa.ir.random_chosen;
let zone = sa.ir.zone.unwrap_or(ZoneType::Battlefield);
let pool: Vec<CardId> = ctx
.game
.cards
.iter()
.filter(|c| c.zone == zone && c.controller == controller)
.map(|c| c.id)
.collect();
if pool.is_empty() || pile_count == 0 {
return;
}
let mut piles: Vec<Vec<CardId>> = vec![vec![]; pile_count];
for (i, card_id) in pool.iter().enumerate() {
piles[i % pile_count].push(*card_id);
}
if random_chosen && !piles.is_empty() {
let chosen_idx = ctx.rng.next_int(piles.len() as i32) as usize % piles.len();
for card_id in &piles[chosen_idx] {
ctx.game.card_mut(source).add_remembered_card(*card_id);
}
}
}