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}