- Added Thelon's Chant, Tourach's Chant and Hibernation's End

This commit is contained in:
swordshine
2013-06-13 00:35:50 +00:00
parent 382af849c9
commit 6c5e2346d9
7 changed files with 108 additions and 1 deletions

4
.gitattributes vendored
View File

@@ -5004,6 +5004,7 @@ res/cardsfolder/h/hex_parasite.txt -text
res/cardsfolder/h/hexplate_golem.txt svneol=native#text/plain
res/cardsfolder/h/hibernation.txt svneol=native#text/plain
res/cardsfolder/h/hibernation_sliver.txt svneol=native#text/plain
res/cardsfolder/h/hibernations_end.txt -text
res/cardsfolder/h/hickory_woodlot.txt svneol=native#text/plain
res/cardsfolder/h/hidden_ancients.txt svneol=native#text/plain
res/cardsfolder/h/hidden_gibbons.txt svneol=native#text/plain
@@ -11193,6 +11194,7 @@ res/cardsfolder/t/thelon_of_havenwood.txt -text
res/cardsfolder/t/thelonite_druid.txt -text
res/cardsfolder/t/thelonite_hermit.txt svneol=native#text/plain
res/cardsfolder/t/thelonite_monk.txt svneol=native#text/plain
res/cardsfolder/t/thelons_chant.txt -text
res/cardsfolder/t/thermal_blast.txt svneol=native#text/plain
res/cardsfolder/t/thermal_flux.txt -text
res/cardsfolder/t/thermal_glider.txt svneol=native#text/plain
@@ -11470,6 +11472,7 @@ res/cardsfolder/t/touch_of_invisibility.txt svneol=native#text/plain
res/cardsfolder/t/touch_of_the_eternal.txt -text
res/cardsfolder/t/touch_of_vitae.txt -text svneol=unset#text/plain
res/cardsfolder/t/touchstone.txt svneol=native#text/plain
res/cardsfolder/t/tourachs_chant.txt -text
res/cardsfolder/t/tourachs_gate.txt -text
res/cardsfolder/t/tower_above.txt -text
res/cardsfolder/t/tower_defense.txt -text
@@ -14322,6 +14325,7 @@ src/main/java/forge/card/trigger/TriggerLifeGained.java svneol=native#text/plain
src/main/java/forge/card/trigger/TriggerLifeLost.java svneol=native#text/plain
src/main/java/forge/card/trigger/TriggerLosesGame.java -text
src/main/java/forge/card/trigger/TriggerNewGame.java -text
src/main/java/forge/card/trigger/TriggerPayCumulativeUpkeep.java -text
src/main/java/forge/card/trigger/TriggerPhase.java svneol=native#text/plain
src/main/java/forge/card/trigger/TriggerPlanarDice.java -text
src/main/java/forge/card/trigger/TriggerPlaneswalkedFrom.java -text

View File

@@ -0,0 +1,9 @@
Name:Hibernation's End
ManaCost:4 G
Types:Enchantment
K:Cumulative upkeep:1
T:Mode$ PayCumulativeUpkeep | ValidCard$ Card.Self | Paid$ True | Execute$ TrigSearch | OptionalDecider$ You | TriggerDescription$ Whenever you pay CARDNAME's cumulative upkeep, you may search your library for a creature card with converted mana cost equal to the number of age counters on CARDNAME and put it onto the battlefield. If you do, shuffle your library.
SVar:TrigSearch:AB$ ChangeZone | Cost$ 0 | ChangeType$ Creature.cmcEQX | References$ X | ChangeNum$ 1 | Origin$ Library | Destination$ Battlefield
SVar:X:Count$CardCounters.AGE
SVar:Picture:http://www.wizards.com/global/images/magic/general/hibernations_end.jpg
Oracle:Cumulative upkeep {1} (At the beginning of your upkeep, put an age counter on this permanent, then sacrifice it unless you pay its upkeep cost for each age counter on it.)\nWhenever you pay Hibernation's End's cumulative upkeep, you may search your library for a creature card with converted mana cost equal to the number of age counters on Hibernation's End and put it onto the battlefield. If you do, shuffle your library.

View File

@@ -0,0 +1,8 @@
Name:Thelon's Chant
ManaCost:1 G G
Types:Enchantment
K:At the beginning of your upkeep, sacrifice CARDNAME unless you pay G
T:Mode$ ChangesZone | ValidCard$ Swamp | Origin$ Any | Destination$ Battlefield | TriggerZones$ Battlefield | Execute$ TrigDmg | TriggerDescription$ Whenever a player puts a Swamp onto the battlefield, CARDNAME deals 3 damage to that player unless he or she puts a -1/-1 counter on a creature he or she controls.
SVar:TrigDmg:AB$ DealDamage | Cost$ 0 | Defined$ TriggeredCardController | NumDmg$ 3 | UnlessCost$ AddCounter<1/M1M1/Creature.YouCtrl/a creature you control> | UnlessPayer$ TriggeredCardController
SVar:Picture:http://www.wizards.com/global/images/magic/general/thelons_chant.jpg
Oracle:At the beginning of your upkeep, sacrifice Thelon's Chant unless you pay {G}.\nWhenever a player puts a Swamp onto the battlefield, Thelon's Chant deals 3 damage to that player unless he or she puts a -1/-1 counter on a creature he or she controls.

View File

@@ -0,0 +1,8 @@
Name:Tourach's Chant
ManaCost:1 B B
Types:Enchantment
K:At the beginning of your upkeep, sacrifice CARDNAME unless you pay B
T:Mode$ ChangesZone | ValidCard$ Forest | Origin$ Any | Destination$ Battlefield | TriggerZones$ Battlefield | Execute$ TrigDmg | TriggerDescription$ Whenever a player puts a Forest onto the battlefield, CARDNAME deals 3 damage to that player unless he or she puts a -1/-1 counter on a creature he or she controls..
SVar:TrigDmg:AB$ DealDamage | Cost$ 0 | Defined$ TriggeredCardController | NumDmg$ 3 | UnlessCost$ AddCounter<1/M1M1/Creature.YouCtrl/a creature you control> | UnlessPayer$ TriggeredCardController
SVar:Picture:http://www.wizards.com/global/images/magic/general/tourachs_chant.jpg
Oracle:At the beginning of your upkeep, sacrifice Tourach's Chant unless you pay {B}.\nWhenever a player puts a Forest onto the battlefield, Tourach's Chant deals 3 damage to that player unless he or she puts a -1/-1 counter on a creature he or she controls.

View File

@@ -0,0 +1,73 @@
/*
* Forge: Play Magic: the Gathering.
* Copyright (C) 2011 Forge Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package forge.card.trigger;
import forge.Card;
import forge.card.spellability.SpellAbility;
/**
* <p>
* Trigger_LifeGained class.
* </p>
*
* @author Forge
* @version $Id: TriggerLifeGained.java 17802 2012-10-31 08:05:14Z Max mtg $
*/
public class TriggerPayCumulativeUpkeep extends Trigger {
/**
* <p>
* Constructor for Trigger_LifeGained.
* </p>
*
* @param params
* a {@link java.util.HashMap} object.
* @param host
* a {@link forge.Card} object.
* @param intrinsic
* the intrinsic
*/
public TriggerPayCumulativeUpkeep(final java.util.Map<String, String> params, final Card host, final boolean intrinsic) {
super(params, host, intrinsic);
}
/** {@inheritDoc} */
@Override
public final boolean performTest(final java.util.Map<String, Object> runParams2) {
if (this.mapParams.containsKey("Paid")) {
Boolean paid = (Boolean) runParams2.get("CumulativeUpkeepPaid");
if (this.mapParams.get("Paid").equals("True") ^ paid) {
return false;
}
}
final Card card = (Card) runParams2.get("Card");
if (this.mapParams.containsKey("ValidCard")) {
if (!card.isValid(this.mapParams.get("ValidCard").split(","), this.getHostCard().getController(),
this.getHostCard())) {
return false;
}
}
return true;
}
/** {@inheritDoc} */
@Override
public final void setTriggeringObjects(final SpellAbility sa) {
}
}

View File

@@ -20,6 +20,7 @@ public enum TriggerType {
ChangesZone(TriggerChangesZone.class),
Clashed(TriggerClashed.class),
PayCumulativeUpkeep(TriggerPayCumulativeUpkeep.class),
Flipped(TriggerFlipped.class),
Attached(TriggerAttached.class),
Destroyed(TriggerDestroyed.class),

View File

@@ -37,6 +37,7 @@ import forge.card.spellability.Ability;
import forge.card.spellability.AbilityManaPart;
import forge.card.spellability.AbilityStatic;
import forge.card.spellability.SpellAbility;
import forge.card.trigger.TriggerType;
import forge.game.Game;
import forge.game.ai.ComputerUtil;
import forge.game.ai.ComputerUtilCard;
@@ -270,7 +271,10 @@ public class Upkeep extends Phase {
@Override
public void resolve() {
boolean isPaid = controller.getController().payManaOptional(c, upkeepCost, "Cumulative upkeep for " + c, ManaPaymentPurpose.CumulativeUpkeep);
final HashMap<String, Object> runParams = new HashMap<String, Object>();
runParams.put("CumulativeUpkeepPaid", (Boolean) isPaid);
runParams.put("Card", this.getSourceCard());
game.getTriggerHandler().runTrigger(TriggerType.PayCumulativeUpkeep, runParams, false);
if(!isPaid)
game.getAction().sacrifice(c, null);
}