diff --git a/Mage.Sets/src/mage/cards/a/AlexiZephyrMage.java b/Mage.Sets/src/mage/cards/a/AlexiZephyrMage.java index 0dcf0b0d3a3..2f37ecb1e78 100644 --- a/Mage.Sets/src/mage/cards/a/AlexiZephyrMage.java +++ b/Mage.Sets/src/mage/cards/a/AlexiZephyrMage.java @@ -72,14 +72,14 @@ public class AlexiZephyrMage extends CardImpl { this.addAbility(ability); } - @Override - public void adjustTargets(Ability ability, Game game) { - if (ability.getTargetAdjustment() == TargetAdjustment.X_TARGETS) { - FilterPermanent filter2 = ((TargetPermanent) ability.getTargets().get(0)).getFilter(); - ability.getTargets().clear(); - ability.addTarget(new TargetPermanent(ability.getManaCostsToPay().getX(), filter2)); - } - } +// @Override +// public void adjustTargets(Ability ability, Game game) { +// if (ability.getTargetAdjustment() == TargetAdjustment.X_TARGETS) { +// FilterPermanent filter2 = ((TargetPermanent) ability.getTargets().get(0)).getFilter(); +// ability.getTargets().clear(); +// ability.addTarget(new TargetPermanent(ability.getManaCostsToPay().getX(), filter2)); +// } +// } public AlexiZephyrMage(final AlexiZephyrMage card) { super(card); diff --git a/Mage.Sets/src/mage/cards/c/CandelabraOfTawnos.java b/Mage.Sets/src/mage/cards/c/CandelabraOfTawnos.java index eb1ca1f4d95..d9ac8435c61 100644 --- a/Mage.Sets/src/mage/cards/c/CandelabraOfTawnos.java +++ b/Mage.Sets/src/mage/cards/c/CandelabraOfTawnos.java @@ -65,14 +65,14 @@ public class CandelabraOfTawnos extends CardImpl { this.addAbility(ability); } - @Override - public void adjustTargets(Ability ability, Game game) { - if (ability.getTargetAdjustment() == TargetAdjustment.X_TARGETS) { - FilterPermanent filter2 = ((TargetPermanent) ability.getTargets().get(0)).getFilter(); - ability.getTargets().clear(); - ability.addTarget(new TargetPermanent(ability.getManaCostsToPay().getX(), filter2)); - } - } +// @Override +// public void adjustTargets(Ability ability, Game game) { +// if (ability.getTargetAdjustment() == TargetAdjustment.X_TARGETS) { +// FilterPermanent filter2 = ((TargetPermanent) ability.getTargets().get(0)).getFilter(); +// ability.getTargets().clear(); +// ability.addTarget(new TargetPermanent(ability.getManaCostsToPay().getX(), filter2)); +// } +// } public CandelabraOfTawnos(final CandelabraOfTawnos card) { super(card); diff --git a/Mage.Sets/src/mage/cards/d/DeclarationOfNaught.java b/Mage.Sets/src/mage/cards/d/DeclarationOfNaught.java index b0fb8f6405b..1bf36696c33 100644 --- a/Mage.Sets/src/mage/cards/d/DeclarationOfNaught.java +++ b/Mage.Sets/src/mage/cards/d/DeclarationOfNaught.java @@ -37,6 +37,7 @@ import mage.abilities.effects.common.NameACardEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.TargetAdjustment; import mage.constants.Zone; import mage.filter.FilterSpell; import mage.filter.predicate.mageobject.NamePredicate; @@ -49,11 +50,10 @@ import mage.target.TargetSpell; */ public class DeclarationOfNaught extends CardImpl { - private final UUID originalId; static final private FilterSpell filter = new FilterSpell("spell with the chosen name"); public DeclarationOfNaught(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{U}{U}"); + super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{U}{U}"); // As Declaration of Naught enters the battlefield, name a card. this.addAbility(new AsEntersBattlefieldAbility(new NameACardEffect(NameACardEffect.TypeOfName.ALL))); @@ -61,15 +61,15 @@ public class DeclarationOfNaught extends CardImpl { //TODO: Make ability properly copiable // {U}: Counter target spell with the chosen name. SimpleActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CounterTargetEffect(), new ManaCostsImpl("{U}")); + ability.setTargetAdjustment(TargetAdjustment.CHOSEN_NAME); ability.addTarget(new TargetSpell(filter)); - originalId = ability.getOriginalId(); this.addAbility(ability); } @Override public void adjustTargets(Ability ability, Game game) { - if (ability.getOriginalId().equals(originalId)) { + if (ability.getTargetAdjustment() == TargetAdjustment.CHOSEN_NAME) { ability.getTargets().clear(); FilterSpell filter2 = new FilterSpell("spell with the chosen name"); filter2.add(new NamePredicate((String) game.getState().getValue(ability.getSourceId().toString() + NameACardEffect.INFO_KEY))); @@ -80,7 +80,6 @@ public class DeclarationOfNaught extends CardImpl { public DeclarationOfNaught(final DeclarationOfNaught card) { super(card); - this.originalId = card.originalId; } @Override diff --git a/Mage.Sets/src/mage/cards/d/DeepfireElemental.java b/Mage.Sets/src/mage/cards/d/DeepfireElemental.java index 4cc12690830..6aa8ea35d89 100644 --- a/Mage.Sets/src/mage/cards/d/DeepfireElemental.java +++ b/Mage.Sets/src/mage/cards/d/DeepfireElemental.java @@ -74,16 +74,16 @@ public class DeepfireElemental extends CardImpl { this.addAbility(ability); } - @Override - public void adjustTargets(Ability ability, Game game) { - if (ability.getTargetAdjustment() == TargetAdjustment.X_CMC_EQUAL_PERM) { - int xValue = ability.getManaCostsToPay().getX(); - FilterPermanent filter2 = ((TargetPermanent) ability.getTargets().get(0)).getFilter().copy(); - filter2.add(new ConvertedManaCostPredicate(ComparisonType.EQUAL_TO, xValue)); - ability.getTargets().clear(); - ability.getTargets().add(new TargetPermanent(filter2)); - } - } +// @Override +// public void adjustTargets(Ability ability, Game game) { +// if (ability.getTargetAdjustment() == TargetAdjustment.X_CMC_EQUAL_PERM) { +// int xValue = ability.getManaCostsToPay().getX(); +// FilterPermanent filter2 = ((TargetPermanent) ability.getTargets().get(0)).getFilter().copy(); +// filter2.add(new ConvertedManaCostPredicate(ComparisonType.EQUAL_TO, xValue)); +// ability.getTargets().clear(); +// ability.getTargets().add(new TargetPermanent(filter2)); +// } +// } public DeepfireElemental(final DeepfireElemental card) { super(card); diff --git a/Mage.Sets/src/mage/cards/f/FloodwaterDam.java b/Mage.Sets/src/mage/cards/f/FloodwaterDam.java index d2c247a06c6..74a50b7cff5 100644 --- a/Mage.Sets/src/mage/cards/f/FloodwaterDam.java +++ b/Mage.Sets/src/mage/cards/f/FloodwaterDam.java @@ -63,14 +63,14 @@ public class FloodwaterDam extends CardImpl { this.addAbility(ability); } - @Override - public void adjustTargets(Ability ability, Game game) { - if (ability.getTargetAdjustment() == TargetAdjustment.X_TARGETS) { - FilterPermanent filter2 = ((TargetPermanent) ability.getTargets().get(0)).getFilter(); - ability.getTargets().clear(); - ability.addTarget(new TargetPermanent(ability.getManaCostsToPay().getX(), filter2)); - } - } +// @Override +// public void adjustTargets(Ability ability, Game game) { +// if (ability.getTargetAdjustment() == TargetAdjustment.X_TARGETS) { +// FilterPermanent filter2 = ((TargetPermanent) ability.getTargets().get(0)).getFilter(); +// ability.getTargets().clear(); +// ability.addTarget(new TargetPermanent(ability.getManaCostsToPay().getX(), filter2)); +// } +// } public FloodwaterDam(final FloodwaterDam card) { super(card); diff --git a/Mage.Sets/src/mage/cards/g/GorillaShaman.java b/Mage.Sets/src/mage/cards/g/GorillaShaman.java index 60d3ed4911c..7036fd8c209 100644 --- a/Mage.Sets/src/mage/cards/g/GorillaShaman.java +++ b/Mage.Sets/src/mage/cards/g/GorillaShaman.java @@ -75,19 +75,19 @@ public class GorillaShaman extends CardImpl { this.addAbility(ability); } - @Override - public void adjustTargets(Ability ability, Game game) { - if (ability.getTargetAdjustment() == TargetAdjustment.X_CMC_EQUAL_PERM) { - int xValue = ability.getManaCostsToPay().getX(); - TargetPermanent oldTarget = (TargetPermanent) ability.getTargets().get(0); - int minTargets = oldTarget.getMinNumberOfTargets(); - int maxTargets = oldTarget.getMaxNumberOfTargets(); - FilterPermanent filter2 = oldTarget.getFilter().copy(); - filter2.add(new ConvertedManaCostPredicate(ComparisonType.EQUAL_TO, xValue)); - ability.getTargets().clear(); - ability.getTargets().add(new TargetPermanent(minTargets, maxTargets, filter2, false)); - } - } +// @Override +// public void adjustTargets(Ability ability, Game game) { +// if (ability.getTargetAdjustment() == TargetAdjustment.X_CMC_EQUAL_PERM) { +// int xValue = ability.getManaCostsToPay().getX(); +// TargetPermanent oldTarget = (TargetPermanent) ability.getTargets().get(0); +// int minTargets = oldTarget.getMinNumberOfTargets(); +// int maxTargets = oldTarget.getMaxNumberOfTargets(); +// FilterPermanent filter2 = oldTarget.getFilter().copy(); +// filter2.add(new ConvertedManaCostPredicate(ComparisonType.EQUAL_TO, xValue)); +// ability.getTargets().clear(); +// ability.getTargets().add(new TargetPermanent(minTargets, maxTargets, filter2, false)); +// } +// } public GorillaShaman(final GorillaShaman card) { super(card); diff --git a/Mage.Sets/src/mage/cards/h/HearthKami.java b/Mage.Sets/src/mage/cards/h/HearthKami.java index 5e15b83de56..95932d3830d 100644 --- a/Mage.Sets/src/mage/cards/h/HearthKami.java +++ b/Mage.Sets/src/mage/cards/h/HearthKami.java @@ -74,16 +74,16 @@ public class HearthKami extends CardImpl { this.addAbility(ability); } - @Override - public void adjustTargets(Ability ability, Game game) { - if (ability.getTargetAdjustment() == TargetAdjustment.X_CMC_EQUAL_PERM) { - int xValue = ability.getManaCostsToPay().getX(); - FilterPermanent filter2 = ((TargetPermanent) ability.getTargets().get(0)).getFilter().copy(); - filter2.add(new ConvertedManaCostPredicate(ComparisonType.EQUAL_TO, xValue)); - ability.getTargets().clear(); - ability.getTargets().add(new TargetPermanent(filter2)); - } - } +// @Override +// public void adjustTargets(Ability ability, Game game) { +// if (ability.getTargetAdjustment() == TargetAdjustment.X_CMC_EQUAL_PERM) { +// int xValue = ability.getManaCostsToPay().getX(); +// FilterPermanent filter2 = ((TargetPermanent) ability.getTargets().get(0)).getFilter().copy(); +// filter2.add(new ConvertedManaCostPredicate(ComparisonType.EQUAL_TO, xValue)); +// ability.getTargets().clear(); +// ability.getTargets().add(new TargetPermanent(filter2)); +// } +// } public HearthKami(final HearthKami card) { super(card); diff --git a/Mage.Sets/src/mage/cards/l/LinessaZephyrMage.java b/Mage.Sets/src/mage/cards/l/LinessaZephyrMage.java index c0df84cc217..cb30e909da4 100644 --- a/Mage.Sets/src/mage/cards/l/LinessaZephyrMage.java +++ b/Mage.Sets/src/mage/cards/l/LinessaZephyrMage.java @@ -97,16 +97,16 @@ public class LinessaZephyrMage extends CardImpl { super(card); } - @Override - public void adjustTargets(Ability ability, Game game) { - if (ability.getTargetAdjustment() == TargetAdjustment.X_CMC_EQUAL_PERM) { - int xValue = ability.getManaCostsToPay().getX(); - FilterPermanent filter2 = ((TargetPermanent) ability.getTargets().get(0)).getFilter().copy(); - filter2.add(new ConvertedManaCostPredicate(ComparisonType.EQUAL_TO, xValue)); - ability.getTargets().clear(); - ability.getTargets().add(new TargetPermanent(filter2)); - } - } +// @Override +// public void adjustTargets(Ability ability, Game game) { +// if (ability.getTargetAdjustment() == TargetAdjustment.X_CMC_EQUAL_PERM) { +// int xValue = ability.getManaCostsToPay().getX(); +// FilterPermanent filter2 = ((TargetPermanent) ability.getTargets().get(0)).getFilter().copy(); +// filter2.add(new ConvertedManaCostPredicate(ComparisonType.EQUAL_TO, xValue)); +// ability.getTargets().clear(); +// ability.getTargets().add(new TargetPermanent(filter2)); +// } +// } @Override public LinessaZephyrMage copy() { diff --git a/Mage.Sets/src/mage/cards/m/MagusOfTheCandelabra.java b/Mage.Sets/src/mage/cards/m/MagusOfTheCandelabra.java index cf570c5efa0..2778845b8b6 100644 --- a/Mage.Sets/src/mage/cards/m/MagusOfTheCandelabra.java +++ b/Mage.Sets/src/mage/cards/m/MagusOfTheCandelabra.java @@ -71,14 +71,14 @@ public class MagusOfTheCandelabra extends CardImpl { this.addAbility(ability); } - @Override - public void adjustTargets(Ability ability, Game game) { - if (ability.getTargetAdjustment() == TargetAdjustment.X_TARGETS) { - FilterPermanent filter2 = ((TargetPermanent) ability.getTargets().get(0)).getFilter(); - ability.getTargets().clear(); - ability.addTarget(new TargetPermanent(ability.getManaCostsToPay().getX(), filter2)); - } - } +// @Override +// public void adjustTargets(Ability ability, Game game) { +// if (ability.getTargetAdjustment() == TargetAdjustment.X_TARGETS) { +// FilterPermanent filter2 = ((TargetPermanent) ability.getTargets().get(0)).getFilter(); +// ability.getTargets().clear(); +// ability.addTarget(new TargetPermanent(ability.getManaCostsToPay().getX(), filter2)); +// } +// } public MagusOfTheCandelabra(final MagusOfTheCandelabra card) { super(card); diff --git a/Mage.Sets/src/mage/cards/m/MinamoSightbender.java b/Mage.Sets/src/mage/cards/m/MinamoSightbender.java index 2fcb0b0b4b1..d88ec47ed0a 100644 --- a/Mage.Sets/src/mage/cards/m/MinamoSightbender.java +++ b/Mage.Sets/src/mage/cards/m/MinamoSightbender.java @@ -79,19 +79,19 @@ public class MinamoSightbender extends CardImpl { } - @Override - public void adjustTargets(Ability ability, Game game) { - if (ability.getTargetAdjustment() == TargetAdjustment.X_POWER_LEQ) { - int xValue = ability.getManaCostsToPay().getX(); - TargetPermanent oldTarget = (TargetPermanent) ability.getTargets().get(0); - int minTargets = oldTarget.getMinNumberOfTargets(); - int maxTargets = oldTarget.getMaxNumberOfTargets(); - FilterPermanent filter2 = oldTarget.getFilter().copy(); - filter2.add(new PowerPredicate(ComparisonType.FEWER_THAN, xValue + 1)); - ability.getTargets().clear(); - ability.getTargets().add(new TargetPermanent(minTargets, maxTargets, filter2, false)); - } - } +// @Override +// public void adjustTargets(Ability ability, Game game) { +// if (ability.getTargetAdjustment() == TargetAdjustment.X_POWER_LEQ) { +// int xValue = ability.getManaCostsToPay().getX(); +// TargetPermanent oldTarget = (TargetPermanent) ability.getTargets().get(0); +// int minTargets = oldTarget.getMinNumberOfTargets(); +// int maxTargets = oldTarget.getMaxNumberOfTargets(); +// FilterPermanent filter2 = oldTarget.getFilter().copy(); +// filter2.add(new PowerPredicate(ComparisonType.FEWER_THAN, xValue + 1)); +// ability.getTargets().clear(); +// ability.getTargets().add(new TargetPermanent(minTargets, maxTargets, filter2, false)); +// } +// } public MinamoSightbender(final MinamoSightbender card) { super(card); diff --git a/Mage.Sets/src/mage/cards/m/MishrasHelix.java b/Mage.Sets/src/mage/cards/m/MishrasHelix.java index c8c131d7b79..7a0d67c6daa 100644 --- a/Mage.Sets/src/mage/cards/m/MishrasHelix.java +++ b/Mage.Sets/src/mage/cards/m/MishrasHelix.java @@ -63,14 +63,14 @@ public class MishrasHelix extends CardImpl { this.addAbility(ability); } - @Override - public void adjustTargets(Ability ability, Game game) { - if (ability.getTargetAdjustment() == TargetAdjustment.X_TARGETS) { - FilterPermanent filter2 = ((TargetPermanent) ability.getTargets().get(0)).getFilter(); - ability.getTargets().clear(); - ability.addTarget(new TargetPermanent(ability.getManaCostsToPay().getX(), filter2)); - } - } +// @Override +// public void adjustTargets(Ability ability, Game game) { +// if (ability.getTargetAdjustment() == TargetAdjustment.X_TARGETS) { +// FilterPermanent filter2 = ((TargetPermanent) ability.getTargets().get(0)).getFilter(); +// ability.getTargets().clear(); +// ability.addTarget(new TargetPermanent(ability.getManaCostsToPay().getX(), filter2)); +// } +// } public MishrasHelix(final MishrasHelix card) { super(card); diff --git a/Mage.Sets/src/mage/cards/p/Plaguebearer.java b/Mage.Sets/src/mage/cards/p/Plaguebearer.java index d3aeb685a45..eb6b39b5219 100644 --- a/Mage.Sets/src/mage/cards/p/Plaguebearer.java +++ b/Mage.Sets/src/mage/cards/p/Plaguebearer.java @@ -76,16 +76,16 @@ public class Plaguebearer extends CardImpl { this.addAbility(ability); } - @Override - public void adjustTargets(Ability ability, Game game) { - if (ability.getTargetAdjustment() == TargetAdjustment.X_CMC_EQUAL_PERM) { - int xValue = ability.getManaCostsToPay().getX(); - FilterPermanent filter2 = ((TargetPermanent) ability.getTargets().get(0)).getFilter().copy(); - filter2.add(new ConvertedManaCostPredicate(ComparisonType.EQUAL_TO, xValue)); - ability.getTargets().clear(); - ability.getTargets().add(new TargetPermanent(filter2)); - } - } +// @Override +// public void adjustTargets(Ability ability, Game game) { +// if (ability.getTargetAdjustment() == TargetAdjustment.X_CMC_EQUAL_PERM) { +// int xValue = ability.getManaCostsToPay().getX(); +// FilterPermanent filter2 = ((TargetPermanent) ability.getTargets().get(0)).getFilter().copy(); +// filter2.add(new ConvertedManaCostPredicate(ComparisonType.EQUAL_TO, xValue)); +// ability.getTargets().clear(); +// ability.getTargets().add(new TargetPermanent(filter2)); +// } +// } public Plaguebearer(final Plaguebearer card) { super(card); diff --git a/Mage.Sets/src/mage/cards/s/SynodArtificer.java b/Mage.Sets/src/mage/cards/s/SynodArtificer.java index 4e4f875ec5b..25d696f312a 100644 --- a/Mage.Sets/src/mage/cards/s/SynodArtificer.java +++ b/Mage.Sets/src/mage/cards/s/SynodArtificer.java @@ -88,14 +88,14 @@ public class SynodArtificer extends CardImpl { this.addAbility(untapAbility); } - @Override - public void adjustTargets(Ability ability, Game game) { - if (ability.getTargetAdjustment() == TargetAdjustment.X_TARGETS) { - FilterPermanent filter2 = ((TargetPermanent) ability.getTargets().get(0)).getFilter(); - ability.getTargets().clear(); - ability.addTarget(new TargetPermanent(ability.getManaCostsToPay().getX(), filter2)); - } - } +// @Override +// public void adjustTargets(Ability ability, Game game) { +// if (ability.getTargetAdjustment() == TargetAdjustment.X_TARGETS) { +// FilterPermanent filter2 = ((TargetPermanent) ability.getTargets().get(0)).getFilter(); +// ability.getTargets().clear(); +// ability.addTarget(new TargetPermanent(ability.getManaCostsToPay().getX(), filter2)); +// } +// } public SynodArtificer(final SynodArtificer card) { super(card); diff --git a/Mage/src/main/java/mage/cards/CardImpl.java b/Mage/src/main/java/mage/cards/CardImpl.java index 2215ea496a2..ea17d1af124 100644 --- a/Mage/src/main/java/mage/cards/CardImpl.java +++ b/Mage/src/main/java/mage/cards/CardImpl.java @@ -42,12 +42,16 @@ import mage.cards.repository.PluginClassloaderRegistery; import mage.constants.*; import mage.counters.Counter; import mage.counters.Counters; +import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.ConvertedManaCostPredicate; +import mage.filter.predicate.mageobject.PowerPredicate; import mage.game.*; import mage.game.events.GameEvent; import mage.game.events.ZoneChangeEvent; import mage.game.permanent.Permanent; import mage.game.stack.Spell; import mage.game.stack.StackObject; +import mage.target.TargetPermanent; import mage.util.GameLog; import mage.util.SubTypeList; import mage.watchers.Watcher; @@ -317,6 +321,46 @@ public abstract class CardImpl extends MageObjectImpl implements Card { return spellAbility; } +// @Override +// public void adjustCosts(Ability ability, Game game) { +// } + @Override + public void adjustTargets(Ability ability, Game game) { + int xValue; + TargetPermanent oldTargetPermanent; + int minTargets; + int maxTargets; + switch (ability.getTargetAdjustment()) { + case NONE: + break; + case X_CMC_EQUAL_PERM: + xValue = ability.getManaCostsToPay().getX(); + oldTargetPermanent = (TargetPermanent) ability.getTargets().get(0); + minTargets = oldTargetPermanent.getMinNumberOfTargets(); + maxTargets = oldTargetPermanent.getMaxNumberOfTargets(); + FilterPermanent filter2 = oldTargetPermanent.getFilter().copy(); + filter2.add(new ConvertedManaCostPredicate(ComparisonType.EQUAL_TO, xValue)); + ability.getTargets().clear(); + ability.getTargets().add(new TargetPermanent(minTargets, maxTargets, filter2, false)); + break; + case X_POWER_LEQ: + xValue = ability.getManaCostsToPay().getX(); + oldTargetPermanent = (TargetPermanent) ability.getTargets().get(0); + minTargets = oldTargetPermanent.getMinNumberOfTargets(); + maxTargets = oldTargetPermanent.getMaxNumberOfTargets(); + filter2 = oldTargetPermanent.getFilter().copy(); + filter2.add(new PowerPredicate(ComparisonType.FEWER_THAN, xValue + 1)); + ability.getTargets().clear(); + ability.getTargets().add(new TargetPermanent(minTargets, maxTargets, filter2, false)); + break; + case X_TARGETS: + xValue = ability.getManaCostsToPay().getX(); + filter2 = ((TargetPermanent) ability.getTargets().get(0)).getFilter(); + ability.getTargets().clear(); + ability.addTarget(new TargetPermanent(xValue, filter2)); + } + } + @Override public void setOwnerId(UUID ownerId) { this.ownerId = ownerId; diff --git a/Mage/src/main/java/mage/constants/TargetAdjustment.java b/Mage/src/main/java/mage/constants/TargetAdjustment.java index c48571ef325..0b60e4182e7 100644 --- a/Mage/src/main/java/mage/constants/TargetAdjustment.java +++ b/Mage/src/main/java/mage/constants/TargetAdjustment.java @@ -6,5 +6,5 @@ package mage.constants; */ public enum TargetAdjustment { - NONE, X_TARGETS, X_CMC_EQUAL_PERM, GETH, DEFENDING_PLAYER, X_POWER_LEQ, + NONE, X_TARGETS, X_CMC_EQUAL_PERM, GETH, DEFENDING_PLAYER, X_POWER_LEQ, CHOSEN_NAME }