forked from External/mage
(WIP) Replacing blocking/blocked by predicates (#8729)
* replaced blocking/blocked by predicates * added test for knight of dusk (currently fails) * added source parameter to filters and everything else that needs it * some changes to various predicates * test fix * small changes to filter code * merge fix * fixed a test failure * small change to Karn, Scion of Urza * removed sourceId from filter methods and other similar places * added new getobject method to fix some test failures * a few more fixes * fixed merge conflicts * merge fix
This commit is contained in:
parent
53877424a0
commit
80e11b2052
1719 changed files with 3384 additions and 3325 deletions
|
|
@ -105,7 +105,7 @@ class VeilsOfFearEffect extends OneShotEffect {
|
|||
continue;
|
||||
}
|
||||
TargetDiscard target = new TargetDiscard(0, 1, StaticFilters.FILTER_CARD, playerId);
|
||||
player.choose(Outcome.PreventDamage, target, source.getSourceId(), game);
|
||||
player.choose(Outcome.PreventDamage, target, source, game);
|
||||
map.put(playerId, game.getCard(target.getFirstTarget()));
|
||||
}
|
||||
for (Map.Entry<UUID, Card> entry : map.entrySet()) {
|
||||
|
|
@ -151,7 +151,7 @@ class OublietteEffect extends OneShotEffect {
|
|||
return true;
|
||||
}
|
||||
OublietteTarget target = new OublietteTarget(Math.min(saccable, 3));
|
||||
player.choose(Outcome.Sacrifice, target, source.getSourceId(), game);
|
||||
player.choose(Outcome.Sacrifice, target, source, game);
|
||||
for (UUID targetId : target.getTargets()) {
|
||||
Permanent permanent = game.getPermanent(targetId);
|
||||
if (permanent != null) {
|
||||
|
|
@ -207,8 +207,8 @@ class OublietteTarget extends TargetControlledPermanent {
|
|||
|
||||
|
||||
@Override
|
||||
public Set<UUID> possibleTargets(UUID sourceId, UUID sourceControllerId, Game game) {
|
||||
Set<UUID> possibleTargets = super.possibleTargets(sourceId, sourceControllerId, game);
|
||||
public Set<UUID> possibleTargets(UUID sourceControllerId, Ability source, Game game) {
|
||||
Set<UUID> possibleTargets = super.possibleTargets(sourceControllerId, source, game);
|
||||
possibleTargets.removeIf(uuid -> !this.canTarget(sourceControllerId, uuid, null, game));
|
||||
return possibleTargets;
|
||||
}
|
||||
|
|
@ -216,7 +216,7 @@ class OublietteTarget extends TargetControlledPermanent {
|
|||
static int checkTargetCount(Ability source, Game game) {
|
||||
List<Permanent> permanents = game
|
||||
.getBattlefield()
|
||||
.getActivePermanents(filter, source.getControllerId(), source.getSourceId(), game);
|
||||
.getActivePermanents(filter, source.getControllerId(), source, game);
|
||||
return cardTypeAssigner.getRoleCount(new CardsImpl(permanents), game);
|
||||
}
|
||||
}
|
||||
|
|
@ -246,7 +246,7 @@ class SandfallCellEffect extends OneShotEffect {
|
|||
continue;
|
||||
}
|
||||
TargetPermanent target = new TargetPermanent(0, 1, TombOfAnnihilationDungeon.filter, true);
|
||||
player.choose(Outcome.PreventDamage, target, source.getSourceId(), game);
|
||||
player.choose(Outcome.PreventDamage, target, source, game);
|
||||
map.put(playerId, game.getPermanent(target.getFirstTarget()));
|
||||
}
|
||||
for (Map.Entry<UUID, Permanent> entry : map.entrySet()) {
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ class KothOfTheHammerThirdEffect extends ContinuousEffectImpl {
|
|||
switch (layer) {
|
||||
case AbilityAddingRemovingEffects_6:
|
||||
if (sublayer == SubLayer.NA) {
|
||||
for (Permanent permanent : game.getBattlefield().getActivePermanents(mountains, source.getControllerId(), source.getSourceId(), game)) {
|
||||
for (Permanent permanent : game.getBattlefield().getActivePermanents(mountains, source.getControllerId(), source, game)) {
|
||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(1), new TapSourceCost());
|
||||
ability.addTarget(new TargetAnyTarget());
|
||||
permanent.addAbility(ability, source.getSourceId(), game);
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ class NarsetTranscendentCantCastEffect extends ContinuousRuleModifyingEffectImpl
|
|||
|
||||
@Override
|
||||
public String getInfoMessage(Ability source, GameEvent event, Game game) {
|
||||
MageObject mageObject = game.getObject(source.getSourceId());
|
||||
MageObject mageObject = game.getObject(source);
|
||||
if (mageObject != null) {
|
||||
return "You can't cast can't cast noncreature spells (it is prevented by emblem of " + mageObject.getLogName() + ')';
|
||||
}
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ class SerraTheBenevolentEmblemEffect extends ReplacementEffectImpl {
|
|||
&& (controller.getLife() - event.getAmount()) < 1
|
||||
&& game.getBattlefield().count(
|
||||
StaticFilters.FILTER_CONTROLLED_CREATURE,
|
||||
source.getSourceId(), event.getPlayerId(), game) > 0
|
||||
event.getPlayerId(), source, game) > 0
|
||||
) {
|
||||
event.setAmount(controller.getLife() - 1);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -95,6 +95,6 @@ class HedronFieldsOfAgadeemRestrictionEffect extends RestrictionEffect {
|
|||
if (!cPlane.getPlaneType().equals(Planes.PLANE_HEDRON_FIELDS_OF_AGADEEM)) {
|
||||
return false;
|
||||
}
|
||||
return filter.match(permanent, source.getSourceId(), source.getControllerId(), game);
|
||||
return filter.match(permanent, source.getControllerId(), source, game);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -80,7 +80,7 @@ class TazeemCantBlockAllEffect extends RestrictionEffect {
|
|||
if (cPlane == null || !cPlane.getPlaneType().equals(Planes.PLANE_TAZEEM)) {
|
||||
return false;
|
||||
}
|
||||
return filter.match(permanent, source.getSourceId(), source.getControllerId(), game);
|
||||
return filter.match(permanent, source.getControllerId(), source, game);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue