prevent destroy logic should only be checked if destroy is true

fixes issue 231.
master
melvin 2012-06-18 17:11:43 +08:00
parent 2897a5c6ad
commit 720b700fc1
2 changed files with 48 additions and 3 deletions

View File

@ -29,12 +29,12 @@ public class MagicDestroyAction extends MagicAction {
final MagicPermanent permanent = (MagicPermanent)target;
// Indestructible
if (permanent.hasAbility(MagicAbility.Indestructible)) {
if (destroy && permanent.hasAbility(MagicAbility.Indestructible)) {
destroy = false;
}
// Regeneration
if (permanent.isRegenerated()) {
if (destroy && permanent.isRegenerated()) {
game.logAppendMessage(permanent.getController(),permanent.getName()+" is regenerated.");
game.doAction(new MagicTapAction(permanent,false));
game.doAction(new MagicRemoveAllDamageAction(permanent));
@ -44,7 +44,7 @@ public class MagicDestroyAction extends MagicAction {
}
// Totem armor
if (permanent.isEnchanted()) {
if (destroy && permanent.isEnchanted()) {
for (final MagicPermanent aura : permanent.getAuraPermanents()) {
if (aura.getCardDefinition().hasAbility(MagicAbility.TotemArmor)) {
game.logAppendMessage(permanent.getController(),"Remove all damage from "+permanent.getName()+'.');

View File

@ -0,0 +1,45 @@
package magic.test;
import magic.model.MagicGame;
import magic.model.MagicPlayer;
import magic.model.MagicPlayerDefinition;
import magic.model.MagicPlayerProfile;
import magic.model.MagicDuel;
import magic.model.phase.MagicMainPhase;
class TestTotemArmorIndestructible extends TestGameBuilder {
public MagicGame getGame() {
final MagicDuel duel=new MagicDuel();
duel.setDifficulty(6);
final MagicPlayerProfile profile=new MagicPlayerProfile("bgruw");
final MagicPlayerDefinition player1=new MagicPlayerDefinition("Player",false,profile,15);
final MagicPlayerDefinition player2=new MagicPlayerDefinition("Computer",true,profile,14);
duel.setPlayers(new MagicPlayerDefinition[]{player1,player2});
duel.setStartPlayer(0);
final MagicGame game=duel.nextGame(true);
game.setPhase(MagicMainPhase.getFirstInstance());
final MagicPlayer player=game.getPlayer(0);
final MagicPlayer opponent=game.getPlayer(1);
MagicPlayer P = player;
P.setLife(20);
addToLibrary(P, "Plains", 10);
createPermanent(game,P,"Rupture Spire",false,8);
createPermanent(game,P,"Grizzly Bears",false,1);
createPermanent(game,P,"Darksteel Plate",false,1);
addToHand(P,"Spider Umbra",1);
addToHand(P,"Doom Blade",1);
P = opponent;
P.setLife(20);
addToLibrary(P, "Plains", 10);
createPermanent(game,P,"Rupture Spire",false,8);
return game;
}
}