mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-17 19:28:01 +00:00
- Added Thelon's Chant, Tourach's Chant and Hibernation's End
This commit is contained in:
4
.gitattributes
vendored
4
.gitattributes
vendored
@@ -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
|
||||
|
||||
9
res/cardsfolder/h/hibernations_end.txt
Normal file
9
res/cardsfolder/h/hibernations_end.txt
Normal 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.
|
||||
8
res/cardsfolder/t/thelons_chant.txt
Normal file
8
res/cardsfolder/t/thelons_chant.txt
Normal 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.
|
||||
8
res/cardsfolder/t/tourachs_chant.txt
Normal file
8
res/cardsfolder/t/tourachs_chant.txt
Normal 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.
|
||||
@@ -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) {
|
||||
}
|
||||
}
|
||||
@@ -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),
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user