- An accurate script of Ashling, the Extinguisher Avatar

- Karn's Ultimate can be used in Variants
This commit is contained in:
swordshine
2013-08-10 04:48:51 +00:00
parent ad3b034fd2
commit 2bb8c97a5a
6 changed files with 90 additions and 4 deletions

View File

@@ -2,7 +2,6 @@ Name:Ashling, the Extinguisher Avatar
ManaCost:no cost
Types:Vanguard
HandLifeModifier:+1/-3
A:AB$ DestroyAll | ActivationZone$ Command | Cost$ 5 | ValidCards$ Permanent.nonLand | PlayerTurn$ True | SubAbility$ DBRemoveAB | SpellDescription$ Destroy all nonland permanents. Activate this ability only once and only during your turn.
SVar:DBRemoveAB:DB$ Animate | RemoveAllAbilities$ True | Permanent$ True
A:AB$ DestroyAll | ActivationZone$ Command | Cost$ 5 | ValidCards$ Permanent.nonLand | PlayerTurn$ True | GameActivationLimit$ 1 | SpellDescription$ Destroy all nonland permanents. Activate this ability only once and only during your turn.
SVar:Picture:http://www.cardforge.org/fpics/vgd-lq/ashling_the_extinguisher_avatar.jpg
Oracle:Hand +1, life -3\n{5}: Destroy all nonland permanents. Activate this ability only once and only during your turn.

View File

@@ -76,6 +76,7 @@ public class RestartGameEffect extends SpellAbilityEffect {
player.setPoisonCounters(0, sa.getSourceCard());
player.setNumLandsPlayed(0);
GameNew.putCardsOnBattlefield(player, psc.getCardsOnBattlefield(player));
GameNew.initVariantsZones(player, psc);
List<Card> newLibrary = playerLibraries.get(player);
for (Card c : newLibrary) {

View File

@@ -219,6 +219,10 @@ public class SpellAbilityCondition extends SpellAbilityVariables {
return false;
}
if ((this.getGameActivationLimit() != -1) && (this.getNumberGameActivations() >= this.getGameActivationLimit())) {
return false;
}
if (this.getPhases().size() > 0) {
boolean isPhase = false;
final PhaseType currPhase = game.getPhaseHandler().getPhase();

View File

@@ -125,6 +125,10 @@ public class SpellAbilityRestriction extends SpellAbilityVariables {
this.setLimitToCheck(params.get("ActivationLimit"));
}
if (params.containsKey("GameActivationLimit")) {
this.setGameLimitToCheck(params.get("GameActivationLimit"));
}
if (params.containsKey("ActivationNumberSacrifice")) {
this.setActivationNumberSacrifice(Integer.parseInt(params.get("ActivationNumberSacrifice")));
}
@@ -331,6 +335,16 @@ public class SpellAbilityRestriction extends SpellAbilityVariables {
}
}
if (this.getGameLimitToCheck() != null) {
String limit = this.getGameLimitToCheck();
int gameActivationLimit = AbilityUtils.calculateAmount(c, limit, sa);
this.setGameActivationLimit(gameActivationLimit);
if ((this.getGameActivationLimit() != -1) && (this.getNumberGameActivations() >= this.getGameActivationLimit())) {
return false;
}
}
if (this.getCardsInHand() != -1) {
if (activator.getCardsIn(ZoneType.Hand).size() != this.getCardsInHand()) {
return false;

View File

@@ -62,7 +62,9 @@ public class SpellAbilityVariables {
this.opponentTurn = sav.isOpponentTurn();
this.playerTurn = sav.isPlayerTurn();
this.activationLimit = sav.getActivationLimit();
this.gameActivationLimit = sav.getGameActivationLimit();
this.numberTurnActivations = sav.getNumberTurnActivations();
this.numberGameActivations = sav.getNumberGameActivations();
this.activationNumberSacrifice = sav.getActivationNumberSacrifice();
this.cardsInHand = sav.getCardsInHand();
this.chosenColors = sav.getColorToCheck();
@@ -114,12 +116,21 @@ public class SpellAbilityVariables {
/** The activation limit. */
private int activationLimit = -1;
/** The game activation limit. */
private int gameActivationLimit = -1;
/** The limitToCheck to check. */
private String limitToCheck = null;
/** The gameLimitToCheck to check. */
private String gameLimitToCheck = null;
/** The number turn activations. */
private int numberTurnActivations = 0;
/** The number game activations. */
private int numberGameActivations = 0;
/** The activation number sacrifice. */
private int activationNumberSacrifice = -1;
@@ -346,6 +357,18 @@ public class SpellAbilityVariables {
this.activationLimit = limit;
}
/**
* <p>
* Setter for the field <code>gameActivationLimit</code>.
* </p>
*
* @param limit
* a int.
*/
public final void setGameActivationLimit(final int limit) {
this.gameActivationLimit = limit;
}
/**
* <p>
* abilityActivated.
@@ -353,6 +376,7 @@ public class SpellAbilityVariables {
*/
public final void abilityActivated() {
this.numberTurnActivations++;
this.numberGameActivations++;
}
/**
@@ -366,6 +390,17 @@ public class SpellAbilityVariables {
return this.numberTurnActivations;
}
/**
* <p>
* Getter for the field <code>numberTurnActivations</code>.
* </p>
*
* @return a int.
*/
public final int getNumberGameActivations() {
return this.numberGameActivations;
}
/**
* <p>
* resetTurnActivations.
@@ -619,6 +654,15 @@ public class SpellAbilityVariables {
return this.activationLimit;
}
/**
* Gets the activation limit.
*
* @return the activationLimit
*/
public final int getGameActivationLimit() {
return this.gameActivationLimit;
}
/**
* <p>
* Setter for the field <code>limitToCheck</code>.
@@ -631,6 +675,18 @@ public class SpellAbilityVariables {
this.limitToCheck = limit;
}
/**
* <p>
* Setter for the field <code>GamelimitToCheck</code>.
* </p>
*
* @param limit
* a {@link java.lang.String} object.
*/
public final void setGameLimitToCheck(final String limit) {
this.gameLimitToCheck = limit;
}
/**
* <p>
* Getter for the field <code>limitToCheck</code>.
@@ -643,6 +699,18 @@ public class SpellAbilityVariables {
return this.limitToCheck;
}
/**
* <p>
* Getter for the field <code>getGameLimitToCheck</code>.
* </p>
*
* @return the getGameLimitToCheck
* a {@link java.lang.String} object.
*/
public final String getGameLimitToCheck() {
return this.gameLimitToCheck;
}
/**
* Checks if is threshold.
*

View File

@@ -63,7 +63,7 @@ public class GameNew {
}
}
private static void initVariantsZones(final Player player, final RegisteredPlayer psc) {
public static void initVariantsZones(final Player player, final RegisteredPlayer psc) {
PlayerZone com = player.getZone(ZoneType.Command);
// Mainly for avatar, but might find something else here