[NEO] updated vehicle crewed trigger to trigger on resolution rather than cost paid

This commit is contained in:
Evan Kranzler 2022-02-10 17:43:05 -05:00
parent 9c7813490a
commit 5ba82fa698
2 changed files with 33 additions and 5 deletions

View file

@ -1,7 +1,6 @@
package mage.cards.h; package mage.cards.h;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleActivatedAbility;
@ -23,6 +22,8 @@ import mage.game.permanent.Permanent;
import mage.target.Target; import mage.target.Target;
import mage.target.common.TargetControlledPermanent; import mage.target.common.TargetControlledPermanent;
import java.util.UUID;
/** /**
* @author JRHerlehy * @author JRHerlehy
*/ */
@ -100,7 +101,6 @@ class HeartOfKiranAlternateCrewCost extends CostImpl {
if (paid) { if (paid) {
game.fireEvent(GameEvent.getEvent(GameEvent.EventType.CREWED_VEHICLE, target.getFirstTarget(), source, controllerId)); game.fireEvent(GameEvent.getEvent(GameEvent.EventType.CREWED_VEHICLE, target.getFirstTarget(), source, controllerId));
} }
game.fireEvent(GameEvent.getEvent(GameEvent.EventType.VEHICLE_CREWED, source.getSourceId(), source, controllerId));
} }
return paid; return paid;

View file

@ -6,6 +6,7 @@ import mage.abilities.common.CrewWithToughnessAbility;
import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.Cost; import mage.abilities.costs.Cost;
import mage.abilities.costs.CostImpl; import mage.abilities.costs.CostImpl;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.continuous.AddCardTypeSourceEffect; import mage.abilities.effects.common.continuous.AddCardTypeSourceEffect;
import mage.abilities.hint.HintUtils; import mage.abilities.hint.HintUtils;
import mage.abilities.icon.abilities.CrewAbilityIcon; import mage.abilities.icon.abilities.CrewAbilityIcon;
@ -34,8 +35,8 @@ public class CrewAbility extends SimpleActivatedAbility {
private final int value; private final int value;
public CrewAbility(int value) { public CrewAbility(int value) {
super(Zone.BATTLEFIELD, new AddCardTypeSourceEffect(Duration.EndOfTurn, CardType.ARTIFACT), new CrewCost(value)); super(Zone.BATTLEFIELD, new AddCardTypeSourceEffect(Duration.EndOfTurn, CardType.ARTIFACT, CardType.CREATURE), new CrewCost(value));
this.addEffect(new AddCardTypeSourceEffect(Duration.EndOfTurn, CardType.ARTIFACT, CardType.CREATURE)); this.addEffect(new CrewEventEffect());
this.addIcon(CrewAbilityIcon.instance); this.addIcon(CrewAbilityIcon.instance);
this.value = value; this.value = value;
} }
@ -56,6 +57,34 @@ public class CrewAbility extends SimpleActivatedAbility {
} }
} }
class CrewEventEffect extends OneShotEffect {
CrewEventEffect() {
super(Outcome.Benefit);
}
private CrewEventEffect(final CrewEventEffect effect) {
super(effect);
}
@Override
public CrewEventEffect copy() {
return new CrewEventEffect(this);
}
@Override
public boolean apply(Game game, Ability source) {
if (source.getSourcePermanentIfItStillExists(game) != null) {
game.fireEvent(GameEvent.getEvent(
GameEvent.EventType.VEHICLE_CREWED,
source.getSourceId(),
source, source.getControllerId()
));
}
return true;
}
}
class CrewCost extends CostImpl { class CrewCost extends CostImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another untapped creature you control"); private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another untapped creature you control");
@ -112,7 +141,6 @@ class CrewCost extends CostImpl {
for (UUID targetId : target.getTargets()) { for (UUID targetId : target.getTargets()) {
game.fireEvent(GameEvent.getEvent(GameEvent.EventType.CREWED_VEHICLE, targetId, source, controllerId)); game.fireEvent(GameEvent.getEvent(GameEvent.EventType.CREWED_VEHICLE, targetId, source, controllerId));
} }
game.fireEvent(GameEvent.getEvent(GameEvent.EventType.VEHICLE_CREWED, source.getSourceId(), source, controllerId));
} }
} else { } else {
return false; return false;