Skip to main content

manabrew_engine/ability/effects/
change_x_effect.rs

1//! ChangeX effect — modify the X value of a spell or ability.
2//!
3//! Ported from Java's `ChangeXEffect.java`.
4
5use super::EffectContext;
6
7/// Struct form of this effect so it can participate in the
8/// `SpellAbilityEffect` trait hierarchy — mirrors Java's
9/// `ChangeXEffect` class extending `SpellAbilityEffect`.
10#[manabrew_engine_macros::spell_effect(ChangeXEffect)]
11fn resolve(ctx: &mut EffectContext, sa: &crate::spellability::SpellAbility) {
12    let Some(source_id) = sa.source else { return };
13
14    let new_x = super::resolve_numeric_svar(ctx.game, sa, "NewX", 0);
15    ctx.game
16        .card_mut(source_id)
17        .svars
18        .insert("X".to_string(), format!("Number${}", new_x));
19}