mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 12:18:00 +00:00
AbilityFactory.getAbility is now static - no need to create instance of AbilityFactory to parse an ability
This commit is contained in:
@@ -17,7 +17,6 @@
|
||||
*/
|
||||
package forge.card.ability;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
|
||||
@@ -39,17 +38,7 @@ import forge.game.zone.ZoneType;
|
||||
* @author Forge
|
||||
* @version $Id$
|
||||
*/
|
||||
public class AbilityFactory {
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Constructor for AbilityFactory.
|
||||
* </p>
|
||||
*/
|
||||
public AbilityFactory() {
|
||||
}
|
||||
|
||||
// *******************************************************
|
||||
public final class AbilityFactory {
|
||||
|
||||
/**
|
||||
* <p>
|
||||
@@ -62,7 +51,7 @@ public class AbilityFactory {
|
||||
* a {@link forge.Card} object.
|
||||
* @return a {@link forge.card.spellability.SpellAbility} object.
|
||||
*/
|
||||
public final SpellAbility getAbility(final String abString, final Card hostCard) {
|
||||
public static final SpellAbility getAbility(final String abString, final Card hostCard) {
|
||||
|
||||
SpellAbility spellAbility = null;
|
||||
|
||||
@@ -70,22 +59,17 @@ public class AbilityFactory {
|
||||
boolean isSp = false;
|
||||
boolean isDb = false;
|
||||
|
||||
ApiType api = null;
|
||||
|
||||
Card hostC = hostCard;
|
||||
Map<String, String> mapParams = new HashMap<String, String>();
|
||||
|
||||
|
||||
Map<String, String> mapParams;
|
||||
try {
|
||||
mapParams = AbilityUtils.getMapParams(abString);
|
||||
}
|
||||
catch (RuntimeException ex) {
|
||||
|
||||
throw new RuntimeException(hostCard.getName() + ": " + ex.getMessage());
|
||||
}
|
||||
|
||||
// parse universal parameters
|
||||
|
||||
ApiType api = null;
|
||||
if (mapParams.containsKey("AB")) {
|
||||
isAb = true;
|
||||
api = ApiType.smartValueOf(mapParams.get("AB"));
|
||||
@@ -108,7 +92,7 @@ public class AbilityFactory {
|
||||
|
||||
}
|
||||
|
||||
Target abTgt = mapParams.containsKey("ValidTgts") ? readTarget(hostC, mapParams) : null;
|
||||
Target abTgt = mapParams.containsKey("ValidTgts") ? readTarget(hostCard, mapParams) : null;
|
||||
|
||||
// ***********************************
|
||||
// Match API keywords. These are listed in alphabetical order.
|
||||
@@ -151,11 +135,6 @@ public class AbilityFactory {
|
||||
}
|
||||
|
||||
|
||||
// //////////////////////
|
||||
//
|
||||
// End API matching. The above APIs are listed in alphabetical order.
|
||||
//
|
||||
// //////////////////////
|
||||
|
||||
if (spellAbility == null) {
|
||||
final StringBuilder msg = new StringBuilder();
|
||||
@@ -172,7 +151,7 @@ public class AbilityFactory {
|
||||
|
||||
if (mapParams.containsKey("References")) {
|
||||
for (String svar : mapParams.get("References").split(",")) {
|
||||
spellAbility.setSVar(svar, hostC.getSVar(svar));
|
||||
spellAbility.setSVar(svar, hostCard.getSVar(svar));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -214,7 +193,7 @@ public class AbilityFactory {
|
||||
return spellAbility;
|
||||
}
|
||||
|
||||
private Target readTarget(Card hostC, Map<String, String> mapParams) {
|
||||
private static final Target readTarget(Card hostC, Map<String, String> mapParams) {
|
||||
final String min = mapParams.containsKey("TargetMin") ? mapParams.get("TargetMin") : "1";
|
||||
final String max = mapParams.containsKey("TargetMax") ? mapParams.get("TargetMax") : "1";
|
||||
|
||||
@@ -279,7 +258,7 @@ public class AbilityFactory {
|
||||
* a {@link forge.card.spellability.SpellAbility} object.
|
||||
* @param mapParams
|
||||
*/
|
||||
private void makeRestrictions(final SpellAbility sa, Map<String, String> mapParams) {
|
||||
private static final void makeRestrictions(final SpellAbility sa, Map<String, String> mapParams) {
|
||||
// SpellAbilityRestrictions should be added in here
|
||||
final SpellAbilityRestriction restrict = sa.getRestrictions();
|
||||
if (mapParams.containsKey("Flashback")) {
|
||||
@@ -297,7 +276,7 @@ public class AbilityFactory {
|
||||
* a {@link forge.card.spellability.SpellAbility} object.
|
||||
* @param mapParams
|
||||
*/
|
||||
private void makeConditions(final SpellAbility sa, Map<String, String> mapParams) {
|
||||
private static final void makeConditions(final SpellAbility sa, Map<String, String> mapParams) {
|
||||
// SpellAbilityRestrictions should be added in here
|
||||
final SpellAbilityCondition condition = sa.getConditions();
|
||||
if (mapParams.containsKey("Flashback")) {
|
||||
@@ -315,11 +294,10 @@ public class AbilityFactory {
|
||||
*
|
||||
* @return a {@link forge.card.spellability.AbilitySub} object.
|
||||
*/
|
||||
private final AbilitySub getSubAbility(Card hostCard, String sSub) {
|
||||
private static final AbilitySub getSubAbility(Card hostCard, String sSub) {
|
||||
|
||||
if (!sSub.equals("")) {
|
||||
final AbilityFactory afDB = new AbilityFactory();
|
||||
return (AbilitySub) afDB.getAbility(sSub, hostCard);
|
||||
return (AbilitySub) AbilityFactory.getAbility(sSub, hostCard);
|
||||
}
|
||||
System.out.println("SubAbility not found for: " + hostCard);
|
||||
|
||||
|
||||
@@ -12,7 +12,6 @@ import forge.CardLists;
|
||||
import forge.CardUtil;
|
||||
import forge.Command;
|
||||
import forge.Constant;
|
||||
import forge.Constant.Color;
|
||||
import forge.CounterType;
|
||||
import forge.Singletons;
|
||||
import forge.card.cardfactory.CardFactoryUtil;
|
||||
|
||||
@@ -7,12 +7,11 @@ import forge.card.spellability.SpellAbility;
|
||||
import forge.game.player.AIPlayer;
|
||||
|
||||
public class DelayedTriggerAi extends SpellAiLogic {
|
||||
private static AbilityFactory tempCreator = new AbilityFactory();
|
||||
|
||||
@Override
|
||||
public boolean chkAIDrawback(SpellAbility sa, AIPlayer ai) {
|
||||
final String svarName = sa.getParam("Execute");
|
||||
final SpellAbility trigsa = tempCreator.getAbility(sa.getSourceCard().getSVar(svarName), sa.getSourceCard());
|
||||
final SpellAbility trigsa = AbilityFactory.getAbility(sa.getSourceCard().getSVar(svarName), sa.getSourceCard());
|
||||
trigsa.setActivatingPlayer(ai);
|
||||
|
||||
if (trigsa instanceof AbilitySub) {
|
||||
@@ -25,7 +24,7 @@ public class DelayedTriggerAi extends SpellAiLogic {
|
||||
@Override
|
||||
protected boolean doTriggerAINoCost(AIPlayer ai, SpellAbility sa, boolean mandatory) {
|
||||
final String svarName = sa.getParam("Execute");
|
||||
final SpellAbility trigsa = tempCreator.getAbility(sa.getSourceCard().getSVar(svarName), sa.getSourceCard());
|
||||
final SpellAbility trigsa = AbilityFactory.getAbility(sa.getSourceCard().getSVar(svarName), sa.getSourceCard());
|
||||
trigsa.setActivatingPlayer(ai);
|
||||
|
||||
if (!sa.hasParam("OptionalDecider")) {
|
||||
@@ -38,7 +37,7 @@ public class DelayedTriggerAi extends SpellAiLogic {
|
||||
@Override
|
||||
protected boolean canPlayAI(AIPlayer ai, SpellAbility sa) {
|
||||
final String svarName = sa.getParam("Execute");
|
||||
final SpellAbility trigsa = tempCreator.getAbility(sa.getSourceCard().getSVar(svarName), sa.getSourceCard());
|
||||
final SpellAbility trigsa = AbilityFactory.getAbility(sa.getSourceCard().getSVar(svarName), sa.getSourceCard());
|
||||
trigsa.setActivatingPlayer(ai);
|
||||
return trigsa.canPlayAI();
|
||||
}
|
||||
|
||||
@@ -149,9 +149,8 @@ public class AnimateAllEffect extends AnimateEffectBase {
|
||||
final ArrayList<SpellAbility> addedAbilities = new ArrayList<SpellAbility>();
|
||||
if (abilities.size() > 0) {
|
||||
for (final String s : abilities) {
|
||||
final AbilityFactory newAF = new AbilityFactory();
|
||||
final String actualAbility = host.getSVar(s);
|
||||
final SpellAbility grantedAbility = newAF.getAbility(actualAbility, c);
|
||||
final SpellAbility grantedAbility = AbilityFactory.getAbility(actualAbility, c);
|
||||
addedAbilities.add(grantedAbility);
|
||||
c.addSpellAbility(grantedAbility);
|
||||
}
|
||||
|
||||
@@ -163,9 +163,8 @@ public class AnimateEffect extends AnimateEffectBase {
|
||||
final ArrayList<SpellAbility> addedAbilities = new ArrayList<SpellAbility>();
|
||||
if (abilities.size() > 0) {
|
||||
for (final String s : abilities) {
|
||||
final AbilityFactory newAF = new AbilityFactory();
|
||||
final String actualAbility = host.getSVar(s);
|
||||
final SpellAbility grantedAbility = newAF.getAbility(actualAbility, c);
|
||||
final SpellAbility grantedAbility = AbilityFactory.getAbility(actualAbility, c);
|
||||
addedAbilities.add(grantedAbility);
|
||||
c.addSpellAbility(grantedAbility);
|
||||
}
|
||||
|
||||
@@ -21,8 +21,7 @@ public class CharmEffect extends SpellEffect {
|
||||
List<AbilitySub> choices = new ArrayList<AbilitySub>();
|
||||
for (final String saChoice : saChoices) {
|
||||
final String ab = source.getSVar(saChoice);
|
||||
final AbilityFactory charmAF = new AbilityFactory();
|
||||
choices.add((AbilitySub) charmAF.getAbility(ab, source));
|
||||
choices.add((AbilitySub) AbilityFactory.getAbility(ab, source));
|
||||
}
|
||||
return choices;
|
||||
}
|
||||
|
||||
@@ -49,12 +49,11 @@ public class ChooseGenericEffect extends SpellEffect {
|
||||
continue;
|
||||
}
|
||||
SpellAbility chosenSA = null;
|
||||
AbilityFactory afChoice = new AbilityFactory();
|
||||
if (p.isHuman()) {
|
||||
String choice = GuiChoose.one("Choose one", choices.values());
|
||||
chosenSA = afChoice.getAbility(host.getSVar(choices.inverse().get(choice)), host);
|
||||
chosenSA = AbilityFactory.getAbility(host.getSVar(choices.inverse().get(choice)), host);
|
||||
} else { //Computer AI
|
||||
chosenSA = afChoice.getAbility(host.getSVar(sa.getParam("Choices").split(",")[0]), host);
|
||||
chosenSA = AbilityFactory.getAbility(host.getSVar(sa.getParam("Choices").split(",")[0]), host);
|
||||
}
|
||||
chosenSA.setActivatingPlayer(sa.getSourceCard().getController());
|
||||
((AbilitySub) chosenSA).setParent(sa);
|
||||
|
||||
@@ -25,7 +25,6 @@ public class ClashEffect extends SpellEffect {
|
||||
*/
|
||||
@Override
|
||||
public void resolve(SpellAbility sa) {
|
||||
final AbilityFactory afOutcomes = new AbilityFactory();
|
||||
final boolean victory = sa.getSourceCard().getController().clashWithOpponent(sa.getSourceCard());
|
||||
|
||||
// Run triggers
|
||||
@@ -34,7 +33,7 @@ public class ClashEffect extends SpellEffect {
|
||||
|
||||
if (victory) {
|
||||
if (sa.hasParam("WinSubAbility")) {
|
||||
final SpellAbility win = afOutcomes.getAbility(
|
||||
final SpellAbility win = AbilityFactory.getAbility(
|
||||
sa.getSourceCard().getSVar(sa.getParam("WinSubAbility")), sa.getSourceCard());
|
||||
win.setActivatingPlayer(sa.getSourceCard().getController());
|
||||
((AbilitySub) win).setParent(sa);
|
||||
@@ -44,7 +43,7 @@ public class ClashEffect extends SpellEffect {
|
||||
runParams.put("Won", "True");
|
||||
} else {
|
||||
if (sa.hasParam("OtherwiseSubAbility")) {
|
||||
final SpellAbility otherwise = afOutcomes.getAbility(
|
||||
final SpellAbility otherwise = AbilityFactory.getAbility(
|
||||
sa.getSourceCard().getSVar(sa.getParam("OtherwiseSubAbility")), sa.getSourceCard());
|
||||
otherwise.setActivatingPlayer(sa.getSourceCard().getController());
|
||||
((AbilitySub) otherwise).setParent(sa);
|
||||
|
||||
@@ -120,10 +120,9 @@ public class EffectEffect extends SpellEffect {
|
||||
// Grant abilities
|
||||
if (effectAbilities != null) {
|
||||
for (final String s : effectAbilities) {
|
||||
final AbilityFactory abFactory = new AbilityFactory();
|
||||
final String actualAbility = hostCard.getSVar(s);
|
||||
|
||||
final SpellAbility grantedAbility = abFactory.getAbility(actualAbility, eff);
|
||||
final SpellAbility grantedAbility = AbilityFactory.getAbility(actualAbility, eff);
|
||||
eff.addSpellAbility(grantedAbility);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,7 +37,6 @@ public class FlipCoinEffect extends SpellEffect {
|
||||
caller.add(player);
|
||||
}
|
||||
|
||||
final AbilityFactory afOutcomes = new AbilityFactory();
|
||||
final boolean victory = GuiDialog.flipCoin(caller.get(0), sa.getSourceCard());
|
||||
|
||||
// Run triggers
|
||||
@@ -52,7 +51,7 @@ public class FlipCoinEffect extends SpellEffect {
|
||||
host.addRemembered(host);
|
||||
}
|
||||
if (sa.hasParam("WinSubAbility")) {
|
||||
final SpellAbility win = afOutcomes.getAbility(host.getSVar(sa.getParam("WinSubAbility")), host);
|
||||
final SpellAbility win = AbilityFactory.getAbility(host.getSVar(sa.getParam("WinSubAbility")), host);
|
||||
win.setActivatingPlayer(player);
|
||||
((AbilitySub) win).setParent(sa);
|
||||
|
||||
@@ -64,7 +63,7 @@ public class FlipCoinEffect extends SpellEffect {
|
||||
host.addRemembered(host);
|
||||
}
|
||||
if (sa.hasParam("LoseSubAbility")) {
|
||||
final SpellAbility lose = afOutcomes.getAbility(host.getSVar(sa.getParam("LoseSubAbility")), host);
|
||||
final SpellAbility lose = AbilityFactory.getAbility(host.getSVar(sa.getParam("LoseSubAbility")), host);
|
||||
lose.setActivatingPlayer(player);
|
||||
((AbilitySub) lose).setParent(sa);
|
||||
|
||||
|
||||
@@ -25,11 +25,10 @@ public class RepeatEachEffect extends SpellEffect {
|
||||
*/
|
||||
@Override
|
||||
public void resolve(SpellAbility sa) {
|
||||
final AbilityFactory afRepeat = new AbilityFactory();
|
||||
Card source = sa.getSourceCard();
|
||||
|
||||
// setup subability to repeat
|
||||
final SpellAbility repeat = afRepeat.getAbility(sa.getSourceCard().getSVar(sa.getParam("RepeatSubAbility")), source);
|
||||
final SpellAbility repeat = AbilityFactory.getAbility(sa.getSourceCard().getSVar(sa.getParam("RepeatSubAbility")), source);
|
||||
repeat.setActivatingPlayer(sa.getActivatingPlayer());
|
||||
((AbilitySub) repeat).setParent(sa);
|
||||
|
||||
|
||||
@@ -24,11 +24,10 @@ public class RepeatEffect extends SpellEffect {
|
||||
|
||||
@Override
|
||||
public void resolve(SpellAbility sa) {
|
||||
final AbilityFactory afRepeat = new AbilityFactory();
|
||||
Card source = sa.getSourceCard();
|
||||
|
||||
// setup subability to repeat
|
||||
final SpellAbility repeat = afRepeat.getAbility(sa.getSourceCard().getSVar(sa.getParam("RepeatSubAbility")), source);
|
||||
final SpellAbility repeat = AbilityFactory.getAbility(sa.getSourceCard().getSVar(sa.getParam("RepeatSubAbility")), source);
|
||||
repeat.setActivatingPlayer(sa.getActivatingPlayer());
|
||||
((AbilitySub) repeat).setParent(sa);
|
||||
|
||||
|
||||
@@ -212,11 +212,10 @@ public class TokenEffect extends SpellEffect {
|
||||
|
||||
// Grant abilities
|
||||
if (this.tokenAbilities != null) {
|
||||
final AbilityFactory af = new AbilityFactory();
|
||||
for (final String s : this.tokenAbilities) {
|
||||
final String actualAbility = host.getSVar(s);
|
||||
for (final Card c : tokens) {
|
||||
final SpellAbility grantedAbility = af.getAbility(actualAbility, c);
|
||||
final SpellAbility grantedAbility = AbilityFactory.getAbility(actualAbility, c);
|
||||
c.addSpellAbility(grantedAbility);
|
||||
// added ability to intrinsic list so copies and clones work
|
||||
c.getIntrinsicAbilities().add(actualAbility);
|
||||
@@ -234,7 +233,7 @@ public class TokenEffect extends SpellEffect {
|
||||
|
||||
final Trigger parsedTrigger = TriggerHandler.parseTrigger(actualTrigger, c, true);
|
||||
final String ability = host.getSVar(parsedTrigger.getMapParams().get("Execute"));
|
||||
parsedTrigger.setOverridingAbility(new AbilityFactory().getAbility(ability, c));
|
||||
parsedTrigger.setOverridingAbility(AbilityFactory.getAbility(ability, c));
|
||||
c.addTrigger(parsedTrigger);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -137,8 +137,7 @@ public class TwoPilesEffect extends SpellEffect {
|
||||
|
||||
// take action on the chosen pile
|
||||
if (sa.hasParam("ChosenPile")) {
|
||||
final AbilityFactory afPile = new AbilityFactory();
|
||||
final SpellAbility action = afPile.getAbility(card.getSVar(sa.getParam("ChosenPile")), card);
|
||||
final SpellAbility action = AbilityFactory.getAbility(card.getSVar(sa.getParam("ChosenPile")), card);
|
||||
action.setActivatingPlayer(sa.getActivatingPlayer());
|
||||
((AbilitySub) action).setParent(sa);
|
||||
|
||||
@@ -158,8 +157,7 @@ public class TwoPilesEffect extends SpellEffect {
|
||||
card.addRemembered(c);
|
||||
}
|
||||
}
|
||||
final AbilityFactory afPile = new AbilityFactory();
|
||||
final SpellAbility action = afPile.getAbility(card.getSVar(sa.getParam("UnchosenPile")), card);
|
||||
final SpellAbility action = AbilityFactory.getAbility(card.getSVar(sa.getParam("UnchosenPile")), card);
|
||||
action.setActivatingPlayer(sa.getActivatingPlayer());
|
||||
((AbilitySub) action).setParent(sa);
|
||||
|
||||
|
||||
@@ -646,13 +646,12 @@ public class CardFactoryCreatures {
|
||||
final StringBuilder keywordBuilder = new StringBuilder("HIDDEN CARDNAME can't block ");
|
||||
keywordBuilder.append(this.getSourceCard().toString());
|
||||
|
||||
final AbilityFactory createAb = new AbilityFactory();
|
||||
final StringBuilder abilityBuilder = new StringBuilder("AB$Pump | Cost$ ");
|
||||
abilityBuilder.append(theCost);
|
||||
abilityBuilder.append(" | ValidTgts$ Creature | TgtPrompt$ Select target creature | IsCurse$ True | KW$ ");
|
||||
abilityBuilder.append(keywordBuilder.toString());
|
||||
abilityBuilder.append(" | SpellDescription$ Target creature can't block CARDNAME this turn.");
|
||||
final SpellAbility myAb = createAb.getAbility(abilityBuilder.toString(), card);
|
||||
final SpellAbility myAb = AbilityFactory.getAbility(abilityBuilder.toString(), card);
|
||||
|
||||
myAb.getTarget().setTargetChoices(this.getChosenTarget().getTargetChoices());
|
||||
myAb.resolve();
|
||||
|
||||
@@ -957,8 +957,7 @@ public class CardFactoryUtil {
|
||||
sb.append(" Discard<1/CARDNAME> | ActivationZone$ Hand | PrecostDesc$ Cycling ");
|
||||
sb.append("| SpellDescription$ Draw a card.");
|
||||
|
||||
AbilityFactory af = new AbilityFactory();
|
||||
SpellAbility cycle = af.getAbility(sb.toString(), sourceCard);
|
||||
SpellAbility cycle = AbilityFactory.getAbility(sb.toString(), sourceCard);
|
||||
cycle.setIsCycling(true);
|
||||
|
||||
return cycle;
|
||||
@@ -992,8 +991,7 @@ public class CardFactoryUtil {
|
||||
sb.append(" | SpellDescription$ Search your library for a ").append(desc).append(" card, reveal it,");
|
||||
sb.append(" and put it into your hand. Then shuffle your library.");
|
||||
|
||||
AbilityFactory af = new AbilityFactory();
|
||||
SpellAbility cycle = af.getAbility(sb.toString(), sourceCard);
|
||||
SpellAbility cycle = AbilityFactory.getAbility(sb.toString(), sourceCard);
|
||||
cycle.setIsCycling(true);
|
||||
|
||||
return cycle;
|
||||
@@ -3685,9 +3683,8 @@ public class CardFactoryUtil {
|
||||
final ArrayList<String> ia = card.getIntrinsicAbilities();
|
||||
if (ia.size() > 0) {
|
||||
for (int i = 0; i < ia.size(); i++) {
|
||||
final AbilityFactory af = new AbilityFactory();
|
||||
// System.out.println(cardName);
|
||||
final SpellAbility sa = af.getAbility(ia.get(i), card);
|
||||
final SpellAbility sa = AbilityFactory.getAbility(ia.get(i), card);
|
||||
if (sa.hasParam("SetAsKicked")) {
|
||||
sa.addOptionalAdditionalCosts("Kicker");
|
||||
}
|
||||
@@ -4154,12 +4151,11 @@ public class CardFactoryUtil {
|
||||
card.addTrigger(haunterETB);
|
||||
card.addTrigger(haunterDies);
|
||||
} else {
|
||||
final AbilityFactory af = new AbilityFactory();
|
||||
final String abString = card.getSVar(hauntSVarName).replace("AB$", "SP$")
|
||||
.replace("Cost$ 0", "Cost$ " + card.getManaCost())
|
||||
+ " | SpellDescription$ " + abilityDescription;
|
||||
|
||||
final SpellAbility sa = af.getAbility(abString, card);
|
||||
final SpellAbility sa = AbilityFactory.getAbility(abString, card);
|
||||
card.addSpellAbility(sa);
|
||||
}
|
||||
|
||||
@@ -4381,8 +4377,7 @@ public class CardFactoryUtil {
|
||||
abilityStr.append("| PrecostDesc$ Equip | SpellDescription$ (Attach to target creature you control. Equip only as a sorcery.)");
|
||||
}
|
||||
// instantiate attach ability
|
||||
final AbilityFactory af = new AbilityFactory();
|
||||
final SpellAbility sa = af.getAbility(abilityStr.toString(), card);
|
||||
final SpellAbility sa = AbilityFactory.getAbility(abilityStr.toString(), card);
|
||||
card.addSpellAbility(sa);
|
||||
// add ability to instrinic strings so copies/clones create the ability also
|
||||
card.getIntrinsicAbilities().add(abilityStr.toString());
|
||||
@@ -4393,8 +4388,7 @@ public class CardFactoryUtil {
|
||||
if (kw.startsWith("ETBReplacement")) {
|
||||
String[] splitkw = kw.split(":");
|
||||
ReplacementLayer layer = ReplacementLayer.smartValueOf(splitkw[1]);
|
||||
AbilityFactory af = new AbilityFactory();
|
||||
SpellAbility repAb = af.getAbility(card.getSVar(splitkw[2]), card);
|
||||
SpellAbility repAb = AbilityFactory.getAbility(card.getSVar(splitkw[2]), card);
|
||||
String desc = repAb.getDescription();
|
||||
setupETBReplacementAbility(repAb);
|
||||
|
||||
|
||||
@@ -184,9 +184,7 @@ public class ReplacementHandler {
|
||||
final String effectSVar = mapParams.get("ReplaceWith");
|
||||
final String effectAbString = replacementEffect.getHostCard().getSVar(effectSVar);
|
||||
|
||||
final AbilityFactory abilityFactory = new AbilityFactory();
|
||||
|
||||
effectSA = abilityFactory.getAbility(effectAbString, replacementEffect.getHostCard());
|
||||
effectSA = AbilityFactory.getAbility(effectAbString, replacementEffect.getHostCard());
|
||||
effectSA.setTrigger(true);
|
||||
|
||||
SpellAbility tailend = effectSA;
|
||||
|
||||
@@ -474,12 +474,11 @@ public class SpellPermanent extends Spell {
|
||||
}
|
||||
|
||||
// Maybe better considerations
|
||||
final AbilityFactory af = new AbilityFactory();
|
||||
final String execute = params.get("Execute");
|
||||
if (execute == null) {
|
||||
continue;
|
||||
}
|
||||
final SpellAbility exSA = af.getAbility(card.getSVar(execute), card);
|
||||
final SpellAbility exSA = AbilityFactory.getAbility(card.getSVar(execute), card);
|
||||
|
||||
if (api != null) {
|
||||
if (exSA.getApi() != api) {
|
||||
|
||||
@@ -390,8 +390,7 @@ public class StaticAbilityContinuous {
|
||||
if (addAbilities != null) {
|
||||
for (final String abilty : addAbilities) {
|
||||
if (abilty.startsWith("AB")) { // grant the ability
|
||||
final AbilityFactory af = new AbilityFactory();
|
||||
final SpellAbility sa = af.getAbility(abilty, affectedCard);
|
||||
final SpellAbility sa = AbilityFactory.getAbility(abilty, affectedCard);
|
||||
sa.setType("Temporary");
|
||||
sa.setOriginalHost(hostCard);
|
||||
affectedCard.addSpellAbility(sa);
|
||||
|
||||
@@ -478,8 +478,6 @@ public class TriggerHandler {
|
||||
}
|
||||
}
|
||||
|
||||
final AbilityFactory abilityFactory = new AbilityFactory();
|
||||
|
||||
SpellAbility sa = null;
|
||||
Card host = game.getCardState(regtrig.getHostCard());
|
||||
|
||||
@@ -496,7 +494,7 @@ public class TriggerHandler {
|
||||
}
|
||||
};
|
||||
} else {
|
||||
sa = abilityFactory.getAbility(host.getSVar(triggerParams.get("Execute")), host);
|
||||
sa = AbilityFactory.getAbility(host.getSVar(triggerParams.get("Execute")), host);
|
||||
}
|
||||
}
|
||||
sa.setTrigger(true);
|
||||
|
||||
@@ -119,7 +119,6 @@ public class InputMulligan extends Input {
|
||||
|
||||
// Human Leylines & Chancellors
|
||||
ButtonUtil.reset();
|
||||
final AbilityFactory af = new AbilityFactory();
|
||||
|
||||
final GameAction ga = game.getAction();
|
||||
for (Player p : game.getPlayers()) {
|
||||
@@ -134,7 +133,7 @@ public class InputMulligan extends Input {
|
||||
if (kw.startsWith("MayEffectFromOpeningHand")) {
|
||||
final String effName = kw.split(":")[1];
|
||||
|
||||
final SpellAbility effect = af.getAbility(c.getSVar(effName), c);
|
||||
final SpellAbility effect = AbilityFactory.getAbility(c.getSVar(effName), c);
|
||||
if (GuiDialog.confirm(c, "Use this card's ability?")) {
|
||||
// If we ever let the AI memorize cards in the players
|
||||
// hand, this would be a place to do so.
|
||||
@@ -156,7 +155,7 @@ public class InputMulligan extends Input {
|
||||
if (kw.startsWith("MayEffectFromOpeningHand")) {
|
||||
final String effName = kw.split(":")[1];
|
||||
|
||||
final SpellAbility effect = af.getAbility(c.getSVar(effName), c);
|
||||
final SpellAbility effect = AbilityFactory.getAbility(c.getSVar(effName), c);
|
||||
|
||||
// Is there a better way for the AI to decide this?
|
||||
if (effect.doTrigger(false, (AIPlayer)p)) {
|
||||
|
||||
@@ -1172,8 +1172,7 @@ public final class GameActionUtil {
|
||||
for (String landType : Constant.Color.BASIC_LANDS) {
|
||||
|
||||
if (land.isType(landType)) {
|
||||
final AbilityFactory af = new AbilityFactory();
|
||||
final SpellAbility sa = af.getAbility("AB$ Mana | Cost$ T | Produced$ " + produces.get(landType)
|
||||
final SpellAbility sa = AbilityFactory.getAbility("AB$ Mana | Cost$ T | Produced$ " + produces.get(landType)
|
||||
+ " | SpellDescription$ Add " + produces.get(landType) + " to your mana pool.", land);
|
||||
sa.setType("BasicLandTypeMana");
|
||||
land.addSpellAbility(sa);
|
||||
@@ -1336,8 +1335,7 @@ public final class GameActionUtil {
|
||||
}
|
||||
String newSubSAString = c.getCharacteristics().getIntrinsicAbility().get(0);
|
||||
newSubSAString = newSubSAString.replace("SP", "DB");
|
||||
final AbilityFactory af = new AbilityFactory();
|
||||
final AbilitySub newSubSA = (AbilitySub) af.getAbility(newSubSAString, source);
|
||||
final AbilitySub newSubSA = (AbilitySub) AbilityFactory.getAbility(newSubSAString, source);
|
||||
ArrayList<SpellAbility> addSAs = new ArrayList<SpellAbility>();
|
||||
// Add the subability to all existing variants
|
||||
for (SpellAbility s : allSAs) {
|
||||
|
||||
Reference in New Issue
Block a user