mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 19:58:00 +00:00
- Added GameEntity class as parent of Card and Player class.
This commit is contained in:
@@ -31,7 +31,7 @@ import forge.card.trigger.Trigger;
|
||||
* @author Forge
|
||||
* @version $Id$
|
||||
*/
|
||||
public class Card extends MyObservable implements Comparable<Card> {
|
||||
public class Card extends GameEntity implements Comparable<Card> {
|
||||
private static int nextUniqueNumber = 1;
|
||||
private int uniqueNumber = nextUniqueNumber++;
|
||||
|
||||
@@ -120,7 +120,6 @@ public class Card extends MyObservable implements Comparable<Card> {
|
||||
private int damage;
|
||||
|
||||
private int nShield; // regeneration
|
||||
private int preventNextDamage = 0;
|
||||
|
||||
private int turnInZone;
|
||||
|
||||
@@ -144,7 +143,6 @@ public class Card extends MyObservable implements Comparable<Card> {
|
||||
|
||||
private Player owner = null;
|
||||
private ArrayList<Object> controllerObjects = new ArrayList<Object>();
|
||||
private String name = "";
|
||||
private String imageName = "";
|
||||
private String rarity = "";
|
||||
private String text = "";
|
||||
@@ -2032,51 +2030,6 @@ public class Card extends MyObservable implements Comparable<Card> {
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
//PreventNextDamage
|
||||
/**
|
||||
* <p>Setter for the field <code>preventNextDamage</code>.</p>
|
||||
*
|
||||
* @param n a int.
|
||||
*/
|
||||
public void setpreventNextDamage(int n) {
|
||||
preventNextDamage = n;
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>Getter for the field <code>preventNextDamage</code>.</p>
|
||||
*
|
||||
* @return a int.
|
||||
*/
|
||||
public int getPreventNextDamage() {
|
||||
return preventNextDamage;
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>addPreventNextDamage.</p>
|
||||
*
|
||||
* @param n a int.
|
||||
*/
|
||||
public void addPreventNextDamage(int n) {
|
||||
preventNextDamage += n;
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>subtractPreventNextDamage.</p>
|
||||
*
|
||||
* @param n a int.
|
||||
*/
|
||||
public void subtractPreventNextDamage(int n) {
|
||||
preventNextDamage -= n;
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>resetPreventNextDamage.</p>
|
||||
*/
|
||||
public void resetPreventNextDamage() {
|
||||
preventNextDamage = 0;
|
||||
}
|
||||
|
||||
//shield = regeneration
|
||||
/**
|
||||
* <p>setShield.</p>
|
||||
@@ -2683,16 +2636,7 @@ public class Card extends MyObservable implements Comparable<Card> {
|
||||
*/
|
||||
public String getImageName() {
|
||||
if (!imageName.equals("")) return imageName;
|
||||
return name;
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>Getter for the field <code>name</code>.</p>
|
||||
*
|
||||
* @return a {@link java.lang.String} object.
|
||||
*/
|
||||
public String getName() {
|
||||
return name;
|
||||
return getName();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2793,16 +2737,6 @@ public class Card extends MyObservable implements Comparable<Card> {
|
||||
controllerObjects = in;
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>Setter for the field <code>name</code>.</p>
|
||||
*
|
||||
* @param s a {@link java.lang.String} object.
|
||||
*/
|
||||
public void setName(String s) {
|
||||
name = s;
|
||||
this.updateObservers();
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>Setter for the field <code>owner</code>.</p>
|
||||
*
|
||||
@@ -4748,6 +4682,7 @@ public class Card extends MyObservable implements Comparable<Card> {
|
||||
* @param source a {@link forge.Card} object.
|
||||
* @return a boolean.
|
||||
*/
|
||||
@Override
|
||||
public boolean isValid(final String Restriction, final Player sourceController, final Card source) {
|
||||
|
||||
if (getName().equals("Mana Pool") || isImmutable()) return false;
|
||||
@@ -4783,6 +4718,7 @@ public class Card extends MyObservable implements Comparable<Card> {
|
||||
* @param source a {@link forge.Card} object.
|
||||
* @return a boolean.
|
||||
*/
|
||||
@Override
|
||||
public boolean hasProperty(String Property, final Player sourceController, final Card source) {
|
||||
//by name can also have color names, so needs to happen before colors.
|
||||
if (Property.startsWith("named")) {
|
||||
@@ -5285,9 +5221,9 @@ public class Card extends MyObservable implements Comparable<Card> {
|
||||
* @return a int.
|
||||
*/
|
||||
public int getKillDamage() {
|
||||
int killDamage = getLethalDamage() + preventNextDamage;
|
||||
if (killDamage > preventNextDamage && hasStartOfKeyword("When CARDNAME is dealt damage, destroy it."))
|
||||
killDamage = 1 + preventNextDamage;
|
||||
int killDamage = getLethalDamage() + getPreventNextDamage();
|
||||
if (killDamage > getPreventNextDamage() && hasStartOfKeyword("When CARDNAME is dealt damage, destroy it."))
|
||||
killDamage = 1 + getPreventNextDamage();
|
||||
|
||||
return killDamage;
|
||||
}
|
||||
@@ -5433,26 +5369,6 @@ public class Card extends MyObservable implements Comparable<Card> {
|
||||
return restDamage;
|
||||
}
|
||||
|
||||
//This function helps the AI calculate the actual amount of damage an effect would deal
|
||||
/**
|
||||
* <p>predictDamage.</p>
|
||||
*
|
||||
* @param damage a int.
|
||||
* @param source a {@link forge.Card} object.
|
||||
* @param isCombat a boolean.
|
||||
* @return a int.
|
||||
*/
|
||||
public int predictDamage(final int damage, final Card source, final boolean isCombat) {
|
||||
|
||||
int restDamage = damage;
|
||||
|
||||
restDamage = staticReplaceDamage(restDamage, source, isCombat);
|
||||
|
||||
restDamage = staticDamagePrevention(restDamage, source, isCombat);
|
||||
|
||||
return restDamage;
|
||||
}
|
||||
|
||||
//This should be also usable by the AI to forecast an effect (so it must not change the game state)
|
||||
/**
|
||||
* <p>staticDamagePrevention.</p>
|
||||
@@ -5483,6 +5399,7 @@ public class Card extends MyObservable implements Comparable<Card> {
|
||||
* @param isCombat a boolean.
|
||||
* @return a int.
|
||||
*/
|
||||
@Override
|
||||
public int staticDamagePrevention(final int damage, final Card source, final boolean isCombat) {
|
||||
|
||||
if (AllZoneUtil.isCardInPlay("Leyline of Punishment")) return damage;
|
||||
@@ -5561,6 +5478,7 @@ public class Card extends MyObservable implements Comparable<Card> {
|
||||
* @param isCombat a boolean.
|
||||
* @return a int.
|
||||
*/
|
||||
@Override
|
||||
public int preventDamage(final int damage, Card source, boolean isCombat) {
|
||||
|
||||
if (AllZoneUtil.isCardInPlay("Leyline of Punishment")) return damage;
|
||||
@@ -5581,12 +5499,12 @@ public class Card extends MyObservable implements Comparable<Card> {
|
||||
this.subtractCounter(Counters.P1P1, 1);
|
||||
}
|
||||
|
||||
if (restDamage >= preventNextDamage) {
|
||||
restDamage = restDamage - preventNextDamage;
|
||||
preventNextDamage = 0;
|
||||
if (restDamage >= getPreventNextDamage()) {
|
||||
restDamage = restDamage - getPreventNextDamage();
|
||||
setPreventNextDamage(0);
|
||||
} else {
|
||||
setPreventNextDamage(getPreventNextDamage() - restDamage);
|
||||
restDamage = 0;
|
||||
preventNextDamage = preventNextDamage - restDamage;
|
||||
}
|
||||
|
||||
if (getName().equals("Phyrexian Hydra")) {
|
||||
@@ -5606,6 +5524,7 @@ public class Card extends MyObservable implements Comparable<Card> {
|
||||
* @param isCombat a boolean.
|
||||
* @return a int.
|
||||
*/
|
||||
@Override
|
||||
public int staticReplaceDamage(final int damage, Card source, boolean isCombat) {
|
||||
|
||||
int restDamage = damage;
|
||||
@@ -5676,6 +5595,7 @@ public class Card extends MyObservable implements Comparable<Card> {
|
||||
* @param isCombat a boolean.
|
||||
* @return a int.
|
||||
*/
|
||||
@Override
|
||||
public int replaceDamage(final int damage, Card source, boolean isCombat) {
|
||||
|
||||
int restDamage = damage;
|
||||
@@ -5712,37 +5632,6 @@ public class Card extends MyObservable implements Comparable<Card> {
|
||||
}
|
||||
}
|
||||
|
||||
//This is for noncombat damage
|
||||
/**
|
||||
* <p>addDamage.</p>
|
||||
*
|
||||
* @param damageIn a int.
|
||||
* @param source a {@link forge.Card} object.
|
||||
*/
|
||||
public void addDamage(final int damageIn, final Card source) {
|
||||
int damageToAdd = damageIn;
|
||||
|
||||
damageToAdd = replaceDamage(damageToAdd, source, false);
|
||||
damageToAdd = preventDamage(damageToAdd, source, false);
|
||||
|
||||
addDamageAfterPrevention(damageToAdd, source, false);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>addDamageWithoutPrevention.</p>
|
||||
*
|
||||
* @param damageIn a int.
|
||||
* @param source a {@link forge.Card} object.
|
||||
*/
|
||||
public void addDamageWithoutPrevention(final int damageIn, final Card source) {
|
||||
int damageToAdd = damageIn;
|
||||
|
||||
damageToAdd = replaceDamage(damageToAdd, source, false);
|
||||
|
||||
addDamageAfterPrevention(damageToAdd, source, false);
|
||||
}
|
||||
|
||||
//This function handles damage after replacement and prevention effects are applied
|
||||
/**
|
||||
* <p>addDamageAfterPrevention.</p>
|
||||
@@ -5751,6 +5640,7 @@ public class Card extends MyObservable implements Comparable<Card> {
|
||||
* @param source a {@link forge.Card} object.
|
||||
* @param isCombat a boolean.
|
||||
*/
|
||||
@Override
|
||||
public void addDamageAfterPrevention(final int damageIn, final Card source, final boolean isCombat) {
|
||||
int damageToAdd = damageIn;
|
||||
boolean wither = false;
|
||||
|
||||
261
src/main/java/forge/GameEntity.java
Normal file
261
src/main/java/forge/GameEntity.java
Normal file
@@ -0,0 +1,261 @@
|
||||
package forge;
|
||||
|
||||
import forge.card.spellability.SpellAbility;
|
||||
|
||||
|
||||
/**
|
||||
* <p>Abstract Player class.</p>
|
||||
*
|
||||
* @author Forge
|
||||
* @version $Id: Player.java 10091 2011-08-30 16:11:21Z Sloth $
|
||||
*/
|
||||
public abstract class GameEntity extends MyObservable {
|
||||
private String name = "";
|
||||
private int preventNextDamage = 0;
|
||||
|
||||
/**
|
||||
* <p>Getter for the field <code>name</code>.</p>
|
||||
*
|
||||
* @return a {@link java.lang.String} object.
|
||||
*/
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* <p>Setter for the field <code>name</code>.</p>
|
||||
*
|
||||
* @param s a {@link java.lang.String} object.
|
||||
*/
|
||||
public void setName(String s) {
|
||||
name = s;
|
||||
}
|
||||
|
||||
//////////////////////////
|
||||
//
|
||||
// methods for handling damage
|
||||
//
|
||||
//////////////////////////
|
||||
|
||||
/**
|
||||
* <p>addDamage.</p>
|
||||
*
|
||||
* @param damage a int.
|
||||
* @param source a {@link forge.Card} object.
|
||||
*/
|
||||
public void addDamage(final int damage, final Card source) {
|
||||
int damageToDo = damage;
|
||||
|
||||
damageToDo = replaceDamage(damageToDo, source, false);
|
||||
damageToDo = preventDamage(damageToDo, source, false);
|
||||
|
||||
addDamageAfterPrevention(damageToDo, source, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>addDamageWithoutPrevention.</p>
|
||||
*
|
||||
* @param damage a int.
|
||||
* @param source a {@link forge.Card} object.
|
||||
*/
|
||||
public void addDamageWithoutPrevention(final int damage, final Card source) {
|
||||
int damageToDo = damage;
|
||||
|
||||
damageToDo = replaceDamage(damageToDo, source, false);
|
||||
|
||||
addDamageAfterPrevention(damageToDo, source, false);
|
||||
}
|
||||
|
||||
//This function handles damage after replacement and prevention effects are applied
|
||||
/**
|
||||
* <p>addDamageAfterPrevention.</p>
|
||||
*
|
||||
* @param damage a int.
|
||||
* @param source a {@link forge.Card} object.
|
||||
* @param isCombat a boolean.
|
||||
*/
|
||||
public void addDamageAfterPrevention(final int damage, final Card source, final boolean isCombat) {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>predictDamage.</p>
|
||||
*
|
||||
* @param damage a int.
|
||||
* @param source a {@link forge.Card} object.
|
||||
* @param isCombat a boolean.
|
||||
* @return a int.
|
||||
*/
|
||||
//This function helps the AI calculate the actual amount of damage an effect would deal
|
||||
public int predictDamage(final int damage, final Card source, final boolean isCombat) {
|
||||
|
||||
int restDamage = damage;
|
||||
|
||||
restDamage = staticReplaceDamage(restDamage, source, isCombat);
|
||||
restDamage = staticDamagePrevention(restDamage, source, isCombat);
|
||||
|
||||
return restDamage;
|
||||
}
|
||||
|
||||
//This should be also usable by the AI to forecast an effect (so it must not change the game state)
|
||||
/**
|
||||
* <p>staticDamagePrevention.</p>
|
||||
*
|
||||
* @param damage a int.
|
||||
* @param source a {@link forge.Card} object.
|
||||
* @param isCombat a boolean.
|
||||
* @return a int.
|
||||
*/
|
||||
public int staticDamagePrevention(final int damage, final Card source, final boolean isCombat) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
//This should be also usable by the AI to forecast an effect (so it must not change the game state)
|
||||
/**
|
||||
* <p>staticReplaceDamage.</p>
|
||||
*
|
||||
* @param damage a int.
|
||||
* @param source a {@link forge.Card} object.
|
||||
* @param isCombat a boolean.
|
||||
* @return a int.
|
||||
*/
|
||||
public int staticReplaceDamage(final int damage, Card source, boolean isCombat) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>replaceDamage.</p>
|
||||
*
|
||||
* @param damage a int.
|
||||
* @param source a {@link forge.Card} object.
|
||||
* @param isCombat a boolean.
|
||||
* @return a int.
|
||||
*/
|
||||
public int replaceDamage(final int damage, Card source, boolean isCombat) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>preventDamage.</p>
|
||||
*
|
||||
* @param damage a int.
|
||||
* @param source a {@link forge.Card} object.
|
||||
* @param isCombat a boolean.
|
||||
* @return a int.
|
||||
*/
|
||||
public int preventDamage(final int damage, Card source, boolean isCombat) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
//////////////////////////
|
||||
//
|
||||
// methods for handling Damage Prevention
|
||||
//
|
||||
//////////////////////////
|
||||
|
||||
//PreventNextDamage
|
||||
/**
|
||||
* <p>Setter for the field <code>preventNextDamage</code>.</p>
|
||||
*
|
||||
* @param n a int.
|
||||
*/
|
||||
public void setPreventNextDamage(int n) {
|
||||
preventNextDamage = n;
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>Getter for the field <code>preventNextDamage</code>.</p>
|
||||
*
|
||||
* @return a int.
|
||||
*/
|
||||
public int getPreventNextDamage() {
|
||||
return preventNextDamage;
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>addPreventNextDamage.</p>
|
||||
*
|
||||
* @param n a int.
|
||||
*/
|
||||
public void addPreventNextDamage(int n) {
|
||||
preventNextDamage += n;
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>subtractPreventNextDamage.</p>
|
||||
*
|
||||
* @param n a int.
|
||||
*/
|
||||
public void subtractPreventNextDamage(int n) {
|
||||
preventNextDamage -= n;
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>resetPreventNextDamage.</p>
|
||||
*/
|
||||
public void resetPreventNextDamage() {
|
||||
preventNextDamage = 0;
|
||||
}
|
||||
|
||||
|
||||
public boolean hasKeyword(String keyword){
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param sa
|
||||
* @return a boolean
|
||||
*/
|
||||
public boolean canTarget(SpellAbility sa) {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isValid(final String Restriction, final Player sourceController, final Card source) {
|
||||
|
||||
String incR[] = Restriction.split("\\.");
|
||||
|
||||
if (!incR[0].equals("Player") &&
|
||||
!(incR[0].equals("Opponent") && !this.equals(sourceController)) &&
|
||||
!(incR[0].equals("You") && this.equals(sourceController)))
|
||||
return false;
|
||||
|
||||
if (incR.length > 1) {
|
||||
final String excR = incR[1];
|
||||
String exR[] = excR.split("\\+"); // Exclusive Restrictions are ...
|
||||
for (int j = 0; j < exR.length; j++)
|
||||
if (hasProperty(exR[j], sourceController, source) == false) return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public boolean hasProperty(String Property, final Player sourceController, final Card source) {
|
||||
|
||||
if (Property.equals("You")) {
|
||||
if (!this.equals(sourceController)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else if (Property.equals("Opponent")) {
|
||||
if (this.equals(sourceController)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
////////////////////////////////
|
||||
//
|
||||
// generic Object overrides
|
||||
//
|
||||
/////////////////////////////////
|
||||
|
||||
/** {@inheritDoc} */
|
||||
@Override
|
||||
public String toString() {
|
||||
return name;
|
||||
}
|
||||
}
|
||||
@@ -16,12 +16,10 @@ import java.util.*;
|
||||
* @author Forge
|
||||
* @version $Id$
|
||||
*/
|
||||
public abstract class Player extends MyObservable {
|
||||
protected String name;
|
||||
public abstract class Player extends GameEntity {
|
||||
protected int poisonCounters;
|
||||
protected int life;
|
||||
protected int assignedDamage;
|
||||
protected int preventNextDamage;
|
||||
protected int numPowerSurgeLands;
|
||||
|
||||
protected boolean altWin = false;
|
||||
@@ -67,7 +65,7 @@ public abstract class Player extends MyObservable {
|
||||
public Player(String myName, int myLife, int myPoisonCounters) {
|
||||
reset();
|
||||
|
||||
name = myName;
|
||||
setName(myName);
|
||||
life = myLife;
|
||||
poisonCounters = myPoisonCounters;
|
||||
}
|
||||
@@ -79,7 +77,7 @@ public abstract class Player extends MyObservable {
|
||||
life = 20;
|
||||
poisonCounters = 0;
|
||||
assignedDamage = 0;
|
||||
preventNextDamage = 0;
|
||||
setPreventNextDamage(0);
|
||||
lastDrawnCard = null;
|
||||
numDrawnThisTurn = 0;
|
||||
slowtripList = new CardList();
|
||||
@@ -100,15 +98,6 @@ public abstract class Player extends MyObservable {
|
||||
this.updateObservers();
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>Getter for the field <code>name</code>.</p>
|
||||
*
|
||||
* @return a {@link java.lang.String} object.
|
||||
*/
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>isHuman.</p>
|
||||
*
|
||||
@@ -130,7 +119,7 @@ public abstract class Player extends MyObservable {
|
||||
* @return a boolean.
|
||||
*/
|
||||
public boolean isPlayer(Player p1) {
|
||||
return p1 != null && p1.getName().equals(this.name);
|
||||
return p1 != null && p1.getName().equals(getName());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -322,35 +311,6 @@ public abstract class Player extends MyObservable {
|
||||
//
|
||||
//////////////////////////
|
||||
|
||||
/**
|
||||
* <p>addDamage.</p>
|
||||
*
|
||||
* @param damage a int.
|
||||
* @param source a {@link forge.Card} object.
|
||||
*/
|
||||
public void addDamage(final int damage, final Card source) {
|
||||
int damageToDo = damage;
|
||||
|
||||
damageToDo = replaceDamage(damageToDo, source, false);
|
||||
damageToDo = preventDamage(damageToDo, source, false);
|
||||
|
||||
addDamageAfterPrevention(damageToDo, source, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>addDamageWithoutPrevention.</p>
|
||||
*
|
||||
* @param damage a int.
|
||||
* @param source a {@link forge.Card} object.
|
||||
*/
|
||||
public void addDamageWithoutPrevention(final int damage, final Card source) {
|
||||
int damageToDo = damage;
|
||||
|
||||
damageToDo = replaceDamage(damageToDo, source, false);
|
||||
|
||||
addDamageAfterPrevention(damageToDo, source, false);
|
||||
}
|
||||
|
||||
//This function handles damage after replacement and prevention effects are applied
|
||||
/**
|
||||
* <p>addDamageAfterPrevention.</p>
|
||||
@@ -359,6 +319,7 @@ public abstract class Player extends MyObservable {
|
||||
* @param source a {@link forge.Card} object.
|
||||
* @param isCombat a boolean.
|
||||
*/
|
||||
@Override
|
||||
public void addDamageAfterPrevention(final int damage, final Card source, final boolean isCombat) {
|
||||
int damageToDo = damage;
|
||||
|
||||
@@ -420,6 +381,7 @@ public abstract class Player extends MyObservable {
|
||||
* @param isCombat a boolean.
|
||||
* @return a int.
|
||||
*/
|
||||
@Override
|
||||
public int staticDamagePrevention(final int damage, final Card source, final boolean isCombat) {
|
||||
|
||||
if (AllZoneUtil.isCardInPlay("Leyline of Punishment")) return damage;
|
||||
@@ -478,6 +440,7 @@ public abstract class Player extends MyObservable {
|
||||
* @param isCombat a boolean.
|
||||
* @return a int.
|
||||
*/
|
||||
@Override
|
||||
public int staticReplaceDamage(final int damage, Card source, boolean isCombat) {
|
||||
|
||||
int restDamage = damage;
|
||||
@@ -541,6 +504,7 @@ public abstract class Player extends MyObservable {
|
||||
* @param isCombat a boolean.
|
||||
* @return a int.
|
||||
*/
|
||||
@Override
|
||||
public int replaceDamage(final int damage, Card source, boolean isCombat) {
|
||||
|
||||
int restDamage = staticReplaceDamage(damage, source, isCombat);
|
||||
@@ -578,6 +542,7 @@ public abstract class Player extends MyObservable {
|
||||
* @param isCombat a boolean.
|
||||
* @return a int.
|
||||
*/
|
||||
@Override
|
||||
public int preventDamage(final int damage, Card source, boolean isCombat) {
|
||||
|
||||
if (AllZoneUtil.isCardInPlay("Leyline of Punishment")) return damage;
|
||||
@@ -592,12 +557,12 @@ public abstract class Player extends MyObservable {
|
||||
|
||||
restDamage = staticDamagePrevention(restDamage, source, isCombat);
|
||||
|
||||
if (restDamage >= preventNextDamage) {
|
||||
restDamage = restDamage - preventNextDamage;
|
||||
preventNextDamage = 0;
|
||||
if (restDamage >= getPreventNextDamage()) {
|
||||
restDamage = restDamage - getPreventNextDamage();
|
||||
setPreventNextDamage(0);
|
||||
} else {
|
||||
setPreventNextDamage(getPreventNextDamage() - restDamage);
|
||||
restDamage = 0;
|
||||
preventNextDamage = preventNextDamage - restDamage;
|
||||
}
|
||||
|
||||
return restDamage;
|
||||
@@ -650,56 +615,6 @@ public abstract class Player extends MyObservable {
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////
|
||||
//
|
||||
// methods for handling Damage Prevention
|
||||
//
|
||||
//////////////////////////
|
||||
|
||||
//PreventNextDamage
|
||||
/**
|
||||
* <p>Setter for the field <code>preventNextDamage</code>.</p>
|
||||
*
|
||||
* @param n a int.
|
||||
*/
|
||||
public void setpreventNextDamage(int n) {
|
||||
preventNextDamage = n;
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>Getter for the field <code>preventNextDamage</code>.</p>
|
||||
*
|
||||
* @return a int.
|
||||
*/
|
||||
public int getPreventNextDamage() {
|
||||
return preventNextDamage;
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>addPreventNextDamage.</p>
|
||||
*
|
||||
* @param n a int.
|
||||
*/
|
||||
public void addPreventNextDamage(int n) {
|
||||
preventNextDamage += n;
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>subtractPreventNextDamage.</p>
|
||||
*
|
||||
* @param n a int.
|
||||
*/
|
||||
public void subtractPreventNextDamage(int n) {
|
||||
preventNextDamage -= n;
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>resetPreventNextDamage.</p>
|
||||
*/
|
||||
public void resetPreventNextDamage() {
|
||||
preventNextDamage = 0;
|
||||
}
|
||||
|
||||
//////////////////////////
|
||||
//
|
||||
// methods for handling Poison counters
|
||||
@@ -770,6 +685,7 @@ public abstract class Player extends MyObservable {
|
||||
* @param sa
|
||||
* @return a boolean
|
||||
*/
|
||||
@Override
|
||||
public boolean canTarget(SpellAbility sa) {
|
||||
if (hasKeyword("Shroud") ||
|
||||
(!this.isPlayer(sa.getActivatingPlayer()) && hasKeyword("Hexproof")))
|
||||
@@ -1669,6 +1585,7 @@ public abstract class Player extends MyObservable {
|
||||
prowl = new ArrayList<String>();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isValid(final String Restriction, final Player sourceController, final Card source) {
|
||||
|
||||
String incR[] = Restriction.split("\\.");
|
||||
@@ -1688,6 +1605,7 @@ public abstract class Player extends MyObservable {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasProperty(String Property, final Player sourceController, final Card source) {
|
||||
|
||||
if (Property.equals("You")) {
|
||||
@@ -1939,13 +1857,7 @@ public abstract class Player extends MyObservable {
|
||||
public boolean equals(Object o) {
|
||||
if (o instanceof Player) {
|
||||
Player p1 = (Player) o;
|
||||
return p1.getName().equals(name);
|
||||
return p1.getName().equals(getName());
|
||||
} else return false;
|
||||
}
|
||||
|
||||
/** {@inheritDoc} */
|
||||
@Override
|
||||
public String toString() {
|
||||
return name;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user