Cascade and Kicker
Last night I was playing Forge and used Bloodbraid Elf to Cascade into a Burst Lightning. I chose to play the Kicker ability and was pleasantly surprised when I didn't have to pay the additional mana cost. As far as I understand the rules, I should have had to pay the Kicker cost of 4.
I prototyped a fix for this in my local copy. Basically I added a 'setKickerAbility/isKickerAbility' pair of accessors. In the code for BurstLightning, I do the following to the kicker ability:
I am not terribly familiar with Forge's code for either Kicker or Input, and so I am asking for comments on this solution. If someone knows of or planned a better way to fix this I'm happy to defer to them.
I prototyped a fix for this in my local copy. Basically I added a 'setKickerAbility/isKickerAbility' pair of accessors. In the code for BurstLightning, I do the following to the kicker ability:
- Code: Select all
kicker.setManaCost("R 4");
kicker.setAdditionalManaCost("4");
kicker.setKickerAbility(true);
kicker.setBeforePayMana(CardFactoryUtil.input_targetCreaturePlayer(kicker, true, false));
kicker.setDescription("Kicker: 4");
I am not terribly familiar with Forge's code for either Kicker or Input, and so I am asking for comments on this solution. If someone knows of or planned a better way to fix this I'm happy to defer to them.
- Code: Select all
public void playSpellAbilityForFree(final SpellAbility sa) {
if(sa.getBeforePayMana() == null) {
boolean x = false;
if (sa.getSourceCard().getManaCost().contains("X"))
x = true;
if (sa.isKickerAbility()) {
Command paid1 = new Command() {
private static final long serialVersionUID = 1L;
public void execute() {
AllZone.Stack.add(sa);
}
};
AllZone.InputControl.setInput(new Input_PayManaCost_Ability(sa.getAdditionalManaCost(),paid1));
}
AllZone.Stack.add(sa, x);
} else {
if (sa.isKickerAbility()) {
sa.getBeforePayMana().setFree(false);
sa.setManaCost(sa.getAdditionalManaCost());
} else {
sa.getBeforePayMana().setFree(true);
}
AllZone.InputControl.setInput(sa.getBeforePayMana());
}