diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs index f2b3493704d..224a61872a6 100644 --- a/.settings/org.eclipse.jdt.core.prefs +++ b/.settings/org.eclipse.jdt.core.prefs @@ -1,12 +1,12 @@ -#Sat Oct 24 03:14:19 CEST 2009 -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.5 -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.source=1.5 +#Thu Dec 03 11:37:04 CST 2009 +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.5 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.5 diff --git a/src/arcane/ui/ScaledImagePanel.java b/src/arcane/ui/ScaledImagePanel.java index 9bb5a4cd9fb..c5ac27a2928 100644 --- a/src/arcane/ui/ScaledImagePanel.java +++ b/src/arcane/ui/ScaledImagePanel.java @@ -70,6 +70,12 @@ } else targetHeight = panelHeight; } + + if (targetWidth > 201 && srcWidth <= 201) + targetWidth = 201; + if (targetHeight > 285 && srcHeight <= 286) + targetHeight = 285; + ScalingInfo info = new ScalingInfo(); info.targetWidth = targetWidth; info.targetHeight = targetHeight; diff --git a/src/forge/CardFactory.java b/src/forge/CardFactory.java index 6318138c23f..d637027c9fe 100644 --- a/src/forge/CardFactory.java +++ b/src/forge/CardFactory.java @@ -7009,7 +7009,7 @@ public class CardFactory implements NewConstants { } }; - bounce.setDescription("You may return three Islands you control to their owner's hand rather than pay Ensnare's mana cost."); + bounce.setDescription("You may return two Islands you control to their owner's hand rather than pay Ensnare's mana cost."); bounce.setStackDescription(card.getName() + " - Tap all creatures."); bounce.setManaCost("0"); @@ -14992,6 +14992,7 @@ return land.size() > 1 && CardFactoryUtil.AI_isMainPhase(); { private static final long serialVersionUID = 8394047173115959008L; + public boolean canPlayAI(){return false;} public void resolve() @@ -16411,59 +16412,7 @@ return land.size() > 1 && CardFactoryUtil.AI_isMainPhase(); card.clearSpellAbility(); card.addSpellAbility(spell); }//*************** END ************ END ************************** - - -/* - //*************** START *********** START ************************** - else if(cardName.equals("Riding the Dilu Horse")) - { - SpellAbility spell = new Spell(card) - { - private static final long serialVersionUID = -620930445462994580L; - - public boolean canPlayAI() - { - PlayerZone play = AllZone.getZone(Constant.Zone.Play, Constant.Player.Computer); - - CardList list = new CardList(play.getCards()); - list = list.filter(new CardListFilter() - { - public boolean addCard(Card c) - { - return c.isCreature() && !c.getKeyword().contains("Horsemanship") && !c.getKeyword().contains("Defender"); - } - }); - if (list.size() > 0) { - Card c = CardFactoryUtil.AI_getBestCreature(list, card); - setTargetCard(c); - return true; - } - return false; - } - - public void resolve() - { - final Card[] target = new Card[1]; - - - target[0] = getTargetCard(); - if(AllZone.GameAction.isCardInPlay(target[0]) && CardFactoryUtil.canTarget(card, target[0])) - { - target[0].addTempAttackBoost(2); - target[0].addTempDefenseBoost(2); - target[0].addExtrinsicKeyword("Horsemanship"); - - //String s = target[0].getText(); - target[0].setText("(+2/+2 and Horsemanship from " +card+")"); - } - }//resolve() - }; - spell.setBeforePayMana(CardFactoryUtil.input_targetCreature(spell)); - card.clearSpellAbility(); - card.addSpellAbility(spell); - }//*************** END ************ END ************************** -*/ - + //*************** START *********** START ************************** else if (cardName.equals("Millstone")) @@ -16675,7 +16624,7 @@ return land.size() > 1 && CardFactoryUtil.AI_isMainPhase(); }//*************** END ************ END ************************** - //*************** START *********** START ************************** + //*************** START *********** START ************************** if (cardName.equals("Mind Funeral")) { final SpellAbility spell = new Spell(card) @@ -16730,7 +16679,7 @@ return land.size() > 1 && CardFactoryUtil.AI_isMainPhase(); }//*************** END ************ END ************************** - //*************** START *********** START ************************** + //*************** START *********** START ************************** if (cardName.equals("Haunting Echoes")) { final SpellAbility spell = new Spell(card) @@ -16917,7 +16866,7 @@ return land.size() > 1 && CardFactoryUtil.AI_isMainPhase(); card.addSpellAbility(spell); }//*************** END ************ END ************************** - //*************** START *********** START ************************** + //*************** START *********** START ************************** if (cardName.equals("Flame Rift")) { final SpellAbility spell = new Spell(card) @@ -17204,7 +17153,7 @@ return land.size() > 1 && CardFactoryUtil.AI_isMainPhase(); }//*************** END ************ END ************************** - //*************** START *********** START ************************** + //*************** START *********** START ************************** else if(cardName.equals("Thwart")) { final SpellAbility spell = new Spell(card) diff --git a/src/forge/CardFactoryUtil.java b/src/forge/CardFactoryUtil.java index 741d513acbd..b74f56a46ec 100644 --- a/src/forge/CardFactoryUtil.java +++ b/src/forge/CardFactoryUtil.java @@ -3267,6 +3267,22 @@ public class CardFactoryUtil return list; } + public static int getTotalBushidoMagnitude(Card c) + { + int count = 0; + ArrayList keywords = c.getKeyword(); + for (String kw : keywords) + { + if (kw.contains("Bushido")) + { + String[] parse = kw.split(" "); + String s = parse[1]; + count += Integer.parseInt(s); + } + } + return count; + } + public static ArrayList getBushidoEffects(Card c) { ArrayList keywords = c.getKeyword(); diff --git a/src/forge/CombatUtil.java b/src/forge/CombatUtil.java index bbd90156374..48ff723082b 100644 --- a/src/forge/CombatUtil.java +++ b/src/forge/CombatUtil.java @@ -152,8 +152,7 @@ public class CombatUtil if (CardUtil.getColors(blocker).contains(Constant.Color.Green)) return false; } - - + if (attacker.getName().equals("Amrou Seekers")) { if (!blocker.getType().contains("Artifact") && @@ -173,25 +172,7 @@ public class CombatUtil if (!CardUtil.getColors(blocker).contains(Constant.Color.Blue)) return false; } - /* - if(attacker.getKeyword().contains("Flying")) - return blocker.getKeyword().contains("Flying") || - blocker.getKeyword().contains("This creature can block as though it had flying.") || - blocker.getKeyword().contains("Reach"); - - if(attacker.getKeyword().contains("Fear")) - return blocker.getType().contains("Artifact") || - CardUtil.getColors(blocker).contains(Constant.Color.Black) || - CardUtil.getColors(blocker).contains(Constant.Color.Colorless); - - if (attacker.getName().equals("Amrou Seekers")) - return blocker.getType().contains("Artifact") || - CardUtil.getColors(blocker).contains(Constant.Color.White); - - if(attacker.getName().equals("Skirk Shaman")) - return blocker.getType().contains("Artifact") || - CardUtil.getColors(blocker).contains(Constant.Color.Red); - */ + if(attacker.getName().equals("Goldmeadow Dodger")) return blocker.getNetAttack() < 4; @@ -255,7 +236,7 @@ public class CombatUtil return false; }//flanking - + if (attacker.getName().equals("Cho-Manno, Revolutionary")) return false; @@ -284,16 +265,18 @@ public class CombatUtil if (attacker.getKeyword().contains("Protection from Goblins") && (defender.getType().contains("Goblin") || defender.getKeyword().contains("Changeling") )) return false; + int defBushidoMagnitude = CardFactoryUtil.getTotalBushidoMagnitude(defender); + int attBushidoMagnitude = CardFactoryUtil.getTotalBushidoMagnitude(attacker); - int defenderDamage = defender.getNetAttack() - flankingMagnitude; - int attackerDamage = attacker.getNetAttack(); + int defenderDamage = defender.getNetAttack() - flankingMagnitude + defBushidoMagnitude; + int attackerDamage = attacker.getNetAttack() + attBushidoMagnitude; if (isDoranInPlay()) { - defenderDamage = defender.getNetDefense() - flankingMagnitude; - attackerDamage = attacker.getNetDefense(); + defenderDamage = defender.getNetDefense() - flankingMagnitude + defBushidoMagnitude; + attackerDamage = attacker.getNetDefense() + attBushidoMagnitude; } - int defenderLife = defender.getNetDefense() - flankingMagnitude; - int attackerLife = attacker.getNetDefense(); + int defenderLife = defender.getNetDefense() - flankingMagnitude + defBushidoMagnitude; + int attackerLife = attacker.getNetDefense() + attBushidoMagnitude; if (defender.getKeyword().contains("Double Strike")) { @@ -419,15 +402,18 @@ public class CombatUtil if (defender.getKeyword().contains("Protection from Goblins") && (attacker.getType().contains("Goblin") || attacker.getKeyword().contains("Changeling") )) return false; - int defenderDamage = defender.getNetAttack() - flankingMagnitude; - int attackerDamage = attacker.getNetAttack(); + int defBushidoMagnitude = CardFactoryUtil.getTotalBushidoMagnitude(defender); + int attBushidoMagnitude = CardFactoryUtil.getTotalBushidoMagnitude(attacker); + + int defenderDamage = defender.getNetAttack() - flankingMagnitude + defBushidoMagnitude; + int attackerDamage = attacker.getNetAttack() + attBushidoMagnitude; if (isDoranInPlay()) { - defenderDamage = defender.getNetDefense() - flankingMagnitude; - attackerDamage = attacker.getNetDefense(); + defenderDamage = defender.getNetDefense() - flankingMagnitude + defBushidoMagnitude; + attackerDamage = attacker.getNetDefense() + attBushidoMagnitude; } - int defenderLife = defender.getNetDefense() - flankingMagnitude; - int attackerLife = attacker.getNetDefense(); + int defenderLife = defender.getNetDefense() - flankingMagnitude + defBushidoMagnitude; + int attackerLife = attacker.getNetDefense() + attBushidoMagnitude; if (attacker.getKeyword().contains("Double Strike")) { @@ -587,7 +573,6 @@ public class CombatUtil display.append("/"); display.append(attack[i].getNetDefense()); display.append(" is attacking \n"); - //display += attackerName +" (" +attack[i].getUniqueNumber() +") " +attack[i].getNetAttack() +"/" +attack[i].getNetDefense() +" is attacking \n"; defend = AllZone.pwCombat.getBlockers(attack[i]).toArray(); @@ -608,8 +593,6 @@ public class CombatUtil display.append("/"); display.append(defend[inner].getNetDefense()); display.append(" is blocking \n"); - - //display += " " +blockerName +" (" +defend[inner].getUniqueNumber() +") " +defend[inner].getNetAttack() +"/" +defend[inner].getNetDefense() +" is blocking \n"; } }//while - loop through attackers @@ -1784,8 +1767,10 @@ public class CombatUtil { //System.out.println(a.getName() + " got blocked by " + b.getName()); - for (Ability ab: CardFactoryUtil.getBushidoEffects(a)) - AllZone.Stack.add(ab); + if (!a.getCreatureGotBlockedThisTurn() ) { + for (Ability ab: CardFactoryUtil.getBushidoEffects(a)) + AllZone.Stack.add(ab); + } for (Ability ab: CardFactoryUtil.getBushidoEffects(b)) AllZone.Stack.add(ab); diff --git a/src/forge/StaticEffects.java b/src/forge/StaticEffects.java index 9cb5c41979a..5b2405b7ee4 100644 --- a/src/forge/StaticEffects.java +++ b/src/forge/StaticEffects.java @@ -190,9 +190,11 @@ public class StaticEffects public void removeStateBasedEffect(String s) { - stateBasedMap.put(s, stateBasedMap.get(s)-1); - if(stateBasedMap.get(s) == 0) - stateBasedMap.remove(s); + if (stateBasedMap.containsKey(s)) { + stateBasedMap.put(s, stateBasedMap.get(s)-1); + if(stateBasedMap.get(s) == 0) + stateBasedMap.remove(s); + } } public HashMap getStateBasedMap()