[WOE] Implement Virtue of Knowledge (#10855)

This commit is contained in:
Susucre 2023-08-18 15:24:51 +02:00 committed by GitHub
parent 4f0e843d55
commit 6a66b0d709
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 119 additions and 110 deletions

View file

@ -0,0 +1,63 @@
package mage.abilities.effects.common.replacement;
import mage.abilities.Ability;
import mage.abilities.effects.ReplacementEffectImpl;
import mage.constants.Duration;
import mage.constants.Outcome;
import mage.game.Game;
import mage.game.events.EntersTheBattlefieldEvent;
import mage.game.events.GameEvent;
import mage.game.events.NumberOfTriggersEvent;
/**
* @author TheElk801
*/
public class AdditionalTriggerControlledETBReplacementEffect extends ReplacementEffectImpl {
public AdditionalTriggerControlledETBReplacementEffect() {
super(Duration.WhileOnBattlefield, Outcome.Benefit);
staticText = "If a permanent entering the battlefield causes a triggered ability " +
"of a permanent you control to trigger, that ability triggers an additional time";
}
private AdditionalTriggerControlledETBReplacementEffect(final AdditionalTriggerControlledETBReplacementEffect effect) {
super(effect);
}
@Override
public AdditionalTriggerControlledETBReplacementEffect copy() {
return new AdditionalTriggerControlledETBReplacementEffect(this);
}
@Override
public boolean checksEventType(GameEvent event, Game game) {
return event.getType() == GameEvent.EventType.NUMBER_OF_TRIGGERS;
}
@Override
public boolean applies(GameEvent event, Ability source, Game game) {
if (!(event instanceof NumberOfTriggersEvent)) {
return false;
}
NumberOfTriggersEvent numberOfTriggersEvent = (NumberOfTriggersEvent) event;
// Only triggers for the source controller
if (!source.isControlledBy(event.getPlayerId())) {
return false;
}
GameEvent sourceEvent = numberOfTriggersEvent.getSourceEvent();
// Only EtB triggers
if (sourceEvent == null
|| sourceEvent.getType() != GameEvent.EventType.ENTERS_THE_BATTLEFIELD
|| !(sourceEvent instanceof EntersTheBattlefieldEvent)) {
return false;
}
// Only for triggers of permanents
return game.getPermanent(numberOfTriggersEvent.getSourceId()) != null;
}
@Override
public boolean replaceEvent(GameEvent event, Ability source, Game game) {
event.setAmount(event.getAmount() + 1);
return false;
}
}