diff --git a/.gitattributes b/.gitattributes index 9622f0fd26e..5f8b5c79288 100644 --- a/.gitattributes +++ b/.gitattributes @@ -3773,6 +3773,7 @@ res/cardsfolder/restless_bones.txt -text svneol=native#text/plain res/cardsfolder/restless_dead.txt -text svneol=native#text/plain res/cardsfolder/resurrection.txt -text svneol=native#text/plain res/cardsfolder/resuscitate.txt -text svneol=native#text/plain +res/cardsfolder/retaliate.txt -text svneol=native#text/plain res/cardsfolder/retribution_of_the_meek.txt -text svneol=native#text/plain res/cardsfolder/return_to_battle.txt -text svneol=native#text/plain res/cardsfolder/reveillark.txt -text svneol=native#text/plain diff --git a/res/cardsfolder/retaliate.txt b/res/cardsfolder/retaliate.txt new file mode 100644 index 00000000000..49f4bdf8761 --- /dev/null +++ b/res/cardsfolder/retaliate.txt @@ -0,0 +1,9 @@ +Name:Retaliate +ManaCost:2 W W +Types:Instant +Text:no text +A:SP$DestroyAll | Cost$ 2 W W | ValidCards$ Creature.dealtDamageToYouThisTurn | SpellDescription$ Destroy all creatures that dealt damage to you this turn. +SVar:RemAIDeck:True +SVar:Rarity:Rare +SVar:Picture:http://www.wizards.com/global/images/magic/general/retaliate.jpg +End \ No newline at end of file diff --git a/src/forge/Card.java b/src/forge/Card.java index 719eeed4a56..886fa0d5d52 100644 --- a/src/forge/Card.java +++ b/src/forge/Card.java @@ -58,7 +58,8 @@ public class Card extends MyObservable { private boolean creatureBlockedThisCombat = false; private boolean creatureGotBlockedThisCombat = false; //private boolean dealtCombatDmgToOppThisTurn = false; - private boolean dealtDmgToOppThisTurn = false; + private boolean dealtDmgToHumanThisTurn = false; + private boolean dealtDmgToComputerThisTurn = false; private boolean sirenAttackOrDestroy = false; private boolean exaltedBonus = false; private boolean faceDown = false; @@ -271,12 +272,20 @@ public class Card extends MyObservable { return false; } - public void setDealtDmgToOppThisTurn(boolean b) { - dealtDmgToOppThisTurn = b; + public void setDealtDmgToHumanThisTurn(boolean b) { + dealtDmgToHumanThisTurn = b; } - public boolean getDealtDmgToOppThisTurn() { - return dealtDmgToOppThisTurn; + public boolean getDealtDmgToHumanThisTurn() { + return dealtDmgToHumanThisTurn; + } + + public void setDealtDmgToComputerThisTurn(boolean b) { + dealtDmgToComputerThisTurn = b; + } + + public boolean getDealtDmgToComputerThisTurn() { + return dealtDmgToComputerThisTurn; } public void setSirenAttackOrDestroy(boolean b) { @@ -2443,8 +2452,9 @@ public class Card extends MyObservable { { if(!isFaceDown()) return false;} else if (Property.startsWith("enteredBattlefieldThisTurn")) { if(!(getTurnInZone() == AllZone.Phase.getTurn())) return false;} - else if (Property.startsWith("dealtDamageToYouThisTurn")) - { if(!(dealtDmgToOppThisTurn && !getController().isPlayer(sourceController))) return false;} + else if (Property.startsWith("dealtDamageToYouThisTurn")){ + if(!(dealtDmgToHumanThisTurn && getController().isPlayer(AllZone.ComputerPlayer)) + && !(dealtDmgToComputerThisTurn && getController().isPlayer(AllZone.HumanPlayer))) return false;} else if (Property.startsWith("enchanted")) { if(!isEnchanted()) return false;} @@ -2643,7 +2653,7 @@ public class Card extends MyObservable { //the amount of damage needed to kill the creature public int getKillDamage() { int killDamage = getNetDefense() + preventNextDamage - getDamage(); - if(killDamage > preventNextDamage && getKeyword().contains("When CARDNAME is dealt damage, destroy it.")) killDamage = 1 + preventNextDamage; + if(killDamage > preventNextDamage && hasStartOfKeyword("When CARDNAME is dealt damage, destroy it.")) killDamage = 1 + preventNextDamage; return killDamage; } diff --git a/src/forge/CardFactory_Creatures.java b/src/forge/CardFactory_Creatures.java index b052179c2fd..8302cb5ab2a 100644 --- a/src/forge/CardFactory_Creatures.java +++ b/src/forge/CardFactory_Creatures.java @@ -9866,18 +9866,6 @@ public class CardFactory_Creatures { Player opponent = player.getOpponent(); opponent.addDamage(power, card); - - //unTODO: this may not be needed - definitely not needed (slapshot5) - //GameActionUtil.executeLifeLinkEffects(card, power); - /* - CardList cl = CardFactoryUtil.getAurasEnchanting(card, "Guilty Conscience"); - for(Card crd:cl) { - GameActionUtil.executeGuiltyConscienceEffects(card, crd, power); - } - */ - - //TODO - this may not bee needed (or may need to be added in player.addDamage - card.setDealtDmgToOppThisTurn(true); } } } diff --git a/src/forge/GameActionUtil.java b/src/forge/GameActionUtil.java index 15f3aee0aa9..efdc62a191e 100644 --- a/src/forge/GameActionUtil.java +++ b/src/forge/GameActionUtil.java @@ -3131,7 +3131,8 @@ public class GameActionUtil { for(int i = 0; i < list.size(); i++) { Card c = list.get(i); //c.setDealtCombatDmgToOppThisTurn(false); - c.setDealtDmgToOppThisTurn(false); + c.setDealtDmgToHumanThisTurn(false); + c.setDealtDmgToComputerThisTurn(false); } } @@ -5876,7 +5877,8 @@ public class GameActionUtil { else if(c.getName().equals("Whirling Dervish") || c.getName().equals("Dunerider Outlaw")) playerCombatDamage_Whirling_Dervish(c); - if (!c.getController().isPlayer(player)) c.setDealtDmgToOppThisTurn(true); + if (player.isPlayer(AllZone.HumanPlayer)) c.setDealtDmgToHumanThisTurn(true); + if (player.isPlayer(AllZone.ComputerPlayer)) c.setDealtDmgToComputerThisTurn(true); } } //restricted to combat damage, restricted to players