[DFT] Implement Cryptcaller Chariot

This commit is contained in:
theelk801 2025-02-03 11:12:58 -05:00
parent 356d677dac
commit cf6ba1895a
5 changed files with 148 additions and 33 deletions

View file

@ -0,0 +1,40 @@
package mage.abilities.dynamicvalue.common;
import mage.abilities.Ability;
import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.effects.Effect;
import mage.game.Game;
/**
* @author TheElk801
*/
public enum SavedDiscardValue implements DynamicValue {
MANY("many"),
MUCH("much");
private final String message;
SavedDiscardValue(String message) {
this.message = "that " + message;
}
@Override
public int calculate(Game game, Ability sourceAbility, Effect effect) {
return (Integer) effect.getValue("discarded");
}
@Override
public SavedDiscardValue copy() {
return this;
}
@Override
public String toString() {
return message;
}
@Override
public String getMessage() {
return "";
}
}

View file

@ -0,0 +1,49 @@
package mage.abilities.effects.common;
import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.effects.Effect;
import mage.constants.Zone;
import mage.game.Game;
import mage.game.events.GameEvent;
/**
* @author TheElk801
*/
public class DiscardOneOrMoreCardsTriggeredAbility extends TriggeredAbilityImpl {
public DiscardOneOrMoreCardsTriggeredAbility(Effect effect) {
this(effect, false);
}
public DiscardOneOrMoreCardsTriggeredAbility(Effect effect, boolean optional) {
this(Zone.BATTLEFIELD, effect, optional);
}
public DiscardOneOrMoreCardsTriggeredAbility(Zone zone, Effect effect, boolean optional) {
super(zone, effect, optional);
setTriggerPhrase("Whenever you discard one or more cards, ");
}
private DiscardOneOrMoreCardsTriggeredAbility(final DiscardOneOrMoreCardsTriggeredAbility ability) {
super(ability);
}
@Override
public DiscardOneOrMoreCardsTriggeredAbility copy() {
return new DiscardOneOrMoreCardsTriggeredAbility(this);
}
@Override
public boolean checkEventType(GameEvent event, Game game) {
return event.getType() == GameEvent.EventType.DISCARDED_CARDS;
}
@Override
public boolean checkTrigger(GameEvent event, Game game) {
if (!isControlledBy(event.getPlayerId())) {
return false;
}
this.getEffects().setValue("discarded", event.getAmount());
return true;
}
}