Big Update :). Allowed the SubtractLife command in PlayerLife to take a Source Card and updated all code for this change(Do not want to do that again). As a result of this, i had to remove the AddLife(Player,Life),AddDamage(Player,Damage) commands from GameAction. Expanded the Whenever keyword with the DealsDamage/Opponent option so it can trigger when a card deals damage to an opponent and added a draw card effect for the keyword. Added Curiosity (Niv-Mizzet fans rejoice! :))

This commit is contained in:
jendave
2011-08-06 05:15:08 +00:00
parent 6c98ed686f
commit 138698d28c
15 changed files with 299 additions and 197 deletions

View File

@@ -38,6 +38,7 @@ snow_covered_mountain.jpg http://www.wizards.com/global/images/magic/gene
snow_covered_mountain1.jpg http://www.wizards.com/global/images/magic/general/snow_covered_mountain.jpg
snow_covered_mountain2.jpg http://www.magickartenmarkt.de/img/cards/Ice_Age/snow_covered_mountain.jpg
snow_covered_mountain3.jpg http://www.magickartenmarkt.de/img/cards/Ice_Age/snow_covered_mountain.jpg
curiosity.jpg http://www.wizards.com/global/images/magic/general/curiosity.jpg
pyretic_ritual.jpg http://www.wizards.com/global/images/magic/general/pyretic_ritual.jpg
angelic_chorus.jpg http://www.wizards.com/global/images/magic/general/angelic_chorus.jpg
ajanis_pridemate.jpg http://www.wizards.com/global/images/magic/general/ajanis_pridemate.jpg

View File

@@ -1,3 +1,11 @@
Curiosity
U
Enchantment Aura
no text
Enchant creature
enPump:+0/+0
WheneverKeyword:DealsDamage/Opponent:Enchanted_Creature:Play:DrawCards/1:ControllingPlayer_Self:ASAP:Yes_No:No Special Condition:Whenever enchanted creature deals damage to an opponent, you may draw a card.
Pyretic Ritual
1 R
Instant

View File

@@ -1523,7 +1523,7 @@ public class CardFactory implements NewConstants {
tgtP = c.getController();
}
} else {
AllZone.GameAction.addDamage(getTargetPlayer(), damage);
AllZone.GameAction.addDamage(getTargetPlayer(), damage,card);
tgtP = getTargetPlayer();
}
@@ -2001,7 +2001,7 @@ public class CardFactory implements NewConstants {
}
}
} else {
AllZone.GameAction.getPlayerLife(getTargetPlayer()).subtractLife(dmg[0]);
AllZone.GameAction.getPlayerLife(getTargetPlayer()).subtractLife(dmg[0],card);
if(card.getKeyword().contains("Lifelink")) GameActionUtil.executeLifeLinkEffects(
card, dmg[0]);
@@ -2049,7 +2049,7 @@ public class CardFactory implements NewConstants {
}
} else {
AllZone.GameAction.getPlayerLife(getTargetPlayer()).subtractLife(dmg[0]);
AllZone.GameAction.getPlayerLife(getTargetPlayer()).subtractLife(dmg[0],card);
if(card.getKeyword().contains("Lifelink")) GameActionUtil.executeLifeLinkEffects(
card, dmg[0]);
@@ -2099,7 +2099,7 @@ public class CardFactory implements NewConstants {
}
}
} else {
AllZone.GameAction.getPlayerLife(getTargetPlayer()).subtractLife(dmg[0]);
AllZone.GameAction.getPlayerLife(getTargetPlayer()).subtractLife(dmg[0],card);
if(card.getKeyword().contains("Lifelink")) GameActionUtil.executeLifeLinkEffects(
card, dmg[0]);
@@ -2665,7 +2665,7 @@ public class CardFactory implements NewConstants {
else
TgtPlayer = card.getController();
AllZone.GameAction.subLife(TgtPlayer, nlife);
AllZone.GameAction.getPlayerLife(TgtPlayer).subtractLife(nlife,card);
if (!DrawBack[0].equals("none"))
CardFactoryUtil.doDrawBack(DrawBack[0], nlife, card.getController(), AllZone.GameAction.getOpponent(card.getController()), TgtPlayer, card, null);
@@ -2832,7 +2832,7 @@ public class CardFactory implements NewConstants {
else
TgtPlayer = card.getController();
AllZone.GameAction.subLife(TgtPlayer, nlife);
AllZone.GameAction.getPlayerLife(TgtPlayer).subtractLife(nlife,card);
if (!DrawBack[0].equals("none"))
CardFactoryUtil.doDrawBack(DrawBack[0], nlife, card.getController(), AllZone.GameAction.getOpponent(card.getController()), TgtPlayer, card, null);
@@ -2893,7 +2893,7 @@ public class CardFactory implements NewConstants {
else
TgtPlayer = card.getController();
AllZone.GameAction.subLife(TgtPlayer, nlife);
AllZone.GameAction.getPlayerLife(TgtPlayer).subtractLife(nlife,card);
if (!DrawBack[0].equals("none"))
CardFactoryUtil.doDrawBack(DrawBack[0], nlife, card.getController(), AllZone.GameAction.getOpponent(card.getController()), TgtPlayer, card, null);
@@ -3022,7 +3022,7 @@ public class CardFactory implements NewConstants {
else
TgtPlayer = card.getController();
AllZone.GameAction.addLife(TgtPlayer, nlife);
AllZone.GameAction.getPlayerLife(TgtPlayer).addLife(nlife);
if (!DrawBack[0].equals("none"))
CardFactoryUtil.doDrawBack(DrawBack[0], nlife, card.getController(), AllZone.GameAction.getOpponent(card.getController()), TgtPlayer, card, null);
@@ -3181,8 +3181,7 @@ public class CardFactory implements NewConstants {
else
TgtPlayer = card.getController();
AllZone.GameAction.addLife(TgtPlayer, nlife);
AllZone.GameAction.getPlayerLife(TgtPlayer).addLife(nlife);
if (!DrawBack[0].equals("none"))
CardFactoryUtil.doDrawBack(DrawBack[0], nlife, card.getController(), AllZone.GameAction.getOpponent(card.getController()), TgtPlayer, card, null);
}//resolve()
@@ -3240,7 +3239,7 @@ public class CardFactory implements NewConstants {
else
TgtPlayer = card.getController();
AllZone.GameAction.addLife(TgtPlayer, nlife);
AllZone.GameAction.getPlayerLife(TgtPlayer).addLife(nlife);
if (!DrawBack[0].equals("none"))
CardFactoryUtil.doDrawBack(DrawBack[0], nlife, card.getController(), AllZone.GameAction.getOpponent(card.getController()), TgtPlayer, card, null);
@@ -3994,7 +3993,7 @@ public class CardFactory implements NewConstants {
@Override
public void resolve()
{
AllZone.GameAction.getPlayerLife(getController()).subtractLife(amountHurt);
AllZone.GameAction.getPlayerLife(getController()).subtractLife(amountHurt,card);
super.resolve();
}
@@ -4494,8 +4493,8 @@ public class CardFactory implements NewConstants {
if(CardFactoryUtil.canDamage(card, list.get(i))) list.get(i).addDamage(1, card);
}
AllZone.Human_Life.subtractLife(1);
AllZone.Computer_Life.subtractLife(1);
AllZone.Human_Life.subtractLife(1,card);
AllZone.Computer_Life.subtractLife(1,card);
}//resolve()
};//SpellAbility
ability.setDescription("R: Pyrohemia deals 1 damage to each creature and each player.");
@@ -4550,8 +4549,8 @@ public class CardFactory implements NewConstants {
if(CardFactoryUtil.canDamage(card, list.get(i))) list.get(i).addDamage(1, card);
}
AllZone.Human_Life.subtractLife(1);
AllZone.Computer_Life.subtractLife(1);
AllZone.Human_Life.subtractLife(1,card);
AllZone.Computer_Life.subtractLife(1,card);
}//resolve()
};//SpellAbility
ability.setDescription("B: Pestilence deals 1 damage to each creature and each player.");
@@ -5047,7 +5046,7 @@ public class CardFactory implements NewConstants {
if(AllZone.GameAction.isCardInPlay(getTargetCard())
&& CardFactoryUtil.canTarget(card, getTargetCard())) {
PlayerLife life = AllZone.GameAction.getPlayerLife(card.getController());
life.subtractLife(getTargetCard().getNetDefense());
life.subtractLife(getTargetCard().getNetDefense(),card);
AllZone.GameAction.destroyNoRegeneration(getTargetCard());
}
}//resolve()
@@ -5462,7 +5461,7 @@ public class CardFactory implements NewConstants {
Card c = getTargetCard();
if(AllZone.GameAction.isCardInPlay(c) && CardFactoryUtil.canTarget(card, c)) {
if(!c.getType().contains("Basic")) AllZone.GameAction.getPlayerLife(c.getController()).subtractLife(
2);
2,card);
AllZone.GameAction.destroy(c);
}
@@ -5975,7 +5974,7 @@ public class CardFactory implements NewConstants {
}
PlayerLife life = AllZone.GameAction.getPlayerLife(card.getController());
life.subtractLife(5);
life.subtractLife(5,card);
}//resolve()
};//SpellAbility
@@ -6504,7 +6503,7 @@ public class CardFactory implements NewConstants {
if(cardName.equals("Grim Tutor")) {
String player = Constant.Player.Human;
PlayerLife life = AllZone.GameAction.getPlayerLife(player);
life.subtractLife(3);
life.subtractLife(3,card);
}
}
@@ -6523,7 +6522,7 @@ public class CardFactory implements NewConstants {
if(cardName.equals("Grim Tutor")) {
String player = Constant.Player.Computer;
PlayerLife life = AllZone.GameAction.getPlayerLife(player);
life.subtractLife(3);
life.subtractLife(3,card);
}
}
@@ -6677,7 +6676,7 @@ public class CardFactory implements NewConstants {
done();
} else AllZone.GameAction.moveToGraveyard(card);
} else {
AllZone.GameAction.getPlayerLife(getTargetPlayer()).subtractLife(5);
AllZone.GameAction.getPlayerLife(getTargetPlayer()).subtractLife(5,card);
done();
}
}//resolve()
@@ -7828,8 +7827,8 @@ public class CardFactory implements NewConstants {
if(getTargetCard() != null) {
if(AllZone.GameAction.isCardInPlay(getTargetCard())
&& CardFactoryUtil.canTarget(card, getTargetCard())) getTargetCard().addDamage(1,card);
} else AllZone.GameAction.getPlayerLife(getTargetPlayer()).subtractLife(1);
} else AllZone.GameAction.getPlayerLife(AllZone.GameAction.getOpponent(card.getController())).subtractLife(1);
} else AllZone.GameAction.getPlayerLife(getTargetPlayer()).subtractLife(1,card);
} else AllZone.GameAction.getPlayerLife(AllZone.GameAction.getOpponent(card.getController())).subtractLife(1,card);
};
};
card.clearSpellAbility();
@@ -7883,7 +7882,7 @@ public class CardFactory implements NewConstants {
}
AllZone.Display.getChoice("Random card", handChoices);
AllZone.GameAction.getPlayerLife(opponent).subtractLife(
CardUtil.getConvertedManaCost(choice.getManaCost()));
CardUtil.getConvertedManaCost(choice.getManaCost()),card);
}
}//resolve()
};
@@ -8218,7 +8217,7 @@ public class CardFactory implements NewConstants {
// Opponent Loses 5 Life
PlayerLife target = AllZone.GameAction.getPlayerLife(opponent);
target.subtractLife(5);
target.subtractLife(5,card);
// Player Returns Creature Card from Graveyard to Hand
if(player == "Human") {
@@ -8299,7 +8298,7 @@ public class CardFactory implements NewConstants {
PlayerLife player = AllZone.GameAction.getPlayerLife(card.getController());
String opponent = AllZone.GameAction.getOpponent(card.getController());
PlayerLife target = AllZone.GameAction.getPlayerLife(opponent);
target.subtractLife(2);
target.subtractLife(2,card);
player.addLife(2);
}
@@ -8324,7 +8323,7 @@ public class CardFactory implements NewConstants {
AllZone.GameAction.destroy(getTargetCard());
CardList Grave = new CardList(AllZone.getZone(Constant.Zone.Graveyard, getTargetCard().getController()).getCards());
int Damage = (Grave.getType("Land")).size();
AllZone.GameAction.getPlayerLife(getTargetCard().getController()).subtractLife(Damage);
AllZone.GameAction.getPlayerLife(getTargetCard().getController()).subtractLife(Damage,card);
}
}
@Override
@@ -8664,7 +8663,7 @@ public class CardFactory implements NewConstants {
//lose half life
String player = Constant.Player.Human;
PlayerLife life = AllZone.GameAction.getPlayerLife(player);
life.subtractLife(life.getLife() / 2);
life.subtractLife(life.getLife() / 2,card);
}
@Override
@@ -9259,10 +9258,10 @@ public class CardFactory implements NewConstants {
}
PlayerLife compLife = AllZone.GameAction.getPlayerLife(Constant.Player.Computer);
compLife.subtractLife(2);
compLife.subtractLife(2,card);
PlayerLife humLife = AllZone.GameAction.getPlayerLife(Constant.Player.Human);
humLife.subtractLife(2);
humLife.subtractLife(2,card);
}
@@ -9333,8 +9332,8 @@ public class CardFactory implements NewConstants {
}
}
AllZone.Human_Life.subtractLife(3);
AllZone.Computer_Life.subtractLife(3);
AllZone.Human_Life.subtractLife(3,card);
AllZone.Computer_Life.subtractLife(3,card);
}
};
card.clearSpellAbility();
@@ -9421,7 +9420,7 @@ public class CardFactory implements NewConstants {
@Override
public void resolve() {
PlayerLife life = AllZone.GameAction.getPlayerLife(card.getController());
life.subtractLife(1);
life.subtractLife(1,card);
}
};
ability2.setStackDescription(card.getController() + " looses 1 life");
@@ -9716,7 +9715,7 @@ public class CardFactory implements NewConstants {
@Override
public void resolve() {
if(cardName.equals("Thoughtseize")) AllZone.GameAction.getPlayerLife(card.getController()).subtractLife(
2);
2,card);
Card choice = null;
@@ -10091,7 +10090,7 @@ public class CardFactory implements NewConstants {
Card c = getTargetCard();
c.addDamage(damage, card);
}
} else AllZone.GameAction.getPlayerLife(getTargetPlayer()).subtractLife(damage);
} else AllZone.GameAction.getPlayerLife(getTargetPlayer()).subtractLife(damage,card);
}
};//SpellAbility
@@ -10154,7 +10153,7 @@ public class CardFactory implements NewConstants {
Card c = getTargetCard();
c.addDamage(damage, card);
}
} else AllZone.GameAction.getPlayerLife(getTargetPlayer()).subtractLife(damage);
} else AllZone.GameAction.getPlayerLife(getTargetPlayer()).subtractLife(damage,card);
grave.remove(card);
removed.add(card);
@@ -10234,7 +10233,7 @@ public class CardFactory implements NewConstants {
} else {
javax.swing.JOptionPane.showMessageDialog(null, "Erratic Explosion causes " + damage
+ " to " + getTargetPlayer());
AllZone.GameAction.getPlayerLife(getTargetPlayer()).subtractLife(damage);
AllZone.GameAction.getPlayerLife(getTargetPlayer()).subtractLife(damage,card);
}
}
@@ -10272,7 +10271,7 @@ public class CardFactory implements NewConstants {
@Override
public void resolve() {
PlayerLife life = AllZone.GameAction.getPlayerLife(getTargetPlayer());
if(life.getLife() == 10) life.subtractLife(10);
if(life.getLife() == 10) life.subtractLife(10,card);
}
/*
@@ -10638,7 +10637,7 @@ public class CardFactory implements NewConstants {
for(int i = 0; i <card.getChoices().size(); i++) {
if(card.getChoice(i).equals(cardChoice[0])) {
setTargetPlayer(card.getChoiceTarget(0));
AllZone.GameAction.getPlayerLife(getTargetPlayer()).subtractLife(4);
AllZone.GameAction.getPlayerLife(getTargetPlayer()).subtractLife(4,card);
}
}
@@ -13231,7 +13230,7 @@ public class CardFactory implements NewConstants {
@Override
public void showMessage() {
AllZone.GameAction.getPlayerLife(card.getController()).subtractLife(1);
AllZone.GameAction.getPlayerLife(card.getController()).subtractLife(1,card);
//this order is very important, do not change
stop();
@@ -13295,7 +13294,7 @@ public class CardFactory implements NewConstants {
@Override
public void showMessage() {
AllZone.GameAction.getPlayerLife(card.getController()).subtractLife(1);
AllZone.GameAction.getPlayerLife(card.getController()).subtractLife(1,card);
//this order is very important, do not change
stop();
@@ -13409,7 +13408,7 @@ public class CardFactory implements NewConstants {
AllZone.GameAction.moveToGraveyard(sa.getSourceCard());
String opponent = AllZone.GameAction.getOpponent(card.getController());
AllZone.GameAction.getPlayerLife(opponent).subtractLife(3);
AllZone.GameAction.getPlayerLife(opponent).subtractLife(3,card);
}
@@ -13440,7 +13439,7 @@ public class CardFactory implements NewConstants {
AllZone.GameAction.moveToGraveyard(sa.getSourceCard());
String opponent = AllZone.GameAction.getOpponent(card.getController());
AllZone.GameAction.getPlayerLife(opponent).subtractLife(3);
AllZone.GameAction.getPlayerLife(opponent).subtractLife(3,card);
String player = card.getController();
AllZone.GameAction.getPlayerLife(player).addLife(3);
@@ -15075,7 +15074,7 @@ public class CardFactory implements NewConstants {
if(AllZone.GameAction.isCardInPlay(getTargetCard())
&& CardFactoryUtil.canTarget(card, getTargetCard())) getTargetCard().addDamage(2,
card);
} else AllZone.GameAction.getPlayerLife(getTargetPlayer()).subtractLife(2);
} else AllZone.GameAction.getPlayerLife(getTargetPlayer()).subtractLife(2,card);
AllZone.GameAction.sacrifice(getSourceCard());
}//resolve()
};//Ability_Activated
@@ -15281,7 +15280,7 @@ public class CardFactory implements NewConstants {
//lose 2 life
String player = Constant.Player.Computer;
PlayerLife life = AllZone.GameAction.getPlayerLife(player);
life.subtractLife(2);
life.subtractLife(2,card);
}
}//computerResolve()
@@ -15302,7 +15301,7 @@ public class CardFactory implements NewConstants {
//lose 2 life
String player = Constant.Player.Human;
PlayerLife life = AllZone.GameAction.getPlayerLife(player);
life.subtractLife(2);
life.subtractLife(2,card);
}//if
@@ -16816,7 +16815,7 @@ public class CardFactory implements NewConstants {
//c.addDamage(damage);
AllZone.GameAction.addDamage(c, card, 5);
}
} else AllZone.GameAction.getPlayerLife(getTargetPlayer()).subtractLife(5);
} else AllZone.GameAction.getPlayerLife(getTargetPlayer()).subtractLife(5,card);
//resolve()
}
}; //spellAbility
@@ -17206,7 +17205,7 @@ public class CardFactory implements NewConstants {
if(AllZone.GameAction.isCardInPlay(getTargetCard())
&& CardFactoryUtil.canTarget(card, getTargetCard())) getTargetCard().addDamage(2,
card);
} else AllZone.GameAction.getPlayerLife(getTargetPlayer()).subtractLife(2);
} else AllZone.GameAction.getPlayerLife(getTargetPlayer()).subtractLife(2,card);
}//resolve()
};//SpellAbility
@@ -17507,7 +17506,7 @@ public class CardFactory implements NewConstants {
AllZone.GameAction.discardRandom(card.getController(), handList.size());
PlayerLife life = AllZone.GameAction.getPlayerLife(getTargetPlayer());
life.subtractLife(5);
life.subtractLife(5,card);
}
};
spell.setChooseTargetAI(CardFactoryUtil.AI_targetHuman());
@@ -17682,7 +17681,7 @@ public class CardFactory implements NewConstants {
&& CardFactoryUtil.canTarget(card, getTargetCard())) {
getTargetCard().addDamage(damage, card);
}
} else AllZone.GameAction.getPlayerLife(getTargetPlayer()).subtractLife(damage);
} else AllZone.GameAction.getPlayerLife(getTargetPlayer()).subtractLife(damage,card);
}
};
ability.setDescription("3, tap: Reveal cards from the top of your library until you reveal a land card. Goblin Charbelcher deals damage equal to the number of nonland cards revealed this way to target creature or player. If the revealed land card was a Mountain, Goblin Charbelcher deals double that damage instead. Put the revealed cards on the bottom of your library in any order.");
@@ -18522,8 +18521,8 @@ public class CardFactory implements NewConstants {
@Override
public void resolve() {
AllZone.Human_Life.subtractLife(4);
AllZone.Computer_Life.subtractLife(4);
AllZone.Human_Life.subtractLife(4,card);
AllZone.Computer_Life.subtractLife(4,card);
}
@Override
@@ -18578,7 +18577,7 @@ public class CardFactory implements NewConstants {
public void resolve() {
Card c = card;
PlayerLife life = AllZone.GameAction.getPlayerLife(c.getController());
life.subtractLife(20);
life.subtractLife(20,card);
}
};
@@ -18982,7 +18981,7 @@ public class CardFactory implements NewConstants {
&& !c.equals(card)) {
AllZone.GameAction.removeFromGame(c);
String player = card.getController();
AllZone.GameAction.getPlayerLife(player).subtractLife(1);
AllZone.GameAction.getPlayerLife(player).subtractLife(1,card);
count++;
if(count == stop) {
@@ -19399,8 +19398,8 @@ public class CardFactory implements NewConstants {
for(int i = 0; i < all.size(); i++)
all.get(i).addDamage(card.getXManaCostPaid(), card);
AllZone.GameAction.addDamage(Constant.Player.Human, damage);
AllZone.GameAction.addDamage(Constant.Player.Computer, damage);
AllZone.GameAction.addDamage(Constant.Player.Human, damage,card);
AllZone.GameAction.addDamage(Constant.Player.Computer, damage,card);
card.setXManaCostPaid(0);
}
@@ -19468,8 +19467,8 @@ public class CardFactory implements NewConstants {
for(int i = 0; i < all.size(); i++)
all.get(i).addDamage(card.getXManaCostPaid(), card);
AllZone.GameAction.addDamage(Constant.Player.Human, damage);
AllZone.GameAction.addDamage(Constant.Player.Computer, damage);
AllZone.GameAction.addDamage(Constant.Player.Human, damage,card);
AllZone.GameAction.addDamage(Constant.Player.Computer, damage,card);
card.setXManaCostPaid(0);
}
@@ -19813,7 +19812,7 @@ public class CardFactory implements NewConstants {
CardList attackers = new CardList();
attackers.addAll(AllZone.Combat.getAttackers());
attackers.addAll(AllZone.pwCombat.getAttackers());
AllZone.GameAction.addLife(card.getController(), attackers.size());
AllZone.GameAction.getPlayerLife(card.getController()).addLife(attackers.size());
}
}
public boolean canPlayAI()
@@ -19858,8 +19857,8 @@ public class CardFactory implements NewConstants {
for(int i = 0; i < all.size(); i++)
all.get(i).addDamage(card.getXManaCostPaid(), card);
AllZone.GameAction.addDamage(Constant.Player.Human, damage);
AllZone.GameAction.addDamage(Constant.Player.Computer, damage);
AllZone.GameAction.addDamage(Constant.Player.Human, damage,card);
AllZone.GameAction.addDamage(Constant.Player.Computer, damage,card);
card.setXManaCostPaid(0);
}
@@ -20074,7 +20073,7 @@ public class CardFactory implements NewConstants {
list.get(i).addDamage(card.getXManaCostPaid(), card);
}
AllZone.GameAction.addDamage(player, damage);
AllZone.GameAction.addDamage(player, damage,card);
card.setXManaCostPaid(0);
}
public boolean canPlayAI()
@@ -20926,7 +20925,7 @@ public class CardFactory implements NewConstants {
Card c = all.get(i);
AllZone.GameAction.destroy(c);
}
AllZone.GameAction.addLife(player, all.size()*2);
AllZone.GameAction.getPlayerLife(player).addLife(all.size()*2);
}// resolve()
@Override
@@ -21068,7 +21067,7 @@ public class CardFactory implements NewConstants {
Card c = getTargetCard();
c.addDamage(damage, card);
}
} else AllZone.GameAction.getPlayerLife(getTargetPlayer()).subtractLife(damage);
} else AllZone.GameAction.getPlayerLife(getTargetPlayer()).subtractLife(damage,card);
}
};//SpellAbility
@@ -21120,7 +21119,7 @@ public class CardFactory implements NewConstants {
Card c = getTargetCard();
c.addDamage(damage, card);
}
} else AllZone.GameAction.getPlayerLife(getTargetPlayer()).subtractLife(damage);
} else AllZone.GameAction.getPlayerLife(getTargetPlayer()).subtractLife(damage,card);
card.setKicked(true);
}
@@ -21540,7 +21539,7 @@ public class CardFactory implements NewConstants {
}
}
AllZone.GameAction.getPlayerLife(tPlayer).subtractLife(X);
AllZone.GameAction.getPlayerLife(tPlayer).subtractLife(X,card);
AllZone.GameAction.getPlayerLife(player).addLife(X);
card.setXManaCostPaid(0);
}
@@ -22573,8 +22572,8 @@ public class CardFactory implements NewConstants {
for(Card c:all) {
AllZone.GameAction.addDamage(c, card, damage);
}
AllZone.GameAction.addDamage(Constant.Player.Computer, damage);
AllZone.GameAction.addDamage(Constant.Player.Human, damage);
AllZone.GameAction.addDamage(Constant.Player.Computer, damage,card);
AllZone.GameAction.addDamage(Constant.Player.Human, damage,card);
}// resolve()
@Override
@@ -22903,7 +22902,7 @@ public class CardFactory implements NewConstants {
AllZone.GameAction.moveTo(play, c);
c.setController(card.getController());
}
AllZone.GameAction.getPlayerLife(c.getController()).subtractLife(cmc);
AllZone.GameAction.getPlayerLife(c.getController()).subtractLife(cmc,card);
}//resolve()
@Override

View File

@@ -793,7 +793,7 @@ public class CardFactoryUtil {
grave.remove(sourceCard);
removed.add(sourceCard);
AllZone.GameAction.getPlayerLife(sourceCard.getController()).subtractLife(loss);
AllZone.GameAction.getPlayerLife(sourceCard.getController()).subtractLife(loss,sourceCard);
}
@@ -3560,11 +3560,11 @@ public class CardFactoryUtil {
if(d[0].contains("GainLife")) AllZone.GameAction.addLife(dbPlayer, X);
if(d[0].contains("GainLife")) AllZone.GameAction.getPlayerLife(dbPlayer).addLife(X);
if(d[0].contains("LoseLifeTgtCtrlr")) //2/10
AllZone.GameAction.subLife(TgtC.getController(), X);
else if(d[0].contains("LoseLife")) AllZone.GameAction.subLife(dbPlayer, X);
AllZone.GameAction.getPlayerLife(TgtC.getController()).subtractLife(X,Src);
else if(d[0].contains("LoseLife")) AllZone.GameAction.getPlayerLife(dbPlayer).subtractLife(X,Src);
if(d[0].contains("Discard")) {
if(d.length > 2) {

View File

@@ -73,7 +73,7 @@ public class CardFactory_Creatures {
SpellAbility ability = new Ability(card, "0") {
@Override
public void resolve() {
AllZone.GameAction.getPlayerLife(getController()).subtractLife(n);
AllZone.GameAction.getPlayerLife(getController()).subtractLife(n,card);
}
};
ability.setStackDescription("Filthy Cur - causes " + n + " damage to " + getController());
@@ -352,7 +352,7 @@ public class CardFactory_Creatures {
@Override
public void resolve() {
AllZone.GameAction.getPlayerLife(card.getController()).subtractLife(2);
AllZone.GameAction.getPlayerLife(card.getController()).subtractLife(2,card);
AllZone.GameAction.discard(card);
AllZone.GameAction.drawCard(card.getController());
card.cycle();
@@ -375,7 +375,7 @@ public class CardFactory_Creatures {
SpellAbility ability = new Ability(card, "0") {
@Override
public void resolve() {
AllZone.GameAction.getPlayerLife(getController()).subtractLife(n);
AllZone.GameAction.getPlayerLife(getController()).subtractLife(n,card);
}
};
ability.setStackDescription("Shinka Gatekeeper - causes " + n + " damage to "
@@ -411,7 +411,7 @@ public class CardFactory_Creatures {
SpellAbility ability = new Ability(card, "0") {
@Override
public void resolve() {
AllZone.GameAction.getPlayerLife(getController()).subtractLife(n);
AllZone.GameAction.getPlayerLife(getController()).subtractLife(n,card);
}
};
ability.setStackDescription("Jackal Pup - causes " + n + " damage to " + getController());
@@ -449,7 +449,7 @@ public class CardFactory_Creatures {
SpellAbility ability = new Ability(card, "0") {
@Override
public void resolve() {
AllZone.GameAction.getPlayerLife(opponent).subtractLife(n);
AllZone.GameAction.getPlayerLife(opponent).subtractLife(n,card);
if(c.getKeyword().contains("Lifelink")) GameActionUtil.executeLifeLinkEffects(c, n);
@@ -1879,7 +1879,7 @@ public class CardFactory_Creatures {
public void resolve() {
if(getTargetCard() != null && CardFactoryUtil.canDamage(card, getTargetCard())
&& CardFactoryUtil.canTarget(card, getTargetCard())) getTargetCard().addDamage(3, card);
else AllZone.GameAction.getPlayerLife(getTargetPlayer()).subtractLife(3);
else AllZone.GameAction.getPlayerLife(getTargetPlayer()).subtractLife(3,card);
}
};
Command leavesPlay = new Command() {
@@ -2178,7 +2178,7 @@ public class CardFactory_Creatures {
@Override
public void resolve() {
PlayerLife life = AllZone.GameAction.getPlayerLife(card.getController());
life.subtractLife(2);
life.subtractLife(2,card);
AllZone.GameAction.drawCard(card.getController());
AllZone.GameAction.drawCard(card.getController());
@@ -2202,7 +2202,7 @@ public class CardFactory_Creatures {
@Override
public void resolve() {
PlayerLife life = AllZone.GameAction.getPlayerLife(card.getController());
life.subtractLife(1);
life.subtractLife(1,card);
AllZone.GameAction.drawCard(card.getController());
}//resolve()
@@ -2369,7 +2369,7 @@ public class CardFactory_Creatures {
@Override
public void resolve() {
PlayerLife life = AllZone.GameAction.getPlayerLife(card.getController());
life.subtractLife(3);
life.subtractLife(3,card);
}//resolve()
};//SpellAbility
Command intoPlay = new Command() {
@@ -2594,7 +2594,7 @@ public class CardFactory_Creatures {
PlayerLife opp = AllZone.GameAction.getPlayerLife(opponent);
PlayerLife my = AllZone.GameAction.getPlayerLife(card.getController());
opp.subtractLife(5);
opp.subtractLife(5,card);
my.addLife(5);
}
};
@@ -2714,7 +2714,7 @@ public class CardFactory_Creatures {
AllZone.GameInfo.addHumanCanPlayNumberOfLands(-1);
if(AllZone.GameInfo.humanPlayedFirstLandThisTurn() == true) {
for(int i = 0; i < Fastbond.size(); i++)
AllZone.GameAction.addDamage(card.getController(), 1);
AllZone.GameAction.addDamage(card.getController(), 1,Fastbond.get(0));
}
AllZone.GameInfo.setHumanPlayedFirstLandThisTurn(true);
}
@@ -2722,7 +2722,7 @@ public class CardFactory_Creatures {
AllZone.GameInfo.addComputerCanPlayNumberOfLands(-1);
if(AllZone.GameInfo.computerPlayedFirstLandThisTurn() == true) {
for(int i = 0; i < Fastbond.size(); i++)
AllZone.GameAction.addDamage(card.getController(), 1);
AllZone.GameAction.addDamage(card.getController(), 1,Fastbond.get(0));
}
AllZone.GameInfo.setComputerPlayedFirstLandThisTurn(true);
}
@@ -2753,7 +2753,7 @@ public class CardFactory_Creatures {
@Override
public void resolve() {
String opponent = AllZone.GameAction.getOpponent(card.getController());
AllZone.GameAction.getPlayerLife(opponent).subtractLife(2);
AllZone.GameAction.getPlayerLife(opponent).subtractLife(2,card);
AllZone.GameAction.getPlayerLife(card.getController()).addLife(2);
}
@@ -2788,7 +2788,7 @@ public class CardFactory_Creatures {
@Override
public void resolve() {
AllZone.GameAction.getPlayerLife(card.getController()).subtractLife(3);
AllZone.GameAction.getPlayerLife(card.getController()).subtractLife(3,card);
}
};
Command intoPlay = new Command() {
@@ -2807,7 +2807,7 @@ public class CardFactory_Creatures {
final SpellAbility ability = new Ability(card, "0") {
@Override
public void resolve() {
AllZone.GameAction.getPlayerLife(card.getController()).subtractLife(5);
AllZone.GameAction.getPlayerLife(card.getController()).subtractLife(5,card);
}
@Override
@@ -2843,7 +2843,7 @@ public class CardFactory_Creatures {
final SpellAbility ability = new Ability(card, "0") {
@Override
public void resolve() {
AllZone.GameAction.getPlayerLife(card.getController()).subtractLife(2);
AllZone.GameAction.getPlayerLife(card.getController()).subtractLife(2,card);
}
@Override
@@ -2973,7 +2973,7 @@ public class CardFactory_Creatures {
@Override
public void resolve() {
String opponent = AllZone.GameAction.getOpponent(card.getController());
AllZone.GameAction.getPlayerLife(opponent).subtractLife(4);
AllZone.GameAction.getPlayerLife(opponent).subtractLife(4,card);
}
};
Command intoPlay = new Command() {
@@ -5393,7 +5393,7 @@ public class CardFactory_Creatures {
Card c = getTargetCard();
c.addDamage(damage, card);
}
} else AllZone.GameAction.getPlayerLife(getTargetPlayer()).subtractLife(damage);
} else AllZone.GameAction.getPlayerLife(getTargetPlayer()).subtractLife(damage,card);
}
}//resolve()
};//SpellAbility
@@ -5427,7 +5427,7 @@ public class CardFactory_Creatures {
@Override
public void selectPlayer(String player) {
int damage = ((Integer) countZubera.execute()).intValue();
AllZone.GameAction.getPlayerLife(player).subtractLife(damage);
AllZone.GameAction.getPlayerLife(player).subtractLife(damage,card);
stop();
}//selectPlayer()
};//Input
@@ -8782,7 +8782,7 @@ public class CardFactory_Creatures {
if(AllZone.GameAction.isCardInPlay(getTargetCard())
&& CardFactoryUtil.canTarget(card, getTargetCard())) getTargetCard().addDamage(1,
card);
} else AllZone.GameAction.getPlayerLife(getTargetPlayer()).subtractLife(1);
} else AllZone.GameAction.getPlayerLife(getTargetPlayer()).subtractLife(1,card);
}//resolve()
};//SpellAbility
@@ -9313,8 +9313,8 @@ public class CardFactory_Creatures {
for(int i = 0; i < list.size(); i++)
list.get(i).addDamage(4, card);
AllZone.Human_Life.subtractLife(4);
AllZone.Computer_Life.subtractLife(4);
AllZone.Human_Life.subtractLife(4,card);
AllZone.Computer_Life.subtractLife(4,card);
}//resolve()
};//SpellAbility
card.addSpellAbility(ability);
@@ -9332,7 +9332,7 @@ public class CardFactory_Creatures {
@Override
public void resolve() {
String opponent = AllZone.GameAction.getOpponent(card.getController());
AllZone.GameAction.getPlayerLife(opponent).subtractLife(2);
AllZone.GameAction.getPlayerLife(opponent).subtractLife(2,card);
AllZone.GameAction.getPlayerLife(card.getController()).addLife(2);
@@ -10990,7 +10990,7 @@ public class CardFactory_Creatures {
//c.addDamage(damage);
AllZone.GameAction.addDamage(crd, card, 2);
}
} else AllZone.GameAction.getPlayerLife(getTargetPlayer()).subtractLife(2);
} else AllZone.GameAction.getPlayerLife(getTargetPlayer()).subtractLife(2,card);
}
}
@@ -11070,7 +11070,7 @@ public class CardFactory_Creatures {
String opponent = AllZone.GameAction.getOpponent(player);
PlayerLife life = AllZone.GameAction.getPlayerLife(opponent);
life.subtractLife(power);
life.subtractLife(power,card);
GameActionUtil.executeLifeLinkEffects(card, power);
@@ -12884,8 +12884,8 @@ public class CardFactory_Creatures {
Card c = card;
PlayerLife life = AllZone.GameAction.getPlayerLife(c.getController());
PlayerLife oppLife = AllZone.GameAction.getPlayerLife(AllZone.GameAction.getOpponent(c.getController()));
life.subtractLife(1);
oppLife.subtractLife(1);
life.subtractLife(1,card);
oppLife.subtractLife(1,card);
}
};
Command intoPlay = new Command() {
@@ -12907,8 +12907,8 @@ public class CardFactory_Creatures {
Card c = card;
PlayerLife life = AllZone.GameAction.getPlayerLife(c.getController());
PlayerLife oppLife = AllZone.GameAction.getPlayerLife(AllZone.GameAction.getOpponent(c.getController()));
life.subtractLife(3);
oppLife.subtractLife(3);
life.subtractLife(3,card);
oppLife.subtractLife(3,card);
}
};
Command intoPlay = new Command() {
@@ -13245,7 +13245,7 @@ public class CardFactory_Creatures {
@Override
public void resolve() {
PlayerLife life = AllZone.GameAction.getPlayerLife(card.getController());
life.subtractLife(1);
life.subtractLife(1,card);
PlayerZone hand = AllZone.getZone(Constant.Zone.Hand, card.getOwner());
if(card.isToken()) AllZone.getZone(card).remove(card);
@@ -14530,7 +14530,7 @@ public class CardFactory_Creatures {
@Override
public void resolve() {
PlayerLife life = AllZone.GameAction.getPlayerLife(card.getController());
life.subtractLife(1);
life.subtractLife(1,card);
PlayerZone hand = AllZone.getZone(Constant.Zone.Hand, card.getOwner());
/*
AllZone.getZone(card).remove(card);
@@ -15313,7 +15313,7 @@ public class CardFactory_Creatures {
@Override
public void resolve() {
String opponent = AllZone.GameAction.getOpponent(card.getController());
AllZone.GameAction.getPlayerLife(opponent).subtractLife(1);
AllZone.GameAction.getPlayerLife(opponent).subtractLife(1,card);
}
@Override
@@ -15373,7 +15373,7 @@ public class CardFactory_Creatures {
lib.remove(0);
grave.add(c);
AllZone.GameAction.getPlayerLife(getTargetPlayer()).subtractLife(1);
AllZone.GameAction.getPlayerLife(getTargetPlayer()).subtractLife(1,card);
}
}
}
@@ -15709,8 +15709,8 @@ public class CardFactory_Creatures {
@Override
public void resolve() {
AllZone.Human_Life.subtractLife(countSwamps("Human"));
AllZone.Computer_Life.subtractLife(countSwamps("Computer"));
AllZone.Human_Life.subtractLife(countSwamps("Human"),card);
AllZone.Computer_Life.subtractLife(countSwamps("Computer"),card);
}
int countSwamps(String player) {
@@ -15908,7 +15908,7 @@ public class CardFactory_Creatures {
@Override
public void resolve() {
PlayerLife target = AllZone.GameAction.getPlayerLife(getTargetPlayer());
target.subtractLife(card.getCounters(Counters.P1P1));
target.subtractLife(card.getCounters(Counters.P1P1),card);
}//resolve()
};
@@ -15986,7 +15986,7 @@ public class CardFactory_Creatures {
if(AllZone.GameAction.isCardInPlay(getTargetCard())
&& CardFactoryUtil.canTarget(card, getTargetCard())) getTargetCard().addDamage(1,
card);
} else AllZone.GameAction.getPlayerLife(getTargetPlayer()).subtractLife(1);
} else AllZone.GameAction.getPlayerLife(getTargetPlayer()).subtractLife(1,card);
}//resolve()
};//SpellAbility
@@ -17288,7 +17288,7 @@ public class CardFactory_Creatures {
if(AllZone.GameAction.isCardInPlay(getTargetCard())
&& CardFactoryUtil.canTarget(card, getTargetCard())) getTargetCard().addDamage(1,
card);
} else AllZone.GameAction.getPlayerLife(getTargetPlayer()).subtractLife(1);
} else AllZone.GameAction.getPlayerLife(getTargetPlayer()).subtractLife(1,card);
}//resolve()
};//SpellAbility
@@ -17373,7 +17373,7 @@ public class CardFactory_Creatures {
final SpellAbility abilityComes = new Ability(card, "0") {
@Override
public void resolve() {
AllZone.GameAction.getPlayerLife(getTargetPlayer()).subtractLife(6);
AllZone.GameAction.getPlayerLife(getTargetPlayer()).subtractLife(6,card);
}//resolve()
};
@@ -17438,7 +17438,7 @@ public class CardFactory_Creatures {
});
int drain = list.size();
AllZone.GameAction.getPlayerLife(AllZone.GameAction.getOpponent(card.getController())).subtractLife(
drain);
drain,card);
AllZone.GameAction.getPlayerLife(card.getController()).addLife(drain);
}//resolve()
@@ -17952,7 +17952,7 @@ public class CardFactory_Creatures {
final Ability ability = new Ability(card, "B B B") {
@Override
public void resolve() {
AllZone.GameAction.getPlayerLife(card.getController()).subtractLife(3);
AllZone.GameAction.getPlayerLife(card.getController()).subtractLife(3,card);
PlayerZone hGrave = AllZone.getZone(Constant.Zone.Graveyard, Constant.Player.Human);
PlayerZone cGrave = AllZone.getZone(Constant.Zone.Graveyard, Constant.Player.Computer);
@@ -18129,7 +18129,7 @@ public class CardFactory_Creatures {
public void resolve() {
String opponent = AllZone.GameAction.getOpponent(card.getController());
PlayerZone hand = AllZone.getZone(Constant.Zone.Hand, opponent);
AllZone.GameAction.getPlayerLife(opponent).subtractLife(1);
AllZone.GameAction.getPlayerLife(opponent).subtractLife(1,card);
Card[] handLook = hand.getCards();
if(opponent.equals(Constant.Player.Computer)) {
AllZone.Display.getChoice("Look", handLook);
@@ -18170,7 +18170,7 @@ public class CardFactory_Creatures {
}
AllZone.Display.getChoice("Random card", handChoices);
AllZone.GameAction.getPlayerLife(opponent).subtractLife(
CardUtil.getConvertedManaCost(choice.getManaCost()));
CardUtil.getConvertedManaCost(choice.getManaCost()),card);
}
}//resolve()
};
@@ -18824,7 +18824,7 @@ public class CardFactory_Creatures {
public void resolve()
{
//TODO: make this part of the cost
AllZone.GameAction.getPlayerLife(card.getController()).subtractLife(2);
AllZone.GameAction.getPlayerLife(card.getController()).subtractLife(2,card);
final Command EOT = new Command() {
private static final long serialVersionUID = -8840812331316327448L;
@@ -19309,7 +19309,7 @@ public class CardFactory_Creatures {
AllZone.GameAction.sacrifice(card);
targetLife.subtractLife(1);
targetLife.subtractLife(1,card);
playerLife.addLife(1);
}
};
@@ -20348,8 +20348,8 @@ public class CardFactory_Creatures {
if(CardFactoryUtil.canDamage(card, list.get(i))) list.get(i).addDamage(1, card);
}
AllZone.Human_Life.subtractLife(1);
AllZone.Computer_Life.subtractLife(1);
AllZone.Human_Life.subtractLife(1,card);
AllZone.Computer_Life.subtractLife(1,card);
}//resolve()
};//SpellAbility
ability.setDescription("B: Pestilence Demon deals 1 damage to each creature and each player.");

View File

@@ -108,7 +108,7 @@ class CardFactory_Lands {
if(AllZone.Computer_Life.getLife() > 9) pay = MyRandom.random.nextBoolean();
if(pay) AllZone.Computer_Life.subtractLife(2);
if(pay) AllZone.Computer_Life.subtractLife(2,card);
else card.tap();
}
@@ -117,7 +117,7 @@ class CardFactory_Lands {
if(2 < life.getLife()) {
String[] choices = {"Yes", "No"};
Object o = AllZone.Display.getChoice("Pay 2 life?", choices);
if(o.equals("Yes")) life.subtractLife(2);
if(o.equals("Yes")) life.subtractLife(2,card);
else tapCard();
}//if
else tapCard();
@@ -1323,7 +1323,7 @@ class CardFactory_Lands {
if(once) {
once = false;
String player = card.getController();
AllZone.GameAction.getPlayerLife(player).subtractLife(1);
AllZone.GameAction.getPlayerLife(player).subtractLife(1,card);
AllZone.GameAction.sacrifice(card);
ability.setStackDescription(card.getController() + " - Search your library for a "
@@ -3350,7 +3350,7 @@ class CardFactory_Lands {
if(c != null) {
if(CardFactoryUtil.canTarget(card, c) && c.isCreature() ) {
AllZone.GameAction.addLife(c.getController(),c.getNetDefense());
AllZone.GameAction.getPlayerLife(c.getController()).addLife(c.getNetDefense());
AllZone.GameAction.sacrifice(c);
}
}

View File

@@ -520,7 +520,7 @@ class CardFactory_Planeswalkers {
CardList oppPerms = new CardList(play.getCards());
PlayerLife life = AllZone.GameAction.getPlayerLife(opponent);
life.subtractLife(7);
life.subtractLife(7,card2);
for(int j = 0; j < 7; j++) {
//will not actually let human choose which cards to discard
@@ -1304,7 +1304,7 @@ class CardFactory_Planeswalkers {
else {
PlayerLife life = AllZone.GameAction.getPlayerLife(getTargetPlayer());
life.subtractLife(1);
life.subtractLife(1,card2);
}
}
@@ -1464,7 +1464,7 @@ class CardFactory_Planeswalkers {
turn[0] = AllZone.Phase.getTurn();
PlayerLife life = AllZone.GameAction.getPlayerLife(getTargetPlayer());
life.subtractLife(10);
life.subtractLife(10,card2);
PlayerZone play = AllZone.getZone(Constant.Zone.Play, getTargetPlayer());
CardList list = new CardList(play.getCards());
@@ -2060,7 +2060,7 @@ class CardFactory_Planeswalkers {
Card c = getTargetCard();
c.addDamage(damage, card2);
}
} else AllZone.GameAction.getPlayerLife(getTargetPlayer()).subtractLife(damage);
} else AllZone.GameAction.getPlayerLife(getTargetPlayer()).subtractLife(damage,card2);
AllZone.GameAction.getPlayerLife(card2.getController()).addLife(3);
}

View File

@@ -1776,7 +1776,7 @@ public class CombatUtil {
Card top = lib.get(0);
if(top.getType().contains("Creature")) {
AllZone.GameAction.getPlayerLife(player).addLife(top.getBaseDefense());
AllZone.GameAction.getPlayerLife(player).subtractLife(top.getBaseAttack());
AllZone.GameAction.getPlayerLife(player).subtractLife(top.getBaseAttack(),c);
hand.add(top);
lib.remove(top);
};
@@ -1809,11 +1809,11 @@ public class CombatUtil {
else if(c.getName().equals("Pulse Tracker") && !c.getCreatureAttackedThisCombat()) {
final String opp = AllZone.GameAction.getOpponent(c.getController());
final Card F_card = c;
Ability ability = new Ability(c, "0") {
@Override
public void resolve() {
AllZone.GameAction.getPlayerLife(opp).subtractLife(1);
AllZone.GameAction.getPlayerLife(opp).subtractLife(1,F_card);
}
};
ability.setStackDescription("Pulse Tracker - Whenever Pulse Tracker attacks, each opponent loses 1 life.");
@@ -1865,7 +1865,7 @@ public class CombatUtil {
if(c.getName().equals("Guiltfeeder")) {
final String player = c.getController();
final String opponent = AllZone.GameAction.getOpponent(player);
final Card F_card = c;
Ability ability2 = new Ability(c, "0") {
@Override
public void resolve() {
@@ -1874,7 +1874,7 @@ public class CombatUtil {
CardList cardsInGrave = new CardList(graveyard.getCards());
PlayerLife life = AllZone.GameAction.getPlayerLife(opponent);
life.subtractLife(cardsInGrave.size());
life.subtractLife(cardsInGrave.size(),F_card);
}
};// ability2
@@ -1918,7 +1918,7 @@ public class CombatUtil {
{
public void resolve()
{
AllZone.GameAction.addLife(crd.getController(), 2);
AllZone.GameAction.getPlayerLife(crd.getController()).addLife(2);
}
};
ability.setStackDescription(pcs.get(i) + " - " + c.getController() + " gains 2 life.");
@@ -1971,7 +1971,7 @@ public class CombatUtil {
else if(c.getName().equals("Meglonoth") && !c.getCreatureBlockedThisCombat()) {
PlayerLife oppLife = AllZone.GameAction.getPlayerLife(AllZone.GameAction.getOpponent(c.getController()));
oppLife.subtractLife(c.getNetAttack());
oppLife.subtractLife(c.getNetAttack(),c);
//ability2.setStackDescription(c.getName() + " blocks and deals damage equal to its power to attacking player.");
//AllZone.Stack.add(ability2);
@@ -2123,7 +2123,7 @@ public class CombatUtil {
} else if (a.getName().equals("Sacred Prey") && !a.getCreatureBlockedThisCombat()) {
AllZone.GameAction.getPlayerLife(a.getController()).addLife(1);
} else if (a.getName().equals("Vedalken Ghoul") && !a.getCreatureBlockedThisCombat()) {
AllZone.GameAction.subLife(b.getController(), 4);
AllZone.GameAction.getPlayerLife(b.getController()).subtractLife(4,a);
}
if(b.getName().equals("Frostweb Spider") && (a.getKeyword().contains("Flying"))) {

View File

@@ -390,7 +390,7 @@ public class ComputerUtil
else
{
if (CardFactoryUtil.getFastbonds(Constant.Player.Computer).size() > 0)
AllZone.GameAction.getPlayerLife(Constant.Player.Computer).subtractLife(1);
AllZone.GameAction.getPlayerLife(Constant.Player.Computer).subtractLife(1,CardFactoryUtil.getFastbonds(Constant.Player.Computer).get(0));
}
AllZone.GameAction.checkStateEffects();

View File

@@ -696,8 +696,16 @@ public class GameAction {
}
}
}
static boolean MultiTarget_Cancelled = false;
public void RunWheneverKeyword(Card c, String Event, Object[] Custom_Parameters) {
/**
* Bugs: Combat Damage is recorded, probably due to quick fixes.
* Custom_Parameters Info:
* For GainLife : Custom_Parameters[0] = Amount of Life Gained
* For DealsDamage : Custom_Parameters[0] = Player Target
* : Custom_Parameters[2] = Damage Source
*/
final Card F_TriggeringCard = c;
CardList Cards_In_Play = new CardList();
Cards_In_Play.addAll(AllZone.getZone(Constant.Zone.Play, Constant.Player.Human).getCards());
@@ -727,11 +735,24 @@ public class GameAction {
|| (k[1].equals("BeginningOfEndStep")) && Event.equals("BeginningOfEndStep")
|| (k[1].equals("Attacks")) && Event.equals("Attacks")
|| (k[1].equals("EntersBattleField")) && Event.equals("EntersBattleField")
|| (k[1].contains("DealsDamage")) && Event.contains("DealsDamage")
|| (k[1].equals("GainLife")) && Event.equals("GainLife") && c.getController().equals(card.getController()))
{
if(k[1].contains("DealsDamage")) {
boolean Nullified = true;
String DamageTakerParse = k[1];
String DamageTaker[] = DamageTakerParse.split("/");
for(int z = 0; z < DamageTaker.length - 1; z++) {
if(DamageTaker[z + 1].equals("Opponent") && ((String)Custom_Parameters[0]).equals(getOpponent(card.getController()))) Nullified = false;
}
if(Nullified == true) k[4] = "Null";
}
if(k[2].contains("Self")) {
if(!card.equals(c)) k[4] = "Null";
}
if(k[2].contains("Enchanted_Creature")) {
if(((Card)Custom_Parameters[2]).isEnchantedBy(card.getName()) == false) k[4] = "Null";
}
if(k[2].contains("Type")) {
String TypeParse = k[2];
String Type[] = TypeParse.split("/");
@@ -830,7 +851,7 @@ public class GameAction {
if(Go == true) if(AllZone.GameAction.isCardInPlay(F_card)) {
PlayerLife life = AllZone.GameAction.getPlayerLife(F_TargetPlayer);
if(F_Amount > -1) life.addLife(F_Amount);
else life.subtractLife(F_Amount * -1);
else life.subtractLife(F_Amount * -1,F_card);
}
}
}
@@ -845,6 +866,50 @@ public class GameAction {
}
}
// Draw Cards
if(k[4].contains("DrawCards")) {
String AmountParse = k[4];
String S_Amount = AmountParse.split("/")[1];
int I_Amount = 0;
if(S_Amount.equals("Toughness")) I_Amount = F_TriggeringCard.getNetDefense(); // LOL wut
else I_Amount = Integer.valueOf(S_Amount);
final int F_Amount = I_Amount;
Ability ability = new Ability(card, "0") {
@Override
public void resolve() {
boolean Go = true;
if(F_k[3].equals("Play")) {
PlayerZone Required_Zone = AllZone.getZone(Constant.Zone.Play, F_TargetPlayer);
if(AllZone.GameAction.isCardInZone(F_card,Required_Zone)) {
if(F_k[7].equals("Yes_No")) {
if(F_TargetPlayer.equals("Human")) {
Object[] possibleValues = {"Yes", "No"};
Object q = JOptionPane.showOptionDialog(null, "Activate - " + F_card.getName(),F_card.getName() + " Ability",
JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE,
null, possibleValues, possibleValues[0]);
if(q.equals(1)) {
Go = false;
}
}
}
if(Go == true) if(AllZone.GameAction.isCardInPlay(F_card)) {
AllZone.GameAction.drawCard(F_TargetPlayer);
}
}
}
}
};
ability.setStackDescription(F_card + " - " + F_card.getController() + " draws " + F_Amount + " card(s).");
if(k[3].equals("Play")) {
PlayerZone Required_Zone = AllZone.getZone(Constant.Zone.Play, F_TargetPlayer);
if(AllZone.GameAction.isCardInZone(F_card,Required_Zone)) {
if(k[6].equals("ASAP")) AllZone.Stack.add(ability);
}
}
}
// Deal Damage
if(k[4].contains("Damage")) {
String AmountParse = k[4];
@@ -890,11 +955,11 @@ public class GameAction {
AllZone.GameAction.addDamage(c, F_card, F_Amount);
}
} else {
AllZone.GameAction.addDamage( (String) Targets[z], F_Amount);
AllZone.GameAction.addDamage( (String) Targets[z], F_Amount,F_card);
}
}
}
if(F_card.getController().equals(Constant.Player.Computer)) AllZone.GameAction.addDamage(Constant.Player.Human, F_Amount*F_Multiple_Targets);
if(F_card.getController().equals(Constant.Player.Computer)) AllZone.GameAction.addDamage(Constant.Player.Human, F_Amount*F_Multiple_Targets,F_card);
}
}
}
@@ -2449,19 +2514,18 @@ public class GameAction {
AllZone.GameAction.moveToGraveyard(sa.getSourceCard());
}
*/
/**
public void addLife(String player, int life) {
// place holder for future life gain modification rules
getPlayerLife(player).addLife(life);
}
public void subLife(String player, int life) {
// place holder for future life loss modification rules
getPlayerLife(player).subtractLife(life);
}
**/
public void addDamage(String player, int damage, Card source) {
// place holder for future damage modification rules (prevention?)
@@ -2471,17 +2535,17 @@ public class GameAction {
for(Card c:cl) {
GameActionUtil.executeGuiltyConscienceEffects(source, c, damage);
}
getPlayerLife(player).subtractLife(damage);
getPlayerLife(player).subtractLife(damage,source);
}
/**
public void addDamage(String player, int damage) {
// place holder for future damage modification rules (prevention?)
getPlayerLife(player).subtractLife(damage);
}
**/
public void addDamage(String player, Card source, int damage) {
getPlayerLife(player).subtractLife(damage);
getPlayerLife(player).subtractLife(damage,source);
if(source.getKeyword().contains("Lifelink")) GameActionUtil.executeLifeLinkEffects(source, damage);

View File

@@ -175,7 +175,7 @@ public class GameActionUtil {
@Override
public void resolve() {
//Lifeblood controller (opponent in this case) gains 1 life
AllZone.GameAction.addLife(opponent, 1);
AllZone.GameAction.getPlayerLife(opponent).addLife(1);
}
};//Ability
ability.setStackDescription(lifeblood.getName()+" - Mountain was tapped, "+opponent+" gains 1 life.");
@@ -191,7 +191,7 @@ public class GameActionUtil {
@Override
public void resolve() {
//Lifetap controller (opponent in this case) gains 1 life
AllZone.GameAction.addLife(opponent, 1);
AllZone.GameAction.getPlayerLife(opponent).addLife(1);
}
};//Ability
ability.setStackDescription(lifetap.getName()+" - Forest was tapped, "+opponent+" gains 1 life.");
@@ -1611,7 +1611,7 @@ public class GameActionUtil {
}// if choice yes
else target = "Human"; // check for target of spell/abilities should be here
} else target = "Human"; // check for target of spell/abilities should be here
AllZone.GameAction.getPlayerLife(target).subtractLife(1);
AllZone.GameAction.getPlayerLife(target).subtractLife(1,card);
PlayerLife life = AllZone.GameAction.getPlayerLife(card.getController());
life.addLife(1);
@@ -2968,7 +2968,7 @@ public class GameActionUtil {
if(cl.contains(card.getChosenColor())) {
Ability ability = new Ability(card, "0") {
public void resolve() {
AllZone.GameAction.getPlayerLife(c.getController()).subtractLife(1);
AllZone.GameAction.getPlayerLife(c.getController()).subtractLife(1,card);
} //resolve
};//ability
ability.setStackDescription(card.getName() + " - " + c.getController() +
@@ -2995,11 +2995,12 @@ public class GameActionUtil {
for(int i = 0; i < list.size(); i++) {
Card c = list.get(i);
final Card F_card = c;
final Ability ability = new Ability(c, "0") {
@Override
public void resolve() {
AllZone.GameAction.getPlayerLife(player_d).subtractLife(1);
AllZone.GameAction.getPlayerLife(player_d).subtractLife(1,F_card);
}
};
ability.setStackDescription(list.get(i) + " - Deals 1 damage to him or her");
@@ -3051,7 +3052,7 @@ public class GameActionUtil {
Object q = AllZone.Display.getChoiceOptional("Select computer as target?", choices);
if(q != null && q.equals("Yes")) AllZone.GameAction.getPlayerLife(Constant.Player.Computer).subtractLife(
1);
1,crd);
else {
CardList cards = new CardList(oppPlay.getCards());
CardList oppCreatures = new CardList();
@@ -3077,7 +3078,7 @@ public class GameActionUtil {
if(AllZone.GameAction.isCardInPlay(getTargetCard())
&& CardFactoryUtil.canTarget(crd, getTargetCard())) getTargetCard().addDamage(
1, crd);
} else AllZone.GameAction.getPlayerLife(getTargetPlayer()).subtractLife(1);
} else AllZone.GameAction.getPlayerLife(getTargetPlayer()).subtractLife(1,crd);
}
}//resolve()
};//SpellAbility
@@ -3463,7 +3464,7 @@ public class GameActionUtil {
if(c.getName().equals("Cosmic Horror")) {
String player = c.getController();
PlayerLife life = AllZone.GameAction.getPlayerLife(player);
life.subtractLife(7);
life.subtractLife(7,c);
}
AllZone.GameAction.destroy(c);
}
@@ -3536,7 +3537,7 @@ public class GameActionUtil {
//AllZone.GameAction.sacrifice(c);
String player = c.getController();
PlayerLife life = AllZone.GameAction.getPlayerLife(player);
life.subtractLife(c.getUpkeepDamage());
life.subtractLife(c.getUpkeepDamage(),c);
}
};
@@ -4233,7 +4234,7 @@ public class GameActionUtil {
public void resolve() {
String player = crd.getController();
PlayerLife life = AllZone.GameAction.getPlayerLife(player);
life.subtractLife(2);
life.subtractLife(2,crd);
}
};
ability.setStackDescription("Dingus Staff - Deals 2 damage to " + destroyed.getController() + ".");
@@ -4353,7 +4354,7 @@ public class GameActionUtil {
public void resolve() {
String player = crd.getController();
PlayerLife life = AllZone.GameAction.getPlayerLife(player);
life.subtractLife(2);
life.subtractLife(2,crd);
}
};
ability.setStackDescription("Dingus Egg - Deals 2 damage to " + destroyed.getController() + ".");
@@ -4540,7 +4541,7 @@ public class GameActionUtil {
if(AllZone.GameAction.isCardInPlay(getTargetCard())
&& CardFactoryUtil.canTarget(valakutCard, getTargetCard())) getTargetCard().addDamage(3,
valakutCard);
} else AllZone.GameAction.getPlayerLife(getTargetPlayer()).subtractLife(3);
} else AllZone.GameAction.getPlayerLife(getTargetPlayer()).subtractLife(3,valakutCard);
}//resolve()
};
@@ -4648,7 +4649,7 @@ public class GameActionUtil {
@Override
public void resolve() {
PlayerLife life = AllZone.GameAction.getPlayerLife(AllZone.GameAction.getOpponent(crd.getController()));
life.subtractLife(3);
life.subtractLife(3,crd);
crd.addCounter(Counters.P1P1, 3);
}
};
@@ -4927,7 +4928,7 @@ public class GameActionUtil {
if(target != null)
target.addDamage(2, src);
else
AllZone.GameAction.getPlayerLife(getTargetPlayer()).subtractLife(2);
AllZone.GameAction.getPlayerLife(getTargetPlayer()).subtractLife(2,src);
AllZone.GameAction.drawCard(src.getController());
}
@@ -5023,7 +5024,12 @@ public class GameActionUtil {
}
public static void executePlayerCombatDamageEffects(Card c) {
// Whenever Keyword
Object[] DealsDamage_Whenever_Parameters = new Object[3];
DealsDamage_Whenever_Parameters[0] = AllZone.GameAction.getOpponent(c.getController());
DealsDamage_Whenever_Parameters[2] = c;
AllZone.GameAction.CheckWheneverKeyword(c, "DealsDamage/Opponent", DealsDamage_Whenever_Parameters);
if(c.getKeyword().contains("Whenever this creature deals damage to a player, that player gets a poison counter."))
playerCombatDamage_PoisonCounter(c, 1);
@@ -5365,7 +5371,7 @@ public class GameActionUtil {
private static void playerCombatDamage_lose_halflife_up(Card c) {
final String player = c.getController();
final String opponent = AllZone.GameAction.getOpponent(player);
final Card F_card = c;
if(c.getNetAttack() > 0) {
Ability ability2 = new Ability(c, "0") {
@Override
@@ -5385,7 +5391,7 @@ public class GameActionUtil {
x = (AllZone.Human_Life.getLife() / 2) + y;
}
AllZone.GameAction.getPlayerLife(opponent).subtractLife(x);
AllZone.GameAction.getPlayerLife(opponent).subtractLife(x,F_card);
}
};// ability2
@@ -6639,7 +6645,7 @@ public class GameActionUtil {
// System.out.println("top of deck: " + library.get(i).getName());
String creatureType = library.get(0).getType().toString();
String cardName = library.get(0).getName();
final Card F_card = list.get(i);
ability = new Ability(list.get(i), "0") {
@Override
public void resolve() {
@@ -6650,7 +6656,7 @@ public class GameActionUtil {
if(creatureType.contains("Faerie") || creatureType.contains("Wizard")
|| library.get(0).getKeyword().contains("Changeling")) {
AllZone.GameAction.getPlayerLife(opponent).subtractLife(2);
AllZone.GameAction.getPlayerLife(opponent).subtractLife(2,F_card);
}
}// resolve()
@@ -6834,13 +6840,13 @@ public class GameActionUtil {
// System.out.println("top of deck: " + library.get(i).getName());
final int convertedManaCost = CardUtil.getConvertedManaCost(library.get(i).getManaCost());
String cardName = library.get(i).getName();
final Card F_card = list.get(i);
ability = new Ability(list.get(i), "0") {
@Override
public void resolve() {
PlayerZone library = AllZone.getZone(Constant.Zone.Library, player);
PlayerZone hand = AllZone.getZone(Constant.Zone.Hand, player);
AllZone.GameAction.getPlayerLife(player).subtractLife(convertedManaCost);
AllZone.GameAction.getPlayerLife(player).subtractLife(convertedManaCost,F_card);
// AllZone.GameAction.drawCard(player);
// !!!can't just draw card, since it won't work with jpb's
@@ -7722,10 +7728,11 @@ public class GameActionUtil {
Ability ability;
for(int i = 0; i < list.size(); i++) {
final Card F_card = list.get(i);
ability = new Ability(list.get(i), "0") {
@Override
public void resolve() {
AllZone.GameAction.getPlayerLife(player).subtractLife(1);
AllZone.GameAction.getPlayerLife(player).subtractLife(1,F_card);
}
};// Ability
ability.setStackDescription("Copper Tablet - deals 1 damage to " + player);
@@ -7961,10 +7968,11 @@ public class GameActionUtil {
Ability ability;
for(int i = 0; i < list.size(); i++) {
final Card F_card = list.get(i);
ability = new Ability(list.get(i), "0") {
@Override
public void resolve() {
AllZone.GameAction.getPlayerLife(player).subtractLife(2);
AllZone.GameAction.getPlayerLife(player).subtractLife(2,F_card);
}
};
@@ -7992,6 +8000,7 @@ public class GameActionUtil {
Ability ability;
for(int i = 0; i < list.size(); i++) {
enchants = list.get(i).getEnchantedBy();
final Card F_card = list.get(i);
for(Card enchant:enchants) {
if(enchant.getName().equals("Cursed Land")) {
//final Card c = enchant;
@@ -8000,7 +8009,7 @@ public class GameActionUtil {
@Override
public void resolve() {
//if (c.getController().equals(player))
AllZone.GameAction.getPlayerLife(player).subtractLife(1);
AllZone.GameAction.getPlayerLife(player).subtractLife(1,F_card);
}
};
@@ -8033,6 +8042,7 @@ public class GameActionUtil {
ArrayList<Card> enchants;
Ability ability;
for(int i = 0; i < list.size(); i++) {
final Card F_card = list.get(i);
enchants = list.get(i).getEnchantedBy();
for(Card enchant:enchants) {
if(enchant.getName().equals("Pillory of the Sleepless")) {
@@ -8041,7 +8051,7 @@ public class GameActionUtil {
@Override
public void resolve() {
//if (c.getController().equals(player))
AllZone.GameAction.getPlayerLife(player).subtractLife(1);
AllZone.GameAction.getPlayerLife(player).subtractLife(1,F_card);
}
};
ability.setStackDescription("Pillory of the Sleepless deals one damage to enchanted creature's controller.");
@@ -8112,7 +8122,7 @@ public class GameActionUtil {
ability = new Ability(list.get(i), "0") {
@Override
public void resolve() {
AllZone.GameAction.getPlayerLife(player).subtractLife(1);
AllZone.GameAction.getPlayerLife(player).subtractLife(1,crd);
CardFactoryUtil.makeToken("Faerie Rogue", "B 1 1 Faerie Rogue", crd, "B", new String[] {
"Creature", "Faerie", "Rogue"}, 1, 1, new String[] {"Flying"});
}// resolve()
@@ -8310,10 +8320,11 @@ public class GameActionUtil {
if(blaze.size() > 0) {
final int lands = blaze.size();
final Card F_card = blaze.get(0); // Quick Fix, will improve later
Ability ability = new Ability(blaze.get(0), "0") {
@Override
public void resolve() {
AllZone.GameAction.getPlayerLife(player).subtractLife(lands);
AllZone.GameAction.getPlayerLife(player).subtractLife(lands,F_card);
}
};
ability.setStackDescription("Obsidian Fireheart - " + player + " gets dealt " + lands + " damage.");
@@ -8781,13 +8792,13 @@ public class GameActionUtil {
Card c = list.get(i);
String[] choices = {"Yes", "No"};
Object choice = AllZone.Display.getChoice("Pay Carnophage's upkeep?", choices);
if(choice.equals("Yes")) AllZone.GameAction.getPlayerLife(player).subtractLife(1);
if(choice.equals("Yes")) AllZone.GameAction.getPlayerLife(player).subtractLife(1,c);
else c.tap();
}
}
if(player == "Computer") for(int i = 0; i < list.size(); i++) {
Card c = list.get(i);
if(AllZone.Computer_Life.getLife() > 1) AllZone.GameAction.getPlayerLife(player).subtractLife(1);
if(AllZone.Computer_Life.getLife() > 1) AllZone.GameAction.getPlayerLife(player).subtractLife(1,c);
else c.tap();
}
}// upkeep_Carnophage
@@ -8805,13 +8816,13 @@ public class GameActionUtil {
Card c = list.get(i);
String[] choices = {"Yes", "No"};
Object choice = AllZone.Display.getChoice("Pay Sangrophage's upkeep?", choices);
if(choice.equals("Yes")) AllZone.GameAction.getPlayerLife(player).subtractLife(2);
if(choice.equals("Yes")) AllZone.GameAction.getPlayerLife(player).subtractLife(2,c);
else c.tap();
}
}
if(player == "Computer") for(int i = 0; i < list.size(); i++) {
Card c = list.get(i);
if(AllZone.Computer_Life.getLife() > 2) AllZone.GameAction.getPlayerLife(player).subtractLife(2);
if(AllZone.Computer_Life.getLife() > 2) AllZone.GameAction.getPlayerLife(player).subtractLife(2,c);
else c.tap();
}
}// upkeep_Carnophage
@@ -8826,8 +8837,9 @@ public class GameActionUtil {
list = list.getName("Phyrexian Arena");
for(int i = 0; i < list.size(); i++) {
final Card F_card = list.get(i);
AllZone.GameAction.drawCard(player);
AllZone.GameAction.getPlayerLife(player).subtractLife(1);
AllZone.GameAction.getPlayerLife(player).subtractLife(1,F_card);
AllZone.GameAction.checkStateEffects();
}
@@ -8973,7 +8985,7 @@ public class GameActionUtil {
Object q = AllZone.Display.getChoiceOptional("Select computer as target?", choices);
if(q != null && q.equals("Yes")) AllZone.GameAction.getPlayerLife(Constant.Player.Computer).subtractLife(
hondlist.size());
hondlist.size(),card);
else {
CardList cards = new CardList(oppPlay.getCards());
CardList oppCreatures = new CardList();
@@ -9007,7 +9019,7 @@ public class GameActionUtil {
if(targetc != null) {
if(AllZone.GameAction.isCardInPlay(targetc)) targetc.addDamage(hondlist.size(), card);
} else AllZone.GameAction.getPlayerLife(Constant.Player.Human).subtractLife(
hondlist.size());
hondlist.size(),card);
}
}//resolve()
};//SpellAbility
@@ -9064,11 +9076,11 @@ public class GameActionUtil {
list = list.getName("Seizan, Perverter of Truth");
if(list.size() == 0) return;
final Card F_card = list.get(0);
Ability ability = new Ability(list.get(0), "0") {
@Override
public void resolve() {
AllZone.GameAction.getPlayerLife(player).subtractLife(2);
AllZone.GameAction.getPlayerLife(player).subtractLife(2,F_card);
}
};
ability.setStackDescription("Seizan, Perverter of Truth - " + player + " loses 2 life and draws 2 cards");
@@ -9090,7 +9102,8 @@ public class GameActionUtil {
list = list.getName("Moroii");
for(int i = 0; i < list.size(); i++) {
AllZone.GameAction.getPlayerLife(player).subtractLife(1);
final Card F_card = list.get(i);
AllZone.GameAction.getPlayerLife(player).subtractLife(1,F_card);
}
}// upkeep_Moroii
@@ -9104,11 +9117,12 @@ public class GameActionUtil {
list = list.getName("Vampire Lacerator");
for(int i = 0; i < list.size(); i++) {
final Card F_card = list.get(i);
if(player == "Human" && AllZone.Computer_Life.getLife() > 10) {
AllZone.GameAction.getPlayerLife(player).subtractLife(1);
AllZone.GameAction.getPlayerLife(player).subtractLife(1,F_card);
} else {
if(player == "Computer" && AllZone.Human_Life.getLife() > 10) {
AllZone.GameAction.getPlayerLife(player).subtractLife(1);
AllZone.GameAction.getPlayerLife(player).subtractLife(1,F_card);
}
}
}
@@ -9124,10 +9138,11 @@ public class GameActionUtil {
Ability ability;
for(int i = 0; i < list.size(); i++) {
if(!list.get(i).isFaceDown()) {
final Card F_card = list.get(i);
ability = new Ability(list.get(i), "0") {
@Override
public void resolve() {
AllZone.GameAction.getPlayerLife(player).subtractLife(2);
AllZone.GameAction.getPlayerLife(player).subtractLife(2,F_card);
}
};// Ability
ability.setStackDescription("Grinning Demon - " + player + " loses 2 life");

View File

@@ -44,7 +44,7 @@ public class Input_CombatDamage extends Input {
public void selectCard(Card card, PlayerZone zone) {
InputUtil.playInstantAbility(card, zone);
}//selectCard()
/**
@SuppressWarnings("unused")
// playerDamage
private void playerDamage(PlayerLife p) {
@@ -52,7 +52,7 @@ public class Input_CombatDamage extends Input {
p.setAssignedDamage(0);
p.subtractLife(n);
}
**/
//moves assigned damage to damage for all creatures
//deals damage to player if needed
public void damageCreatureAndPlayer() {
@@ -61,7 +61,8 @@ public class Input_CombatDamage extends Input {
player = Constant.Player.Computer;
PlayerLife life = AllZone.GameAction.getPlayerLife(player);
life.subtractLife(AllZone.Combat.getTotalDefendingDamage());
life.subtractLife(AllZone.Combat.getTotalDefendingDamage(),AllZone.CardFactory.HumanNullCard);
// Quick Fix, should work for Whenever keyword because of GameActionUtil.ExecutePlayerCombatEffects
//why???

View File

@@ -49,7 +49,7 @@ public class Input_FirstStrikeDamage extends Input {
public void selectCard(Card card, PlayerZone zone) {
InputUtil.playInstantAbility(card, zone);
}//selectCard()
/**
@SuppressWarnings("unused")
// playerDamage
private void playerDamage(PlayerLife p) {
@@ -57,7 +57,7 @@ public class Input_FirstStrikeDamage extends Input {
p.setAssignedDamage(0);
p.subtractLife(n);
}
**/
//moves assigned damage to damage for all creatures
//deals damage to player if needed
private void damageCreatureAndPlayer() {
@@ -67,7 +67,8 @@ public class Input_FirstStrikeDamage extends Input {
if(player.equals("")) //this is a really bad hack, to allow raging goblin to attack on turn 1
player = Constant.Player.Computer;
PlayerLife life = AllZone.GameAction.getPlayerLife(player);
life.subtractLife(AllZone.Combat.getTotalFirstStrikeDefendingDamage());
life.subtractLife(AllZone.Combat.getTotalFirstStrikeDefendingDamage(),AllZone.CardFactory.HumanNullCard);
// Quick Fix, should work for Whenever keyword because of GameActionUtil.ExecutePlayerCombatEffects
System.out.println("getTotalFirstStrikeDefendingDamage: "
+ AllZone.Combat.getTotalFirstStrikeDefendingDamage());

View File

@@ -33,7 +33,7 @@ public class Input_Main extends Input {
CardList fastbonds = CardFactoryUtil.getFastbonds(Constant.Player.Human);
if(fastbonds.size() > 0) {
if(AllZone.GameInfo.humanPlayedFirstLandThisTurn()) {
AllZone.GameAction.getPlayerLife(Constant.Player.Human).subtractLife(1);
AllZone.GameAction.getPlayerLife(Constant.Player.Human).subtractLife(1,fastbonds.get(0));
}
}
InputUtil.playAnyCard(card, zone);

View File

@@ -35,9 +35,22 @@ public class PlayerLife extends MyObservable implements java.io.Serializable
AllZone.GameAction.CheckWheneverKeyword(WhoGainedLife, "GainLife", Life_Whenever_Parameters);
this.updateObservers();
}
public void subtractLife(int life2)
public void subtractLife(int life2, Card SourceCard)
{
Card WhoGainedLife = new Card();
if(AllZone.Human_Life.getLife() != AllZone.Computer_Life.getLife()) {
if(AllZone.Human_Life.getLife() == life) WhoGainedLife = AllZone.CardFactory.HumanNullCard;
else WhoGainedLife = AllZone.CardFactory.ComputerNullCard;
}
life -= life2;
if(WhoGainedLife != AllZone.CardFactory.HumanNullCard && WhoGainedLife != AllZone.CardFactory.ComputerNullCard) {
if(AllZone.Human_Life.getLife() == life) WhoGainedLife = AllZone.CardFactory.HumanNullCard;
else WhoGainedLife = AllZone.CardFactory.ComputerNullCard;
}
Object[] DealsDamage_Whenever_Parameters = new Object[3];
DealsDamage_Whenever_Parameters[0] = WhoGainedLife.getController();
DealsDamage_Whenever_Parameters[2] = SourceCard;
AllZone.GameAction.CheckWheneverKeyword(WhoGainedLife, "DealsDamage/Opponent", DealsDamage_Whenever_Parameters);
this.updateObservers();
}
}