*Added LosesGame trigger.

*Added trigger to Blood Tyrant and Withengar Unbound (Blood Tyrant still needs it's first trigger corrected)
This commit is contained in:
Hellfish
2012-10-23 19:15:54 +00:00
parent 4d5e091bb4
commit a8ebdc345c
6 changed files with 73 additions and 3 deletions

1
.gitattributes vendored
View File

@@ -12569,6 +12569,7 @@ src/main/java/forge/card/trigger/TriggerHandler.java svneol=native#text/plain
src/main/java/forge/card/trigger/TriggerLandPlayed.java svneol=native#text/plain src/main/java/forge/card/trigger/TriggerLandPlayed.java svneol=native#text/plain
src/main/java/forge/card/trigger/TriggerLifeGained.java svneol=native#text/plain 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/TriggerLifeLost.java svneol=native#text/plain
src/main/java/forge/card/trigger/TriggerLosesGame.java -text
src/main/java/forge/card/trigger/TriggerPhase.java svneol=native#text/plain src/main/java/forge/card/trigger/TriggerPhase.java svneol=native#text/plain
src/main/java/forge/card/trigger/TriggerSacrificed.java svneol=native#text/plain src/main/java/forge/card/trigger/TriggerSacrificed.java svneol=native#text/plain
src/main/java/forge/card/trigger/TriggerShuffled.java svneol=native#text/plain src/main/java/forge/card/trigger/TriggerShuffled.java svneol=native#text/plain

View File

@@ -8,6 +8,8 @@ K:Trample
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigLoseLife | TriggerDescription$ At the beginning of your upkeep, each player loses 1 life. Put a +1/+1 counter on CARDNAME for each 1 life lost this way. T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigLoseLife | TriggerDescription$ At the beginning of your upkeep, each player loses 1 life. Put a +1/+1 counter on CARDNAME for each 1 life lost this way.
SVar:TrigLoseLife:AB$LoseLife | Cost$ 0 | Defined$ Each | LifeAmount$ 1 | SubAbility$ DBPutCounter SVar:TrigLoseLife:AB$LoseLife | Cost$ 0 | Defined$ Each | LifeAmount$ 1 | SubAbility$ DBPutCounter
SVar:DBPutCounter:DB$PutCounter | Cost$ 0 | CounterType$ P1P1 | CounterNum$ 2 SVar:DBPutCounter:DB$PutCounter | Cost$ 0 | CounterType$ P1P1 | CounterNum$ 2
T:Mode$ LosesGame | Execute$ TrigCounter | TriggerDescription$ Whenever a player loses the game, put thirteen +1/+1 counters on CARDNAME.
SVar:TrigCounter:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 13
SVar:Rarity:Rare SVar:Rarity:Rare
SVar:Picture:http://www.wizards.com/global/images/magic/general/blood_tyrant.jpg SVar:Picture:http://www.wizards.com/global/images/magic/general/blood_tyrant.jpg
SetInfo:CFX|Rare|http://magiccards.info/scans/en/cfx/99.jpg SetInfo:CFX|Rare|http://magiccards.info/scans/en/cfx/99.jpg

View File

@@ -22,7 +22,8 @@ PT:13/13
K:Flying K:Flying
K:Trample K:Trample
K:Intimidate K:Intimidate
# Whenever a player loses the game, put thirteen +1/+1 counters on Withengar Unbound. (not implemented) T:Mode$ LosesGame | Execute$ TrigCounter | TriggerDescription$ Whenever a player loses the game, put thirteen +1/+1 counters on CARDNAME.
SVar:TrigCounter:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 13
SVar:Picture:http://www.wizards.com/global/images/magic/general/withengar_unbound.jpg SVar:Picture:http://www.wizards.com/global/images/magic/general/withengar_unbound.jpg
SetInfo:DKA|Mythic|http://magiccards.info/scans/en/dka/147b.jpg SetInfo:DKA|Mythic|http://magiccards.info/scans/en/dka/147b.jpg
Oracle:Flying, intimidate, trample\nWhenever a player loses the game, put thirteen +1/+1 counters on Withengar Unbound. Oracle:Flying, intimidate, trample\nWhenever a player loses the game, put thirteen +1/+1 counters on Withengar Unbound.

View File

@@ -22,6 +22,8 @@ import java.util.Collections;
import java.util.Comparator; import java.util.Comparator;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import javax.swing.JFrame; import javax.swing.JFrame;
@@ -908,7 +910,10 @@ public class GameAction {
// award loses as SBE // award loses as SBE
for (Player p : game.getPlayers() ) { for (Player p : game.getPlayers() ) {
if ( Player.Predicates.NOT_LOST.apply(p) && p.checkLoseCondition() ) { // this will set appropriate outcomes if ( Player.Predicates.NOT_LOST.apply(p) && p.checkLoseCondition() ) { // this will set appropriate outcomes
// you may fire a trigger here // Run triggers
final Map<String, Object> runParams = new TreeMap<String, Object>();
runParams.put("Player", p);
Singletons.getModel().getGame().getTriggerHandler().runTrigger(TriggerType.LosesGame, runParams);
} }
} }

View File

@@ -0,0 +1,60 @@
package forge.card.trigger;
import java.util.HashMap;
import forge.Card;
import forge.card.TriggerReplacementBase;
import forge.card.spellability.SpellAbility;
/**
* TODO: Write javadoc for this type.
*
*/
public class TriggerLosesGame extends Trigger {
/**
* <p>
* Constructor for Trigger_Shuffled.
* </p>
*
* @param params
* a {@link java.util.HashMap} object.
* @param host
* a {@link forge.Card} object.
* @param intrinsic
* the intrinsic
*/
public TriggerLosesGame(final HashMap<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.getMapParams().containsKey("ValidPlayer")) {
if (!matchesValid(runParams2.get("Player"), this.getMapParams().get("ValidPlayer").split(","),
this.getHostCard())) {
return false;
}
}
return true;
}
/** {@inheritDoc} */
@Override
public final Trigger getCopy() {
final Trigger copy = new TriggerLosesGame(this.getMapParams(), this.getHostCard(), this.isIntrinsic());
if (this.getOverridingAbility() != null) {
copy.setOverridingAbility(this.getOverridingAbility());
}
copyFieldsTo(copy);
return copy;
}
/** {@inheritDoc} */
@Override
public final void setTriggeringObjects(final SpellAbility sa) {
sa.setTriggeringObject("Player", this.getRunParams().get("Player"));
}
}

View File

@@ -46,7 +46,8 @@ public enum TriggerType {
Drawn(TriggerDrawn.class), Drawn(TriggerDrawn.class),
Discarded(TriggerDiscarded.class), Discarded(TriggerDiscarded.class),
Shuffled(TriggerShuffled.class), Shuffled(TriggerShuffled.class),
LandPlayed(TriggerLandPlayed.class); LandPlayed(TriggerLandPlayed.class),
LosesGame(TriggerLosesGame.class);
private final Class<? extends Trigger> classTrigger; private final Class<? extends Trigger> classTrigger;
private TriggerType(Class<? extends Trigger> clasz) { private TriggerType(Class<? extends Trigger> clasz) {