remove kicker from MagicPermanent, convert multikicker to use MagicMultikickerCost
parent
16b1c2925e
commit
07f3648c49
|
@ -8,5 +8,5 @@ subtype=Vampire,Shaman
|
|||
cost={2}{B}
|
||||
pt=2/2
|
||||
timing=main
|
||||
ability=multikicker {B} target opponent discards a card for each time it was kicked
|
||||
ability=multikicker {B}
|
||||
requires_groovy_code
|
||||
|
|
|
@ -8,5 +8,5 @@ subtype=Ogre,Shaman
|
|||
cost={4}{R}
|
||||
pt=4/3
|
||||
timing=main
|
||||
ability=multikicker {R} it deals damage to target player equal to twice the number of times it was kicked
|
||||
ability=multikicker {R}
|
||||
requires_groovy_code
|
||||
|
|
|
@ -7,6 +7,6 @@ type=Creature
|
|||
subtype=Angel
|
||||
cost={3}{W}
|
||||
pt=2/4
|
||||
ability=flying,multikicker {W} you gain 2 life for each time it was kicked
|
||||
ability=flying,multikicker {W}
|
||||
timing=main
|
||||
requires_groovy_code
|
||||
|
|
|
@ -8,5 +8,5 @@ subtype=Elemental
|
|||
cost={2}{G}{G}
|
||||
pt=4/4
|
||||
timing=main
|
||||
ability=multikicker {G} put a 2/2 green Wolf creature token onto the battlefield for each time it was kicked
|
||||
ability=multikicker {G}
|
||||
requires_groovy_code
|
||||
|
|
|
@ -19,6 +19,7 @@ import magic.model.event.MagicPermanentActivation;
|
|||
import magic.model.event.MagicCyclingActivation;
|
||||
import magic.model.event.MagicReinforceActivation;
|
||||
import magic.model.event.MagicKickerCost;
|
||||
import magic.model.event.MagicMultikickerCost;
|
||||
import magic.model.mstatic.MagicCDA;
|
||||
import magic.model.mstatic.MagicStatic;
|
||||
import magic.model.trigger.MagicAllyGrowTrigger;
|
||||
|
@ -685,11 +686,8 @@ public enum MagicAbility {
|
|||
},
|
||||
Multikicker("multikicker", 0) {
|
||||
public void addAbilityImpl(final MagicCardDefinition card, final String arg) {
|
||||
final int idx = arg.indexOf(' ');
|
||||
final String[] token = {arg.substring(0,idx), arg.substring(idx+1)};
|
||||
final MagicManaCost cost = MagicManaCost.create(token[0]);
|
||||
final String desc = token[1];
|
||||
card.add(MagicPlayCardEvent.createKicker(cost, true, desc));
|
||||
final MagicManaCost cost = MagicManaCost.create(arg);
|
||||
card.add(new MagicMultikickerCost(cost));
|
||||
}
|
||||
},
|
||||
EntersWithX("enters with x", 0) {
|
||||
|
|
|
@ -57,7 +57,6 @@ public class MagicPermanent implements MagicSource,MagicTarget,Comparable<MagicP
|
|||
private int abilityPlayedThisTurn;
|
||||
private int damage;
|
||||
private int preventDamage;
|
||||
private int kicker;
|
||||
private int fixedScore;
|
||||
private int score;
|
||||
|
||||
|
@ -108,7 +107,6 @@ public class MagicPermanent implements MagicSource,MagicTarget,Comparable<MagicP
|
|||
chosenTarget = copyMap.copy(sourcePermanent.chosenTarget);
|
||||
damage=sourcePermanent.damage;
|
||||
preventDamage=sourcePermanent.preventDamage;
|
||||
kicker=sourcePermanent.kicker;
|
||||
fixedScore=sourcePermanent.fixedScore;
|
||||
score=sourcePermanent.score;
|
||||
stateId=sourcePermanent.stateId;
|
||||
|
@ -150,7 +148,6 @@ public class MagicPermanent implements MagicSource,MagicTarget,Comparable<MagicP
|
|||
stateFlags,
|
||||
damage,
|
||||
preventDamage,
|
||||
kicker,
|
||||
equippedCreature.getStateId(),
|
||||
enchantedCreature.getStateId(),
|
||||
blockedCreature.getStateId(),
|
||||
|
@ -488,16 +485,12 @@ public class MagicPermanent implements MagicSource,MagicTarget,Comparable<MagicP
|
|||
preventDamage=amount;
|
||||
}
|
||||
|
||||
public void setKicker(final int aKicker) {
|
||||
kicker = aKicker;
|
||||
}
|
||||
|
||||
public int getKicker() {
|
||||
return kicker;
|
||||
return card.getKicker();
|
||||
}
|
||||
|
||||
public boolean isKicked() {
|
||||
return kicker > 0 || card.isKicked();
|
||||
return card.isKicked();
|
||||
}
|
||||
|
||||
public int getLethalDamage(final int toughness) {
|
||||
|
|
|
@ -27,8 +27,6 @@ public class MagicPlayCardFromStackAction extends MagicPutIntoPlayAction {
|
|||
@Override
|
||||
protected MagicPermanent createPermanent(final MagicGame game) {
|
||||
cardOnStack.setMoveLocation(MagicLocationType.Play);
|
||||
final MagicPermanent permanent=game.createPermanent(cardOnStack.getCard(),cardOnStack.getController());
|
||||
permanent.setKicker(kicker);
|
||||
return permanent;
|
||||
return game.createPermanent(cardOnStack.getCard(),cardOnStack.getController());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -24,43 +24,33 @@ public class MagicKickerChoice extends MagicChoice {
|
|||
|
||||
private final MagicChoice otherChoice;
|
||||
private final MagicManaCost cost;
|
||||
private final boolean multi;
|
||||
private final String name;
|
||||
|
||||
public static MagicKickerChoice Replicate(final MagicChoice otherChoice, final MagicManaCost cost) {
|
||||
return new MagicKickerChoice(otherChoice, cost, true, "replicate");
|
||||
return new MagicKickerChoice(otherChoice, cost, "replicate");
|
||||
}
|
||||
|
||||
public static MagicKickerChoice Replicate(final MagicManaCost cost) {
|
||||
return new MagicKickerChoice(cost, true, "replicate");
|
||||
return new MagicKickerChoice(cost, "replicate");
|
||||
}
|
||||
|
||||
public MagicKickerChoice(final MagicChoice otherChoice, final MagicManaCost cost,final boolean multi,final String name) {
|
||||
public MagicKickerChoice(final MagicChoice otherChoice, final MagicManaCost cost,final String name) {
|
||||
super("Choose how many times to pay the " + name + " cost.");
|
||||
this.otherChoice=otherChoice;
|
||||
this.cost=cost;
|
||||
this.multi=multi;
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public MagicKickerChoice(final MagicChoice otherChoice,final MagicManaCost cost,final boolean multi) {
|
||||
this(otherChoice, cost, multi, "kicker");
|
||||
}
|
||||
|
||||
public MagicKickerChoice(final MagicChoice otherChoice,final MagicManaCost cost) {
|
||||
this(otherChoice, cost, false, "kicker");
|
||||
this(otherChoice, cost, "kicker");
|
||||
}
|
||||
|
||||
public MagicKickerChoice(final MagicManaCost cost,final boolean multi, final String name) {
|
||||
this(MagicChoice.NONE, cost, multi, name);
|
||||
}
|
||||
|
||||
public MagicKickerChoice(final MagicManaCost cost,final boolean multi) {
|
||||
this(MagicChoice.NONE, cost, multi, "kicker");
|
||||
public MagicKickerChoice(final MagicManaCost cost, final String name) {
|
||||
this(MagicChoice.NONE, cost, name);
|
||||
}
|
||||
|
||||
public MagicKickerChoice(final MagicManaCost cost) {
|
||||
this(MagicChoice.NONE, cost, false, "kicker");
|
||||
this(MagicChoice.NONE, cost, "kicker");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -94,9 +84,6 @@ public class MagicKickerChoice extends MagicChoice {
|
|||
if (!new MagicPayManaCostResultBuilder(game,player,builderCost).hasResults()) {
|
||||
return index-1;
|
||||
}
|
||||
if (multi==false) {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -27,7 +27,7 @@ public class MagicKickerCost extends MagicAdditionalCost implements MagicEventAc
|
|||
new MagicPayManaCostChoice(manaCost)
|
||||
),
|
||||
this,
|
||||
"PN may$$ pay " + manaCost.getText() + "$."
|
||||
"PN may$ pay " + manaCost.getText() + "$."
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,37 @@
|
|||
package magic.model.event;
|
||||
|
||||
import magic.model.MagicManaCost;
|
||||
import magic.model.MagicSource;
|
||||
import magic.model.MagicGame;
|
||||
import magic.model.choice.MagicKickerChoice;
|
||||
import magic.model.action.MagicSetKickerAction;
|
||||
|
||||
public class MagicMultikickerCost extends MagicAdditionalCost implements MagicEventAction {
|
||||
|
||||
final MagicManaCost manaCost;
|
||||
|
||||
public MagicMultikickerCost(final MagicManaCost aManaCost) {
|
||||
manaCost = aManaCost;
|
||||
}
|
||||
|
||||
public MagicMultikickerCost(final String cost) {
|
||||
manaCost = MagicManaCost.create(cost);
|
||||
}
|
||||
|
||||
public MagicEvent getEvent(final MagicSource source) {
|
||||
return new MagicEvent(
|
||||
source,
|
||||
new MagicKickerChoice(manaCost),
|
||||
this,
|
||||
"PN may pay " + manaCost.getText() + " any number of times$$."
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
event.payManaCost(game,event.getPlayer());
|
||||
if (event.isKicked()) {
|
||||
game.doAction(new MagicSetKickerAction(event.getCard(), event.getKickerCount()));
|
||||
}
|
||||
}
|
||||
}
|
|
@ -30,24 +30,6 @@ public class MagicPlayCardEvent {
|
|||
}
|
||||
};
|
||||
|
||||
public static MagicSpellCardEvent createKicker(final MagicManaCost kickerCost, final boolean multi, final String desc) {
|
||||
return new MagicSpellCardEvent() {
|
||||
@Override
|
||||
public MagicEvent getEvent(final MagicCardOnStack cardOnStack,final MagicPayedCost payedCost) {
|
||||
return new MagicEvent(
|
||||
cardOnStack,
|
||||
new MagicKickerChoice(kickerCost,multi),
|
||||
this,
|
||||
"$Play SN. If SN was kicked$, " + desc + "."
|
||||
);
|
||||
}
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
game.doAction(new MagicPlayCardFromStackAction(event.getCardOnStack(), event.getKickerCount()));
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
public static MagicSpellCardEvent createX(final String desc) {
|
||||
return new MagicSpellCardEvent() {
|
||||
@Override
|
||||
|
|
|
@ -22,7 +22,7 @@ public class MagicPlayMulticounterEvent extends MagicSpellCardEvent {
|
|||
public MagicEvent getEvent(final MagicCardOnStack cardOnStack,final MagicPayedCost payedCost) {
|
||||
return new MagicEvent(
|
||||
cardOnStack,
|
||||
new MagicKickerChoice(cost,true),
|
||||
new MagicKickerChoice(cost),
|
||||
this,
|
||||
"$Play SN. SN enters the battlefield " +
|
||||
"with a +1/+1 counter on it for each time it was kicked$"
|
||||
|
|
Loading…
Reference in New Issue