mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-17 11:18:01 +00:00
- Damage Functions now return whether or not they dealt any damage
- DamageAll can now Remember what Cards it damaged - Added Aggravate
This commit is contained in:
1
.gitattributes
vendored
1
.gitattributes
vendored
@@ -125,6 +125,7 @@ res/cardsfolder/a/ageless_sentinels.txt -text
|
|||||||
res/cardsfolder/a/agent_of_masks.txt svneol=native#text/plain
|
res/cardsfolder/a/agent_of_masks.txt svneol=native#text/plain
|
||||||
res/cardsfolder/a/agent_of_shauku.txt svneol=native#text/plain
|
res/cardsfolder/a/agent_of_shauku.txt svneol=native#text/plain
|
||||||
res/cardsfolder/a/agent_of_stromgald.txt svneol=native#text/plain
|
res/cardsfolder/a/agent_of_stromgald.txt svneol=native#text/plain
|
||||||
|
res/cardsfolder/a/aggravate.txt -text
|
||||||
res/cardsfolder/a/aggression.txt svneol=native#text/plain
|
res/cardsfolder/a/aggression.txt svneol=native#text/plain
|
||||||
res/cardsfolder/a/aggressive_urge.txt svneol=native#text/plain
|
res/cardsfolder/a/aggressive_urge.txt svneol=native#text/plain
|
||||||
res/cardsfolder/a/agility.txt svneol=native#text/plain
|
res/cardsfolder/a/agility.txt svneol=native#text/plain
|
||||||
|
|||||||
11
res/cardsfolder/a/aggravate.txt
Normal file
11
res/cardsfolder/a/aggravate.txt
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
Name:Aggravate
|
||||||
|
ManaCost:3 R R
|
||||||
|
Types:Instant
|
||||||
|
Text:no text
|
||||||
|
A:SP$ DamageAll | Cost$ 3 R R | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ 1 | RememberDamaged$ True | ValidCards$ Creature | ValidDescription$ each creature target player controls. | SubAbility$ DBAttack | SpellDescription$ CARDNAME deals 1 damage to each creature target player controls.
|
||||||
|
SVar:DBAttack:DB$ PumpAll | Defined$ Remembered | KW$ HIDDEN CARDNAME attacks each turn if able. | SubAbility$ DBCleanup | SpellDescription$ Each creature dealt damage this way attacks this turn if able.
|
||||||
|
SVar:DBCleanup:DB$Cleanup | ClearRemembered$ True
|
||||||
|
SVar:Rarity:Uncommon
|
||||||
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/aggravate.jpg
|
||||||
|
SetInfo:AVR|Uncommon|http://magiccards.info/scans/en/avr/125.jpg
|
||||||
|
End
|
||||||
@@ -8114,14 +8114,15 @@ public class Card extends GameEntity implements Comparable<Card> {
|
|||||||
* a {@link forge.Card} object.
|
* a {@link forge.Card} object.
|
||||||
* @param isCombat
|
* @param isCombat
|
||||||
* a boolean.
|
* a boolean.
|
||||||
|
* @return whether or not damage as dealt
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public final void addDamageAfterPrevention(final int damageIn, final Card source, final boolean isCombat) {
|
public final boolean addDamageAfterPrevention(final int damageIn, final Card source, final boolean isCombat) {
|
||||||
final int damageToAdd = damageIn;
|
final int damageToAdd = damageIn;
|
||||||
boolean wither = false;
|
boolean wither = false;
|
||||||
|
|
||||||
if (damageToAdd == 0) {
|
if (damageToAdd == 0) {
|
||||||
return; // Rule 119.8
|
return false; // Rule 119.8
|
||||||
}
|
}
|
||||||
|
|
||||||
System.out.println("Adding " + damageToAdd + " damage to " + this.getName());
|
System.out.println("Adding " + damageToAdd + " damage to " + this.getName());
|
||||||
@@ -8142,7 +8143,7 @@ public class Card extends GameEntity implements Comparable<Card> {
|
|||||||
|
|
||||||
if (this.isPlaneswalker()) {
|
if (this.isPlaneswalker()) {
|
||||||
this.subtractCounter(Counters.LOYALTY, damageToAdd);
|
this.subtractCounter(Counters.LOYALTY, damageToAdd);
|
||||||
return;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((source.hasKeyword("Wither") || source.hasKeyword("Infect"))) {
|
if ((source.hasKeyword("Wither") || source.hasKeyword("Infect"))) {
|
||||||
@@ -8159,7 +8160,7 @@ public class Card extends GameEntity implements Comparable<Card> {
|
|||||||
} else if (AllZoneUtil.isCardInPlay(this) && !wither) {
|
} else if (AllZoneUtil.isCardInPlay(this) && !wither) {
|
||||||
this.damage += damageToAdd;
|
this.damage += damageToAdd;
|
||||||
}
|
}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private String curSetCode = "";
|
private String curSetCode = "";
|
||||||
|
|||||||
@@ -75,14 +75,15 @@ public abstract class GameEntity extends MyObservable {
|
|||||||
* a int.
|
* a int.
|
||||||
* @param source
|
* @param source
|
||||||
* a {@link forge.Card} object.
|
* a {@link forge.Card} object.
|
||||||
|
* @return whether or not damage was dealt
|
||||||
*/
|
*/
|
||||||
public void addDamage(final int damage, final Card source) {
|
public boolean addDamage(final int damage, final Card source) {
|
||||||
int damageToDo = damage;
|
int damageToDo = damage;
|
||||||
|
|
||||||
damageToDo = this.replaceDamage(damageToDo, source, false);
|
damageToDo = this.replaceDamage(damageToDo, source, false);
|
||||||
damageToDo = this.preventDamage(damageToDo, source, false);
|
damageToDo = this.preventDamage(damageToDo, source, false);
|
||||||
|
|
||||||
this.addDamageAfterPrevention(damageToDo, source, false);
|
return this.addDamageAfterPrevention(damageToDo, source, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -94,13 +95,14 @@ public abstract class GameEntity extends MyObservable {
|
|||||||
* a int.
|
* a int.
|
||||||
* @param source
|
* @param source
|
||||||
* a {@link forge.Card} object.
|
* a {@link forge.Card} object.
|
||||||
|
* @return whether or not damage was dealt
|
||||||
*/
|
*/
|
||||||
public void addDamageWithoutPrevention(final int damage, final Card source) {
|
public boolean addDamageWithoutPrevention(final int damage, final Card source) {
|
||||||
int damageToDo = damage;
|
int damageToDo = damage;
|
||||||
|
|
||||||
damageToDo = this.replaceDamage(damageToDo, source, false);
|
damageToDo = this.replaceDamage(damageToDo, source, false);
|
||||||
|
|
||||||
this.addDamageAfterPrevention(damageToDo, source, false);
|
return this.addDamageAfterPrevention(damageToDo, source, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
// This function handles damage after replacement and prevention effects are
|
// This function handles damage after replacement and prevention effects are
|
||||||
@@ -116,10 +118,9 @@ public abstract class GameEntity extends MyObservable {
|
|||||||
* a {@link forge.Card} object.
|
* a {@link forge.Card} object.
|
||||||
* @param isCombat
|
* @param isCombat
|
||||||
* a boolean.
|
* a boolean.
|
||||||
|
* @return whether or not damage was dealt
|
||||||
*/
|
*/
|
||||||
public void addDamageAfterPrevention(final int damage, final Card source, final boolean isCombat) {
|
public abstract boolean addDamageAfterPrevention(final int damage, final Card source, final boolean isCombat);
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
@@ -197,9 +198,7 @@ public abstract class GameEntity extends MyObservable {
|
|||||||
* a boolean.
|
* a boolean.
|
||||||
* @return a int.
|
* @return a int.
|
||||||
*/
|
*/
|
||||||
public int replaceDamage(final int damage, final Card source, final boolean isCombat) {
|
public abstract int replaceDamage(final int damage, final Card source, final boolean isCombat);
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
@@ -214,9 +213,7 @@ public abstract class GameEntity extends MyObservable {
|
|||||||
* a boolean.
|
* a boolean.
|
||||||
* @return a int.
|
* @return a int.
|
||||||
*/
|
*/
|
||||||
public int preventDamage(final int damage, final Card source, final boolean isCombat) {
|
public abstract int preventDamage(final int damage, final Card source, final boolean isCombat);
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// ////////////////////////
|
// ////////////////////////
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -1248,6 +1248,7 @@ public class AbilityFactoryDealDamage {
|
|||||||
final ArrayList<Card> definedSources = AbilityFactory.getDefinedCards(sa.getSourceCard(),
|
final ArrayList<Card> definedSources = AbilityFactory.getDefinedCards(sa.getSourceCard(),
|
||||||
params.get("DamageSource"), sa);
|
params.get("DamageSource"), sa);
|
||||||
final Card card = definedSources.get(0);
|
final Card card = definedSources.get(0);
|
||||||
|
final Card source = sa.getSourceCard();
|
||||||
|
|
||||||
final int dmg = this.getNumDamage(sa);
|
final int dmg = this.getNumDamage(sa);
|
||||||
|
|
||||||
@@ -1275,13 +1276,17 @@ public class AbilityFactoryDealDamage {
|
|||||||
list = AbilityFactory.filterListByType(list, params.get("ValidCards"), sa);
|
list = AbilityFactory.filterListByType(list, params.get("ValidCards"), sa);
|
||||||
|
|
||||||
for (final Card c : list) {
|
for (final Card c : list) {
|
||||||
c.addDamage(dmg, card);
|
if (c.addDamage(dmg, card) && params.containsKey("RememberDamaged")) {
|
||||||
|
source.addRemembered(c);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!players.equals("")) {
|
if (!players.equals("")) {
|
||||||
final ArrayList<Player> playerList = AbilityFactory.getDefinedPlayers(card, players, sa);
|
final ArrayList<Player> playerList = AbilityFactory.getDefinedPlayers(card, players, sa);
|
||||||
for (final Player p : playerList) {
|
for (final Player p : playerList) {
|
||||||
p.addDamage(dmg, card);
|
if (p.addDamage(dmg, card) && params.containsKey("RememberDamaged")) {
|
||||||
|
source.addRemembered(p);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -516,10 +516,16 @@ public abstract class Player extends GameEntity {
|
|||||||
* a {@link forge.Card} object.
|
* a {@link forge.Card} object.
|
||||||
* @param isCombat
|
* @param isCombat
|
||||||
* a boolean.
|
* a boolean.
|
||||||
|
* @return whether or not damage was dealt
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public final void addDamageAfterPrevention(final int damage, final Card source, final boolean isCombat) {
|
public final boolean addDamageAfterPrevention(final int damage, final Card source, final boolean isCombat) {
|
||||||
final int damageToDo = damage;
|
final int damageToDo = damage;
|
||||||
|
|
||||||
|
if (damageToDo == 0) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
boolean infect = source.hasKeyword("Infect");
|
boolean infect = source.hasKeyword("Infect");
|
||||||
final StringBuilder sb = new StringBuilder(
|
final StringBuilder sb = new StringBuilder(
|
||||||
"As long as you have 0 or less life, all damage is dealt to you as though its source had infect.");
|
"As long as you have 0 or less life, all damage is dealt to you as though its source had infect.");
|
||||||
@@ -547,7 +553,7 @@ public abstract class Player extends GameEntity {
|
|||||||
this.loseLife(damageToDo, source);
|
this.loseLife(damageToDo, source);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (damageToDo > 0) {
|
|
||||||
this.addAssignedDamage(damageToDo, source);
|
this.addAssignedDamage(damageToDo, source);
|
||||||
GameActionUtil.executeDamageDealingEffects(source, damageToDo);
|
GameActionUtil.executeDamageDealingEffects(source, damageToDo);
|
||||||
GameActionUtil.executeDamageToPlayerEffects(this, source, damageToDo);
|
GameActionUtil.executeDamageToPlayerEffects(this, source, damageToDo);
|
||||||
@@ -566,7 +572,8 @@ public abstract class Player extends GameEntity {
|
|||||||
runParams.put("DamageAmount", damageToDo);
|
runParams.put("DamageAmount", damageToDo);
|
||||||
runParams.put("IsCombatDamage", isCombat);
|
runParams.put("IsCombatDamage", isCombat);
|
||||||
AllZone.getTriggerHandler().runTrigger(TriggerType.DamageDone, runParams);
|
AllZone.getTriggerHandler().runTrigger(TriggerType.DamageDone, runParams);
|
||||||
}
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user