- Added Furnace of Rath and Divine Presence.

This commit is contained in:
jendave
2011-08-06 14:43:16 +00:00
parent d509992fbf
commit 6932b73649
5 changed files with 69 additions and 8 deletions

2
.gitattributes vendored
View File

@@ -1321,6 +1321,7 @@ res/cardsfolder/divebomber_griffin.txt -text svneol=native#text/plain
res/cardsfolder/diversionary_tactics.txt -text svneol=native#text/plain res/cardsfolder/diversionary_tactics.txt -text svneol=native#text/plain
res/cardsfolder/divination.txt -text svneol=native#text/plain res/cardsfolder/divination.txt -text svneol=native#text/plain
res/cardsfolder/divine_offering.txt -text svneol=native#text/plain res/cardsfolder/divine_offering.txt -text svneol=native#text/plain
res/cardsfolder/divine_presence.txt -text svneol=native#text/plain
res/cardsfolder/divine_sacrament.txt -text svneol=native#text/plain res/cardsfolder/divine_sacrament.txt -text svneol=native#text/plain
res/cardsfolder/divine_transformation.txt -text svneol=native#text/plain res/cardsfolder/divine_transformation.txt -text svneol=native#text/plain
res/cardsfolder/divine_verdict.txt -text svneol=native#text/plain res/cardsfolder/divine_verdict.txt -text svneol=native#text/plain
@@ -1918,6 +1919,7 @@ res/cardsfolder/fungus_sliver.txt -text svneol=native#text/plain
res/cardsfolder/fungusaur.txt -text svneol=native#text/plain res/cardsfolder/fungusaur.txt -text svneol=native#text/plain
res/cardsfolder/furious_assault.txt -text svneol=native#text/plain res/cardsfolder/furious_assault.txt -text svneol=native#text/plain
res/cardsfolder/furnace_brood.txt -text svneol=native#text/plain res/cardsfolder/furnace_brood.txt -text svneol=native#text/plain
res/cardsfolder/furnace_of_rath.txt -text svneol=native#text/plain
res/cardsfolder/furnace_spirit.txt -text svneol=native#text/plain res/cardsfolder/furnace_spirit.txt -text svneol=native#text/plain
res/cardsfolder/furnace_whelp.txt -text svneol=native#text/plain res/cardsfolder/furnace_whelp.txt -text svneol=native#text/plain
res/cardsfolder/fury_sliver.txt -text svneol=native#text/plain res/cardsfolder/fury_sliver.txt -text svneol=native#text/plain

View File

@@ -0,0 +1,9 @@
Name:Divine Presence
ManaCost:2 W
Types:Enchantment
Text:If a source would deal 4 or more damage to a creature or player, that source deals 3 damage to that creature or player instead.
SVar:PlayMain1:TRUE
SVar:RemAIDeck:True
SVar:Rarity:Rare
SVar:Picture:http://www.wizards.com/global/images/magic/general/divine_presence.jpg
End

View File

@@ -0,0 +1,9 @@
Name:Furnace of Rath
ManaCost:1 R R R
Types:Enchantment
Text:If a source would deal damage to a creature or player, it deals double that damage to that creature or player instead.
SVar:PlayMain1:TRUE
SVar:RemAIDeck:True
SVar:Rarity:Rare
SVar:Picture:http://www.wizards.com/global/images/magic/general/furnace_of_rath.jpg
End

View File

@@ -2950,6 +2950,16 @@ public class Card extends MyObservable {
int restDamage = damage; int restDamage = damage;
if( AllZoneUtil.isCardInPlay("Furnace of Rath")) {
restDamage += restDamage;
}
if( AllZoneUtil.isCardInPlay("Divine Presence") && restDamage > 3) {
restDamage = 3;
}
if(getName().equals("Phytohydra")) { if(getName().equals("Phytohydra")) {
addCounter(Counters.P1P1, restDamage); addCounter(Counters.P1P1, restDamage);
return 0; return 0;
@@ -2965,7 +2975,7 @@ public class Card extends MyObservable {
public void addDamage(HashMap<Card, Integer> sourcesMap) { public void addDamage(HashMap<Card, Integer> sourcesMap) {
for(Entry<Card, Integer> entry : sourcesMap.entrySet()) { for(Entry<Card, Integer> entry : sourcesMap.entrySet()) {
addDamageWithoutPrevention(entry.getValue(), entry.getKey()); // damage prevention is already checked! addDamageAfterPrevention(entry.getValue(), entry.getKey()); // damage prevention is already checked!
} }
} }
@@ -2978,15 +2988,24 @@ public class Card extends MyObservable {
damageToAdd = replaceDamage(damageToAdd, source, false); damageToAdd = replaceDamage(damageToAdd, source, false);
damageToAdd = preventDamage(damageToAdd, source, false); damageToAdd = preventDamage(damageToAdd, source, false);
addDamageWithoutPrevention(damageToAdd,source); addDamageAfterPrevention(damageToAdd,source);
} }
public void addDamageWithoutPrevention(final int damageIn, final Card source) { public void addDamageWithoutPrevention(final int damageIn, final Card source) {
int damageToAdd = damageIn; int damageToAdd = damageIn;
boolean wither = false;
if(!CardFactoryUtil.canDamage(source, this)) return;
damageToAdd = replaceDamage(damageToAdd, source, false); damageToAdd = replaceDamage(damageToAdd, source, false);
addDamageAfterPrevention(damageToAdd,source);
}
//This function handles damage after replacement and prevention effects are applied
public void addDamageAfterPrevention(final int damageIn, final Card source) {
int damageToAdd = damageIn;
boolean wither = false;
if( damageToAdd == 0 ) return; //Rule 119.8 if( damageToAdd == 0 ) return; //Rule 119.8
System.out.println("Adding " + damageToAdd + " damage to " + getName()); System.out.println("Adding " + damageToAdd + " damage to " + getName());

View File

@@ -198,7 +198,7 @@ public abstract class Player extends MyObservable{
damageToDo = replaceDamage(damageToDo, source, false); damageToDo = replaceDamage(damageToDo, source, false);
damageToDo = preventDamage(damageToDo, source, false); damageToDo = preventDamage(damageToDo, source, false);
addDamageWithoutPrevention(damageToDo,source); addDamageAfterPrevention(damageToDo,source);
} }
public void addDamageWithoutPrevention(final int damage, final Card source) { public void addDamageWithoutPrevention(final int damage, final Card source) {
@@ -206,6 +206,13 @@ public abstract class Player extends MyObservable{
damageToDo = replaceDamage(damageToDo, source, false); damageToDo = replaceDamage(damageToDo, source, false);
addDamageAfterPrevention(damageToDo,source);
}
//This function handles damage after replacement and prevention effects are applied
public void addDamageAfterPrevention(final int damage, final Card source) {
int damageToDo = damage;
if( source.getKeyword().contains("Infect") ) { if( source.getKeyword().contains("Infect") ) {
addPoisonCounters(damageToDo); addPoisonCounters(damageToDo);
} }
@@ -289,6 +296,21 @@ public abstract class Player extends MyObservable{
int restDamage = damage; int restDamage = damage;
if( AllZoneUtil.isCardInPlay("Furnace of Rath")) {
restDamage += restDamage;
}
if( AllZoneUtil.isCardInPlay("Divine Presence") && restDamage > 3) {
restDamage = 3;
}
if( AllZoneUtil.isCardInPlay("Forethought Amulet",this) && (source.isInstant() || source.isSorcery()) && restDamage > 2) {
restDamage = 2;
}
if( AllZoneUtil.isCardInPlay("Crumbling Sanctuary")) { if( AllZoneUtil.isCardInPlay("Crumbling Sanctuary")) {
for(int i = 0; i < restDamage; i++) { for(int i = 0; i < restDamage; i++) {
CardList lib = AllZoneUtil.getPlayerCardsInLibrary(this); CardList lib = AllZoneUtil.getPlayerCardsInLibrary(this);
@@ -339,7 +361,7 @@ public abstract class Player extends MyObservable{
damageToDo = replaceDamage(damageToDo, source, true); damageToDo = replaceDamage(damageToDo, source, true);
damageToDo = preventDamage(damageToDo, source, true); damageToDo = preventDamage(damageToDo, source, true);
addDamageWithoutPrevention(damageToDo, source); //damage prevention is already checked addDamageAfterPrevention(damageToDo, source); //damage prevention is already checked
if ( damageToDo > 0 ) { if ( damageToDo > 0 ) {
GameActionUtil.executeCombatDamageToPlayerEffects(source, damageToDo); GameActionUtil.executeCombatDamageToPlayerEffects(source, damageToDo);