*Added a GameLoss replacement effect.

*Added Lich's Mirror.
This commit is contained in:
Hellfish
2012-01-15 18:48:48 +00:00
parent 856b7d6c3e
commit 12848f154d
4 changed files with 73 additions and 5 deletions

1
.gitattributes vendored
View File

@@ -10820,6 +10820,7 @@ src/main/java/forge/card/package-info.java svneol=native#text/plain
src/main/java/forge/card/replacement/ReplaceDamage.java -text src/main/java/forge/card/replacement/ReplaceDamage.java -text
src/main/java/forge/card/replacement/ReplaceDraw.java -text src/main/java/forge/card/replacement/ReplaceDraw.java -text
src/main/java/forge/card/replacement/ReplaceGainLife.java -text src/main/java/forge/card/replacement/ReplaceGainLife.java -text
src/main/java/forge/card/replacement/ReplaceGameLoss.java -text
src/main/java/forge/card/replacement/ReplacementEffect.java -text src/main/java/forge/card/replacement/ReplacementEffect.java -text
src/main/java/forge/card/replacement/ReplacementHandler.java -text src/main/java/forge/card/replacement/ReplacementHandler.java -text
src/main/java/forge/card/replacement/package-info.java svneol=native#text/plain src/main/java/forge/card/replacement/package-info.java svneol=native#text/plain

View File

@@ -2089,6 +2089,16 @@ public abstract class Player extends GameEntity {
System.out.println("Tried to lose, but currently can't."); System.out.println("Tried to lose, but currently can't.");
return false; return false;
} }
//Replacement effects
HashMap<String,Object> runParams = new HashMap<String,Object>();
runParams.put("Affected", this);
runParams.put("Event", "GameLoss");
if(AllZone.getReplacementHandler().run(runParams)) {
return false;
}
this.lossState = state; this.lossState = state;
this.loseConditionSpell = spellName; this.loseConditionSpell = spellName;
return true; return true;
@@ -2176,12 +2186,11 @@ public abstract class Player extends GameEntity {
} }
if (this.lossState != GameLossReason.DidNotLoseYet) { if (this.lossState != GameLossReason.DidNotLoseYet) {
return true; return this.loseConditionMet(lossState, null);
} }
if (this.poisonCounters >= 10) { if (this.poisonCounters >= 10) {
this.loseConditionMet(GameLossReason.Poisoned, null); return this.loseConditionMet(GameLossReason.Poisoned, null);
return true;
} }
if (this.cantLoseForZeroOrLessLife()) { if (this.cantLoseForZeroOrLessLife()) {
@@ -2190,8 +2199,7 @@ public abstract class Player extends GameEntity {
final boolean hasNoLife = this.getLife() <= 0; final boolean hasNoLife = this.getLife() <= 0;
if (hasNoLife) { if (hasNoLife) {
this.loseConditionMet(GameLossReason.LifeReachedZero, null); return this.loseConditionMet(GameLossReason.LifeReachedZero, null);
return true;
} }
return false; return false;

View File

@@ -0,0 +1,57 @@
package forge.card.replacement;
import java.util.HashMap;
import forge.AllZoneUtil;
import forge.Card;
import forge.card.spellability.SpellAbility;
/**
* TODO: Write javadoc for this type.
*
*/
public class ReplaceGameLoss extends ReplacementEffect {
/**
* Instantiates a new replace gain life.
*
* @param map the map
* @param host the host
*/
public ReplaceGameLoss(HashMap<String, String> map, Card host) {
super(map, host);
}
/* (non-Javadoc)
* @see forge.card.replacement.ReplacementEffect#canReplace(java.util.HashMap)
*/
@Override
public boolean canReplace(HashMap<String, Object> runParams) {
if (!runParams.get("Event").equals("GameLoss")) {
return false;
}
if (this.getMapParams().containsKey("ValidPlayer")) {
if (!AllZoneUtil.matchesValid(runParams.get("Affected"), this.getMapParams().get("ValidPlayer").split(","), this.getHostCard())) {
return false;
}
}
return true;
}
/* (non-Javadoc)
* @see forge.card.replacement.ReplacementEffect#getCopy()
*/
@Override
public ReplacementEffect getCopy() {
return new ReplaceGameLoss(this.getMapParams(), getHostCard());
}
/* (non-Javadoc)
* @see forge.card.replacement.ReplacementEffect#setReplacingObjects(java.util.HashMap, forge.card.spellability.SpellAbility)
*/
@Override
public void setReplacingObjects(HashMap<String, Object> runParams, SpellAbility sa) {
}
}

View File

@@ -186,6 +186,8 @@ public class ReplacementHandler {
ret = new ReplaceGainLife(mapParams, host); ret = new ReplaceGainLife(mapParams, host);
} else if (eventToReplace.equals("DamageDone")) { } else if (eventToReplace.equals("DamageDone")) {
ret = new ReplaceDamage(mapParams, host); ret = new ReplaceDamage(mapParams, host);
} else if (eventToReplace.equals("GameLoss")) {
ret = new ReplaceGameLoss(mapParams, host);
} }
return ret; return ret;