Merge remote-tracking branch 'upstream/master'

This commit is contained in:
Alessandro Coli
2019-11-17 17:48:03 +01:00
100 changed files with 863 additions and 190 deletions

View File

@@ -140,15 +140,31 @@ public class SacrificeAi extends SpellAbilityAi {
amount = Math.min(ComputerUtilMana.determineLeftoverMana(sa, ai), amount); amount = Math.min(ComputerUtilMana.determineLeftoverMana(sa, ai), amount);
} }
List<Card> humanList = List<Card> humanList = null;
CardLists.getValidCards(opp.getCardsIn(ZoneType.Battlefield), valid.split(","), sa.getActivatingPlayer(), sa.getHostCard(), sa); try {
humanList = CardLists.getValidCards(opp.getCardsIn(ZoneType.Battlefield), valid.split(","), sa.getActivatingPlayer(), sa.getHostCard(), sa);
} catch (NullPointerException e) {
return false;
} finally {
if (humanList == null)
return false;
}//prevent NPE on MoJhoSto
// Since all of the cards have AI:RemoveDeck:All, I enabled 1 for 1 // Since all of the cards have AI:RemoveDeck:All, I enabled 1 for 1
// (or X for X) trades for special decks // (or X for X) trades for special decks
return humanList.size() >= amount; return humanList.size() >= amount;
} else if (defined.equals("You")) { } else if (defined.equals("You")) {
List<Card> computerList =
CardLists.getValidCards(ai.getCardsIn(ZoneType.Battlefield), valid.split(","), sa.getActivatingPlayer(), sa.getHostCard(), sa); List<Card> computerList = null;
try {
computerList = CardLists.getValidCards(ai.getCardsIn(ZoneType.Battlefield), valid.split(","), sa.getActivatingPlayer(), sa.getHostCard(), sa);
} catch (NullPointerException e) {
return false;
} finally {
if (computerList == null)
return false;
}//prevent NPE on MoJhoSto
for (Card c : computerList) { for (Card c : computerList) {
if (c.hasSVar("SacMe") || ComputerUtilCard.evaluateCreature(c) <= 135) { if (c.hasSVar("SacMe") || ComputerUtilCard.evaluateCreature(c) <= 135) {
return true; return true;

View File

@@ -111,7 +111,18 @@ public final class ImageKeys {
file = findFile(dir, TextUtil.fastReplace(filename, "AE", "Ae")); file = findFile(dir, TextUtil.fastReplace(filename, "AE", "Ae"));
if (file != null) { return file; } if (file != null) { return file; }
} }
//try fullborder...
if (filename.contains(".full")) {
file = findFile(dir, TextUtil.fastReplace(filename, ".full", ".fullborder"));
if (file != null) { return file; }
}
//if an image, like phenomenon or planes is missing .full in their filenames but you have an existing images that have .full/.fullborder
if (!filename.contains(".full")) {
file = findFile(dir, TextUtil.addSuffix(filename,".full"));
if (file != null) { return file; }
file = findFile(dir, TextUtil.addSuffix(filename,".fullborder"));
if (file != null) { return file; }
}
// some S00 cards are really part of 6ED // some S00 cards are really part of 6ED
String s2kAlias = getSetFolder("S00"); String s2kAlias = getSetFolder("S00");
if (filename.startsWith(s2kAlias)) { if (filename.startsWith(s2kAlias)) {

View File

@@ -33,11 +33,11 @@ import forge.game.player.RegisteredPlayer;
import forge.game.spellability.TargetChoices; import forge.game.spellability.TargetChoices;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;
import forge.util.Lang; import forge.util.Lang;
import forge.util.Localizer;
import forge.util.maps.MapOfLists; import forge.util.maps.MapOfLists;
public class GameLogFormatter extends IGameEventVisitor.Base<GameLogEntry> { public class GameLogFormatter extends IGameEventVisitor.Base<GameLogEntry> {
private final GameLog log; private final GameLog log;
public GameLogFormatter(GameLog gameLog) { public GameLogFormatter(GameLog gameLog) {
log = gameLog; log = gameLog;
} }
@@ -52,16 +52,15 @@ public class GameLogFormatter extends IGameEventVisitor.Base<GameLogEntry> {
@Override @Override
public GameLogEntry visit(GameEventScry ev) { public GameLogEntry visit(GameEventScry ev) {
final Localizer localizer = Localizer.getInstance();
String scryOutcome = ""; String scryOutcome = "";
String toTop = Lang.nounWithAmount(ev.toTop, "card") + " to the top of the library";
String toBottom = Lang.nounWithAmount(ev.toBottom, "card") + " to the bottom of the library";
if (ev.toTop > 0 && ev.toBottom > 0) { if (ev.toTop > 0 && ev.toBottom > 0) {
scryOutcome = ev.player.toString() + " scried " + toTop + " and " + toBottom; scryOutcome = localizer.getMessage("lblLogScryTopBottomLibrary").replace("%s", ev.player.toString()).replace("%top", String.valueOf(ev.toTop)).replace("%bottom", String.valueOf(ev.toBottom));
} else if (ev.toBottom == 0) { } else if (ev.toBottom == 0) {
scryOutcome = ev.player.toString() + " scried " + toTop; scryOutcome = localizer.getMessage("lblLogScryTopLibrary").replace("%s", ev.player.toString()).replace("%top", String.valueOf(ev.toTop));
} else { } else {
scryOutcome = ev.player.toString() + " scried " + toBottom; scryOutcome = localizer.getMessage("lblLogScryBottomLibrary").replace("%s", ev.player.toString()).replace("%bottom", String.valueOf(ev.toBottom));
} }
return new GameLogEntry(GameLogEntryType.STACK_RESOLVE, scryOutcome); return new GameLogEntry(GameLogEntryType.STACK_RESOLVE, scryOutcome);
@@ -218,6 +217,7 @@ public class GameLogFormatter extends IGameEventVisitor.Base<GameLogEntry> {
@Override @Override
public GameLogEntry visit(final GameEventAttackersDeclared ev) { public GameLogEntry visit(final GameEventAttackersDeclared ev) {
final StringBuilder sb = new StringBuilder(); final StringBuilder sb = new StringBuilder();
final Localizer localizer = Localizer.getInstance();
// Loop through Defenders // Loop through Defenders
// Append Defending Player/Planeswalker // Append Defending Player/Planeswalker
@@ -233,7 +233,7 @@ public class GameLogFormatter extends IGameEventVisitor.Base<GameLogEntry> {
sb.append(" to attack ").append(k).append("."); sb.append(" to attack ").append(k).append(".");
} }
if (sb.length() == 0) { if (sb.length() == 0) {
sb.append(ev.player).append(" didn't attack this turn."); sb.append(localizer.getMessage("lblPlayerDidntAttackThisTurn").replace("%s", ev.player.toString()));
} }
return new GameLogEntry(GameLogEntryType.COMBAT, sb.toString()); return new GameLogEntry(GameLogEntryType.COMBAT, sb.toString());
} }
@@ -281,7 +281,7 @@ public class GameLogFormatter extends IGameEventVisitor.Base<GameLogEntry> {
@Override @Override
public GameLogEntry visit(GameEventMulligan ev) { public GameLogEntry visit(GameEventMulligan ev) {
String message = ev.player.toString() + " has mulliganed down to " + ev.player.getZone(ZoneType.Hand).size() + " cards."; String message = Localizer.getInstance().getMessage("lblPlayerHasMulliganedDownToNCards").replace("%d", String.valueOf(ev.player.getZone(ZoneType.Hand).size())).replace("%s", ev.player.toString());
return new GameLogEntry(GameLogEntryType.MULLIGAN, message); return new GameLogEntry(GameLogEntryType.MULLIGAN, message);
} }

View File

@@ -2,6 +2,7 @@ package forge.game.ability.effects;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
/** /**
* TODO: Write javadoc for this type. * TODO: Write javadoc for this type.
@@ -13,7 +14,7 @@ public class PermanentCreatureEffect extends PermanentEffect {
public String getStackDescription(final SpellAbility sa) { public String getStackDescription(final SpellAbility sa) {
final Card sourceCard = sa.getHostCard(); final Card sourceCard = sa.getHostCard();
final StringBuilder sb = new StringBuilder(); final StringBuilder sb = new StringBuilder();
sb.append(sourceCard.getName()).append(" - Creature ").append(sourceCard.getNetPower()); sb.append(sourceCard.getName()).append(" - ").append(Localizer.getInstance().getMessage("lblCreature")).append(" ").append(sourceCard.getNetPower());
sb.append(" / ").append(sourceCard.getNetToughness()); sb.append(" / ").append(sourceCard.getNetToughness());
return sb.toString(); return sb.toString();
} }

View File

@@ -50,7 +50,7 @@ import java.util.Map.Entry;
*/ */
public class Combat { public class Combat {
private final Player playerWhoAttacks; private final Player playerWhoAttacks;
private final AttackConstraints attackConstraints; private AttackConstraints attackConstraints;
// Defenders, as they are attacked by hostile forces // Defenders, as they are attacked by hostile forces
private final FCollection<GameEntity> attackableEntries = new FCollection<>(); private final FCollection<GameEntity> attackableEntries = new FCollection<>();
@@ -71,10 +71,6 @@ public class Combat {
public Combat(final Player attacker) { public Combat(final Player attacker) {
playerWhoAttacks = attacker; playerWhoAttacks = attacker;
// Create keys for all possible attack targets
attackableEntries.addAll(CombatUtil.getAllPossibleDefenders(playerWhoAttacks));
attackConstraints = new AttackConstraints(this);
} }
public Combat(Combat combat, GameObjectMap map) { public Combat(Combat combat, GameObjectMap map) {
@@ -119,6 +115,13 @@ public class Combat {
attackConstraints = new AttackConstraints(this); attackConstraints = new AttackConstraints(this);
} }
public void initConstraints() {
// Create keys for all possible attack targets
attackableEntries.addAll(CombatUtil.getAllPossibleDefenders(playerWhoAttacks));
attackConstraints = new AttackConstraints(this);
}
@Override @Override
public String toString() { public String toString() {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();

View File

@@ -283,6 +283,7 @@ public class PhaseHandler implements java.io.Serializable {
case COMBAT_DECLARE_ATTACKERS: case COMBAT_DECLARE_ATTACKERS:
if (!playerTurn.hasLost()) { if (!playerTurn.hasLost()) {
combat.initConstraints();
game.getStack().freezeStack(); game.getStack().freezeStack();
declareAttackersTurnBasedAction(); declareAttackersTurnBasedAction();
game.getStack().unfreezeStack(); game.getStack().unfreezeStack();

View File

@@ -22,6 +22,7 @@ import java.util.Map;
import forge.game.ability.AbilityKey; import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
/** /**
* <p> * <p>
@@ -71,7 +72,7 @@ public class TriggerAdapt extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Adapt: ").append(sa.getTriggeringObject(AbilityKey.Card)); sb.append(Localizer.getInstance().getMessage("lblAdapt")).append(": ").append(sa.getTriggeringObject(AbilityKey.Card));
return sb.toString(); return sb.toString();
} }
} }

View File

@@ -20,6 +20,7 @@ package forge.game.trigger;
import forge.game.ability.AbilityKey; import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
import java.util.Map; import java.util.Map;
@@ -83,7 +84,7 @@ public class TriggerAttached extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Attachee: ").append(sa.getTriggeringObject(AbilityKey.Target)); sb.append(Localizer.getInstance().getMessage("lblAttachee")).append(": ").append(sa.getTriggeringObject(AbilityKey.Target));
return sb.toString(); return sb.toString();
} }
} }

View File

@@ -23,6 +23,7 @@ import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.card.CardLists; import forge.game.card.CardLists;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
/** /**
* <p> * <p>
@@ -99,8 +100,8 @@ public class TriggerAttackerBlocked extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Attacker: ").append(sa.getTriggeringObject(AbilityKey.Attacker)).append(", "); sb.append(Localizer.getInstance().getMessage("lblAttacker")).append(": ").append(sa.getTriggeringObject(AbilityKey.Attacker)).append(", ");
sb.append("Number Blockers: ").append(sa.getTriggeringObject(AbilityKey.NumBlockers)); sb.append(Localizer.getInstance().getMessage("lblNumberBlockers")).append(": ").append(sa.getTriggeringObject(AbilityKey.NumBlockers));
return sb.toString(); return sb.toString();
} }
} }

View File

@@ -22,6 +22,7 @@ import java.util.Map;
import forge.game.ability.AbilityKey; import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
/** /**
* <p> * <p>
@@ -95,8 +96,8 @@ public class TriggerAttackerBlockedByCreature extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Attacker: ").append(sa.getTriggeringObject(AbilityKey.Attacker)).append(", "); sb.append(Localizer.getInstance().getMessage("lblAttacker")).append(": ").append(sa.getTriggeringObject(AbilityKey.Attacker)).append(", ");
sb.append("Blocker: ").append(sa.getTriggeringObject(AbilityKey.Blocker)); sb.append(Localizer.getInstance().getMessage("lblBlocker")).append(": ").append(sa.getTriggeringObject(AbilityKey.Blocker));
return sb.toString(); return sb.toString();
} }
} }

View File

@@ -20,6 +20,7 @@ package forge.game.trigger;
import forge.game.ability.AbilityKey; import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
import java.util.Map; import java.util.Map;
@@ -77,7 +78,7 @@ public class TriggerAttackerUnblocked extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Attacker: ").append(sa.getTriggeringObject(AbilityKey.Attacker)); sb.append(Localizer.getInstance().getMessage("lblAttacker")).append(": ").append(sa.getTriggeringObject(AbilityKey.Attacker));
return sb.toString(); return sb.toString();
} }
} }

View File

@@ -21,6 +21,7 @@ import forge.game.GameEntity;
import forge.game.ability.AbilityKey; import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@@ -92,8 +93,8 @@ public class TriggerAttackerUnblockedOnce extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("AttackingPlayer: ").append(sa.getTriggeringObject(AbilityKey.AttackingPlayer)); sb.append(Localizer.getInstance().getMessage("lblAttackingPlayer")).append(": ").append(sa.getTriggeringObject(AbilityKey.AttackingPlayer));
sb.append("Defenders: ").append(sa.getTriggeringObject(AbilityKey.Defenders)); sb.append(Localizer.getInstance().getMessage("lblDefenders")).append(": ").append(sa.getTriggeringObject(AbilityKey.Defenders));
return sb.toString(); return sb.toString();
} }
} }

View File

@@ -21,6 +21,7 @@ import forge.game.GameEntity;
import forge.game.ability.AbilityKey; import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@@ -94,7 +95,7 @@ public class TriggerAttackersDeclared extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Number Attackers: ").append(sa.getTriggeringObject(AbilityKey.Attackers)); sb.append(Localizer.getInstance().getMessage("lblNumberAttackers")).append(": ").append(sa.getTriggeringObject(AbilityKey.Attackers));
return sb.toString(); return sb.toString();
} }
} }

View File

@@ -22,6 +22,7 @@ import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@@ -139,7 +140,7 @@ public class TriggerAttacks extends Trigger {
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Attacker: ").append(sa.getTriggeringObject(AbilityKey.Attacker)); sb.append(Localizer.getInstance().getMessage("lblAttacker")).append(": ").append(sa.getTriggeringObject(AbilityKey.Attacker));
return sb.toString(); return sb.toString();
} }
} }

View File

@@ -6,6 +6,7 @@ import forge.game.Game;
import forge.game.ability.AbilityKey; import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
public class TriggerBecomeMonarch extends Trigger { public class TriggerBecomeMonarch extends Trigger {
@@ -42,7 +43,7 @@ public class TriggerBecomeMonarch extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Player: ").append(sa.getTriggeringObject(AbilityKey.Player)).append(", "); sb.append(Localizer.getInstance().getMessage("lblPlayer")).append(": ").append(sa.getTriggeringObject(AbilityKey.Player)).append(", ");
return sb.toString(); return sb.toString();
} }
} }

View File

@@ -22,6 +22,7 @@ import java.util.Map;
import forge.game.ability.AbilityKey; import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
/** /**
* <p> * <p>
@@ -72,7 +73,7 @@ public class TriggerBecomeMonstrous extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Monstrous: ").append(sa.getTriggeringObject(AbilityKey.Card)); sb.append(Localizer.getInstance().getMessage("lblMonstrous")).append(": ").append(sa.getTriggeringObject(AbilityKey.Card));
return sb.toString(); return sb.toString();
} }
} }

View File

@@ -20,6 +20,7 @@ package forge.game.trigger;
import forge.game.ability.AbilityKey; import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
import java.util.Map; import java.util.Map;
@@ -72,7 +73,7 @@ public class TriggerBecomeRenowned extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Renowned: ").append(sa.getTriggeringObject(AbilityKey.Card)); sb.append(Localizer.getInstance().getMessage("lblRenowned")).append(": ").append(sa.getTriggeringObject(AbilityKey.Card));
return sb.toString(); return sb.toString();
} }
} }

View File

@@ -20,6 +20,7 @@ package forge.game.trigger;
import forge.game.ability.AbilityKey; import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
import java.util.Map; import java.util.Map;
@@ -96,8 +97,8 @@ public class TriggerBecomesTarget extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Source: ").append(((SpellAbility) sa.getTriggeringObject(AbilityKey.SourceSA)).getHostCard()).append(", "); sb.append(Localizer.getInstance().getMessage("lblSource")).append(": ").append(((SpellAbility) sa.getTriggeringObject(AbilityKey.SourceSA)).getHostCard()).append(", ");
sb.append("Target: ").append(sa.getTriggeringObject(AbilityKey.Target)); sb.append(Localizer.getInstance().getMessage("lblTarget")).append(": ").append(sa.getTriggeringObject(AbilityKey.Target));
return sb.toString(); return sb.toString();
} }
} }

View File

@@ -21,6 +21,7 @@ import forge.game.GameObject;
import forge.game.ability.AbilityKey; import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@@ -88,8 +89,8 @@ public class TriggerBecomesTargetOnce extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Source: ").append(((SpellAbility) sa.getTriggeringObject(AbilityKey.SourceSA)).getHostCard()).append(", "); sb.append(Localizer.getInstance().getMessage("lblSource")).append(": ").append(((SpellAbility) sa.getTriggeringObject(AbilityKey.SourceSA)).getHostCard()).append(", ");
sb.append("Targets: ").append(sa.getTriggeringObject(AbilityKey.Targets)); sb.append(Localizer.getInstance().getMessage("lblTargets")).append(": ").append(sa.getTriggeringObject(AbilityKey.Targets));
return sb.toString(); return sb.toString();
} }
} }

View File

@@ -20,6 +20,7 @@ package forge.game.trigger;
import forge.game.ability.AbilityKey; import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
import java.util.Map; import java.util.Map;
@@ -59,7 +60,7 @@ public class TriggerBlockersDeclared extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Blockers: ").append(sa.getTriggeringObject(AbilityKey.Blockers)); sb.append(Localizer.getInstance().getMessage("lblBlockers")).append(": ").append(sa.getTriggeringObject(AbilityKey.Blockers));
return sb.toString(); return sb.toString();
} }
} }

View File

@@ -20,6 +20,7 @@ package forge.game.trigger;
import forge.game.ability.AbilityKey; import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
import java.util.Map; import java.util.Map;
@@ -96,7 +97,7 @@ public class TriggerBlocks extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Blocker: ").append(sa.getTriggeringObject(AbilityKey.Blocker)); sb.append(Localizer.getInstance().getMessage("lblBlocker")).append(": ").append(sa.getTriggeringObject(AbilityKey.Blocker));
return sb.toString(); return sb.toString();
} }
} }

View File

@@ -20,6 +20,7 @@ package forge.game.trigger;
import forge.game.ability.AbilityKey; import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
import java.util.Map; import java.util.Map;
@@ -81,7 +82,7 @@ public class TriggerChampioned extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Championed: ").append(sa.getTriggeringObject(AbilityKey.Championed)); sb.append(Localizer.getInstance().getMessage("lblChampioned")).append(": ").append(sa.getTriggeringObject(AbilityKey.Championed));
return sb.toString(); return sb.toString();
} }
} }

View File

@@ -20,6 +20,7 @@ package forge.game.trigger;
import forge.game.ability.AbilityKey; import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
import java.util.Map; import java.util.Map;
@@ -80,7 +81,7 @@ public class TriggerChangesController extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Changed Controller: ").append(sa.getTriggeringObject(AbilityKey.Card)); sb.append(Localizer.getInstance().getMessage("lblChangedController")).append(": ").append(sa.getTriggeringObject(AbilityKey.Card));
return sb.toString(); return sb.toString();
} }
} }

View File

@@ -30,6 +30,7 @@ import forge.util.Expressions;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import forge.util.Localizer;
import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.ArrayUtils;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
@@ -219,7 +220,7 @@ public class TriggerChangesZone extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Zone Changer: ").append(sa.getTriggeringObject(AbilityKey.Card)); sb.append(Localizer.getInstance().getMessage("lblZoneChanger")).append(": ").append(sa.getTriggeringObject(AbilityKey.Card));
return sb.toString(); return sb.toString();
} }

View File

@@ -7,6 +7,7 @@ import forge.game.ability.AbilityKey;
import forge.game.card.*; import forge.game.card.*;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;
import forge.util.Localizer;
public class TriggerChangesZoneAll extends Trigger { public class TriggerChangesZoneAll extends Trigger {
@@ -34,7 +35,7 @@ public class TriggerChangesZoneAll extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Amount: ").append(sa.getTriggeringObject(AbilityKey.Amount)); sb.append(Localizer.getInstance().getMessage("lblAmount")).append(": ").append(sa.getTriggeringObject(AbilityKey.Amount));
return sb.toString(); return sb.toString();
} }

View File

@@ -25,6 +25,7 @@ import forge.game.card.CounterType;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Expressions; import forge.util.Expressions;
import forge.util.Localizer;
/** /**
* <p> * <p>
@@ -127,7 +128,7 @@ public class TriggerCounterAdded extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Added once: "); sb.append(Localizer.getInstance().getMessage("lblAddedOnce")).append(": ");
if (sa.hasTriggeringObject(AbilityKey.Card)) if (sa.hasTriggeringObject(AbilityKey.Card))
sb.append(sa.getTriggeringObject(AbilityKey.Card)); sb.append(sa.getTriggeringObject(AbilityKey.Card));
if (sa.hasTriggeringObject(AbilityKey.Player)) if (sa.hasTriggeringObject(AbilityKey.Player))

View File

@@ -9,6 +9,7 @@ import forge.game.GameEntityCounterTable;
import forge.game.ability.AbilityKey; import forge.game.ability.AbilityKey;
import forge.game.card.*; import forge.game.card.*;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
public class TriggerCounterAddedAll extends Trigger { public class TriggerCounterAddedAll extends Trigger {
@@ -41,7 +42,7 @@ public class TriggerCounterAddedAll extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Amount: ").append(sa.getTriggeringObject(AbilityKey.Amount)); sb.append(Localizer.getInstance().getMessage("lblAmount")).append(": ").append(sa.getTriggeringObject(AbilityKey.Amount));
return sb.toString(); return sb.toString();
} }

View File

@@ -24,6 +24,7 @@ import forge.game.card.Card;
import forge.game.card.CounterType; import forge.game.card.CounterType;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
/** /**
* <p> * <p>
@@ -114,13 +115,13 @@ public class TriggerCounterAddedOnce extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Added once: "); sb.append(Localizer.getInstance().getMessage("lblAddedOnce")).append(": ");
if (sa.hasTriggeringObject(AbilityKey.Card)) if (sa.hasTriggeringObject(AbilityKey.Card))
sb.append(sa.getTriggeringObject(AbilityKey.Card)); sb.append(sa.getTriggeringObject(AbilityKey.Card));
if (sa.hasTriggeringObject(AbilityKey.Player)) if (sa.hasTriggeringObject(AbilityKey.Player))
sb.append(sa.getTriggeringObject(AbilityKey.Player)); sb.append(sa.getTriggeringObject(AbilityKey.Player));
sb.append(" Amount: ").append(sa.getTriggeringObject(AbilityKey.Amount)); sb.append(" ").append(Localizer.getInstance().getMessage("lblAmount")).append(": ").append(sa.getTriggeringObject(AbilityKey.Amount));
return sb.toString(); return sb.toString();
} }
} }

View File

@@ -21,6 +21,7 @@ import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.card.CounterType; import forge.game.card.CounterType;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
import java.util.Map; import java.util.Map;
@@ -92,7 +93,7 @@ public class TriggerCounterRemoved extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Removed from: ").append(sa.getTriggeringObject(AbilityKey.Card)); sb.append(Localizer.getInstance().getMessage("lblRemovedFrom")).append(": ").append(sa.getTriggeringObject(AbilityKey.Card));
return sb.toString(); return sb.toString();
} }
} }

View File

@@ -21,6 +21,7 @@ import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.card.CounterType; import forge.game.card.CounterType;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
import java.util.Map; import java.util.Map;
@@ -84,8 +85,8 @@ public class TriggerCounterRemovedOnce extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Removed from: ").append(sa.getTriggeringObject(AbilityKey.Card)); sb.append(Localizer.getInstance().getMessage("lblRemovedFrom")).append(": ").append(sa.getTriggeringObject(AbilityKey.Card));
sb.append(" Amount: ").append(sa.getTriggeringObject(AbilityKey.Amount)); sb.append(" ").append(Localizer.getInstance().getMessage("lblAmount")).append(": ").append(sa.getTriggeringObject(AbilityKey.Amount));
return sb.toString(); return sb.toString();
} }
} }

View File

@@ -20,6 +20,7 @@ package forge.game.trigger;
import forge.game.ability.AbilityKey; import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
import java.util.Map; import java.util.Map;
@@ -108,8 +109,8 @@ public class TriggerCountered extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Countered: ").append(sa.getTriggeringObject(AbilityKey.Card)).append(", "); sb.append(Localizer.getInstance().getMessage("lblCountered")).append(": ").append(sa.getTriggeringObject(AbilityKey.Card)).append(", ");
sb.append("Cause: ").append(sa.getTriggeringObject(AbilityKey.Cause)); sb.append(Localizer.getInstance().getMessage("lblCause")).append(": ").append(sa.getTriggeringObject(AbilityKey.Cause));
return sb.toString(); return sb.toString();
} }
} }

View File

@@ -4,6 +4,7 @@ import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.card.CardCollection; import forge.game.card.CardCollection;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
import java.util.Map; import java.util.Map;
@@ -45,9 +46,9 @@ public class TriggerCrewed extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Vehicle: ").append(sa.getTriggeringObject(AbilityKey.Vehicle)); sb.append(Localizer.getInstance().getMessage("lblVehicle")).append(": ").append(sa.getTriggeringObject(AbilityKey.Vehicle));
sb.append(" "); sb.append(" ");
sb.append("Crew: ").append(sa.getTriggeringObject(AbilityKey.Crew)); sb.append(Localizer.getInstance().getMessage("lblCrew")).append(": ").append(sa.getTriggeringObject(AbilityKey.Crew));
return sb.toString(); return sb.toString();
} }
} }

View File

@@ -20,6 +20,7 @@ package forge.game.trigger;
import forge.game.ability.AbilityKey; import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
import java.util.Map; import java.util.Map;
@@ -58,7 +59,7 @@ public class TriggerCycled extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Cycled: ").append(sa.getTriggeringObject(AbilityKey.Card)); sb.append(Localizer.getInstance().getMessage("lblCycled")).append(": ").append(sa.getTriggeringObject(AbilityKey.Card));
return sb.toString(); return sb.toString();
} }

View File

@@ -22,6 +22,7 @@ import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Expressions; import forge.util.Expressions;
import forge.util.Localizer;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
@@ -116,9 +117,9 @@ public class TriggerDamageDealtOnce extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Damage Source: ").append(sa.getTriggeringObject(AbilityKey.Source)).append(", "); sb.append(Localizer.getInstance().getMessage("lblDamageSource")).append(": ").append(sa.getTriggeringObject(AbilityKey.Source)).append(", ");
sb.append("Damaged: ").append(sa.getTriggeringObject(AbilityKey.Targets)).append(", "); sb.append(Localizer.getInstance().getMessage("lblDamaged")).append(": ").append(sa.getTriggeringObject(AbilityKey.Targets)).append(", ");
sb.append("Amount: ").append(sa.getTriggeringObject(AbilityKey.DamageAmount)); sb.append(Localizer.getInstance().getMessage("lblAmount")).append(": ").append(sa.getTriggeringObject(AbilityKey.DamageAmount));
return sb.toString(); return sb.toString();
} }
} }

View File

@@ -23,6 +23,7 @@ import forge.game.card.CardUtil;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.game.spellability.SpellAbilityStackInstance; import forge.game.spellability.SpellAbilityStackInstance;
import forge.util.Expressions; import forge.util.Expressions;
import forge.util.Localizer;
import java.util.Map; import java.util.Map;
@@ -135,9 +136,9 @@ public class TriggerDamageDone extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Damage Source: ").append(sa.getTriggeringObject(AbilityKey.Source)).append(", "); sb.append(Localizer.getInstance().getMessage("lblDamageSource")).append(": ").append(sa.getTriggeringObject(AbilityKey.Source)).append(", ");
sb.append("Damaged: ").append(sa.getTriggeringObject(AbilityKey.Target)).append(", "); sb.append(Localizer.getInstance().getMessage("lblDamaged")).append(": ").append(sa.getTriggeringObject(AbilityKey.Target)).append(", ");
sb.append("Amount: ").append(sa.getTriggeringObject(AbilityKey.DamageAmount)); sb.append(Localizer.getInstance().getMessage("lblAmount")).append(": ").append(sa.getTriggeringObject(AbilityKey.DamageAmount));
return sb.toString(); return sb.toString();
} }
} }

View File

@@ -7,6 +7,7 @@ import forge.game.GameEntity;
import forge.game.ability.AbilityKey; import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
public class TriggerDamageDoneOnce extends Trigger { public class TriggerDamageDoneOnce extends Trigger {
@@ -67,9 +68,9 @@ public class TriggerDamageDoneOnce extends Trigger {
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
if (sa.getTriggeringObject(AbilityKey.Target) != null) { if (sa.getTriggeringObject(AbilityKey.Target) != null) {
sb.append("Damaged: ").append(sa.getTriggeringObject(AbilityKey.Target)).append(", "); sb.append(Localizer.getInstance().getMessage("lblDamaged")).append(": ").append(sa.getTriggeringObject(AbilityKey.Target)).append(", ");
} }
sb.append("Amount: ").append(sa.getTriggeringObject(AbilityKey.DamageAmount)); sb.append(Localizer.getInstance().getMessage("lblAmount")).append(": ").append(sa.getTriggeringObject(AbilityKey.DamageAmount));
return sb.toString(); return sb.toString();
} }

View File

@@ -22,6 +22,7 @@ import forge.game.card.Card;
import forge.game.card.CardUtil; import forge.game.card.CardUtil;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Expressions; import forge.util.Expressions;
import forge.util.Localizer;
import java.util.Map; import java.util.Map;
@@ -114,9 +115,9 @@ public class TriggerDamagePrevented extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Damage Source: ").append(sa.getTriggeringObject(AbilityKey.Source)).append(", "); sb.append(Localizer.getInstance().getMessage("lblDamageSource")).append(": ").append(sa.getTriggeringObject(AbilityKey.Source)).append(", ");
sb.append("Damage Target: ").append(sa.getTriggeringObject(AbilityKey.Target)).append(", "); sb.append(Localizer.getInstance().getMessage("lblDamageTarget")).append(": ").append(sa.getTriggeringObject(AbilityKey.Target)).append(", ");
sb.append("Amount: ").append(sa.getTriggeringObject(AbilityKey.DamageAmount)); sb.append(Localizer.getInstance().getMessage("lblAmount")).append(": ").append(sa.getTriggeringObject(AbilityKey.DamageAmount));
return sb.toString(); return sb.toString();
} }
} }

View File

@@ -21,6 +21,7 @@ import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Expressions; import forge.util.Expressions;
import forge.util.Localizer;
import java.util.Map; import java.util.Map;
@@ -104,8 +105,8 @@ public class TriggerDamagePreventedOnce extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Damage Target: ").append(sa.getTriggeringObject(AbilityKey.Target)).append(", "); sb.append(Localizer.getInstance().getMessage("lblDamageTarget")).append(": ").append(sa.getTriggeringObject(AbilityKey.Target)).append(", ");
sb.append("Amount: ").append(sa.getTriggeringObject(AbilityKey.DamageAmount)); sb.append(Localizer.getInstance().getMessage("lblAmount")).append(": ").append(sa.getTriggeringObject(AbilityKey.DamageAmount));
return sb.toString(); return sb.toString();
} }
} }

View File

@@ -22,6 +22,7 @@ import java.util.Map;
import forge.game.ability.AbilityKey; import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
/** /**
* <p> * <p>
@@ -75,8 +76,8 @@ public class TriggerDestroyed extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Destroyed: ").append(sa.getTriggeringObject(AbilityKey.Card)).append(", "); sb.append(Localizer.getInstance().getMessage("lblDestroyed")).append(": ").append(sa.getTriggeringObject(AbilityKey.Card)).append(", ");
sb.append("Destroyer: ").append(sa.getTriggeringObject(AbilityKey.Causer)); sb.append(Localizer.getInstance().getMessage("lblDestroyer")).append(": ").append(sa.getTriggeringObject(AbilityKey.Causer));
return sb.toString(); return sb.toString();
} }
} }

View File

@@ -20,6 +20,7 @@ package forge.game.trigger;
import forge.game.ability.AbilityKey; import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
import java.util.Map; import java.util.Map;
@@ -70,7 +71,7 @@ public class TriggerDevoured extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Devoured: ").append(sa.getTriggeringObject(AbilityKey.Devoured)); sb.append(Localizer.getInstance().getMessage("lblDevoured")).append(": ").append(sa.getTriggeringObject(AbilityKey.Devoured));
return sb.toString(); return sb.toString();
} }
} }

View File

@@ -20,6 +20,7 @@ package forge.game.trigger;
import forge.game.ability.AbilityKey; import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
import java.util.Map; import java.util.Map;
@@ -95,8 +96,8 @@ public class TriggerDiscarded extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Discarded: ").append(sa.getTriggeringObject(AbilityKey.Card)).append(", "); sb.append(Localizer.getInstance().getMessage("lblDiscarded")).append(": ").append(sa.getTriggeringObject(AbilityKey.Card)).append(", ");
sb.append("Cause: ").append(sa.getTriggeringObject(AbilityKey.Cause)); sb.append(Localizer.getInstance().getMessage("lblCause")).append(": ").append(sa.getTriggeringObject(AbilityKey.Cause));
return sb.toString(); return sb.toString();
} }
} }

View File

@@ -22,6 +22,7 @@ import forge.game.GameStage;
import forge.game.ability.AbilityKey; import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
import java.util.Map; import java.util.Map;
@@ -88,7 +89,7 @@ public class TriggerDrawn extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Player: ").append(sa.getTriggeringObject(AbilityKey.Player)); sb.append(Localizer.getInstance().getMessage("lblPlayer")).append(": ").append(sa.getTriggeringObject(AbilityKey.Player));
return sb.toString(); return sb.toString();
} }
} }

View File

@@ -22,6 +22,7 @@ import java.util.Map;
import forge.game.ability.AbilityKey; import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
/** /**
* <p> * <p>
@@ -69,7 +70,7 @@ public class TriggerEvolved extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Evolved: ").append(sa.getTriggeringObject(AbilityKey.Card)); sb.append(Localizer.getInstance().getMessage("lblEvolved")).append(": ").append(sa.getTriggeringObject(AbilityKey.Card));
return sb.toString(); return sb.toString();
} }
} }

View File

@@ -3,6 +3,7 @@ package forge.game.trigger;
import forge.game.ability.AbilityKey; import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
@@ -39,7 +40,7 @@ public class TriggerExerted extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Exerted: ").append(sa.getTriggeringObject(AbilityKey.Card)); sb.append(Localizer.getInstance().getMessage("lblExerted")).append(": ").append(sa.getTriggeringObject(AbilityKey.Card));
return sb.toString(); return sb.toString();
} }
} }

View File

@@ -24,6 +24,7 @@ import forge.game.spellability.SpellAbility;
import java.util.Map; import java.util.Map;
import forge.util.Localizer;
import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.ArrayUtils;
/** /**
@@ -104,7 +105,7 @@ public class TriggerExiled extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Exiled: ").append(sa.getTriggeringObject(AbilityKey.Card)); sb.append(Localizer.getInstance().getMessage("lblExiled")).append(": ").append(sa.getTriggeringObject(AbilityKey.Card));
return sb.toString(); return sb.toString();
} }

View File

@@ -20,6 +20,7 @@ package forge.game.trigger;
import forge.game.ability.AbilityKey; import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
import java.util.Map; import java.util.Map;
@@ -81,8 +82,8 @@ public class TriggerExploited extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Exploited: ").append(sa.getTriggeringObject(AbilityKey.Exploited)).append(", "); sb.append(Localizer.getInstance().getMessage("lblExploited")).append(": ").append(sa.getTriggeringObject(AbilityKey.Exploited)).append(", ");
sb.append("Exploiter: ").append(sa.getTriggeringObject(AbilityKey.Card)); sb.append(Localizer.getInstance().getMessage("lblExploiter")).append(": ").append(sa.getTriggeringObject(AbilityKey.Card));
return sb.toString(); return sb.toString();
} }
} }

View File

@@ -20,6 +20,7 @@ package forge.game.trigger;
import forge.game.ability.AbilityKey; import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
import java.util.Map; import java.util.Map;
@@ -69,7 +70,7 @@ public class TriggerExplores extends Trigger {
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Explorer: ").append(sa.getTriggeringObject(AbilityKey.Explorer)); sb.append(Localizer.getInstance().getMessage("lblExplorer")).append(": ").append(sa.getTriggeringObject(AbilityKey.Explorer));
return sb.toString(); return sb.toString();
} }
} }

View File

@@ -20,6 +20,7 @@ package forge.game.trigger;
import forge.game.ability.AbilityKey; import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
import java.util.Map; import java.util.Map;
@@ -72,7 +73,7 @@ public class TriggerFight extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Fighter: ").append(sa.getTriggeringObject(AbilityKey.Fighter)); sb.append(Localizer.getInstance().getMessage("lblFighter")).append(": ").append(sa.getTriggeringObject(AbilityKey.Fighter));
return sb.toString(); return sb.toString();
} }
} }

View File

@@ -20,6 +20,7 @@ package forge.game.trigger;
import forge.game.ability.AbilityKey; import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
import java.util.Map; import java.util.Map;
@@ -79,7 +80,7 @@ public class TriggerFlippedCoin extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Player: ").append(sa.getTriggeringObject(AbilityKey.Player)); sb.append(Localizer.getInstance().getMessage("lblPlayer")).append(": ").append(sa.getTriggeringObject(AbilityKey.Player));
return sb.toString(); return sb.toString();
} }
} }

View File

@@ -21,6 +21,7 @@ import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
import java.util.Map; import java.util.Map;
@@ -53,7 +54,7 @@ public class TriggerInvestigated extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Player: ").append(sa.getTriggeringObject(AbilityKey.Player)); sb.append(Localizer.getInstance().getMessage("lblPlayer")).append(": ").append(sa.getTriggeringObject(AbilityKey.Player));
return sb.toString(); return sb.toString();
} }

View File

@@ -20,6 +20,7 @@ package forge.game.trigger;
import forge.game.ability.AbilityKey; import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
import java.util.Map; import java.util.Map;
@@ -58,7 +59,7 @@ public class TriggerLandPlayed extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Land played: ").append(sa.getTriggeringObject(AbilityKey.Card)); sb.append(Localizer.getInstance().getMessage("lblLandPlayed")).append(": ").append(sa.getTriggeringObject(AbilityKey.Card));
return sb.toString(); return sb.toString();
} }

View File

@@ -20,6 +20,7 @@ package forge.game.trigger;
import forge.game.ability.AbilityKey; import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
import java.util.Map; import java.util.Map;
@@ -81,8 +82,8 @@ public class TriggerLifeGained extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Player: ").append(sa.getTriggeringObject(AbilityKey.Player)).append(", "); sb.append(Localizer.getInstance().getMessage("lblPlayer")).append(": ").append(sa.getTriggeringObject(AbilityKey.Player)).append(", ");
sb.append("Gained Amount: ").append(sa.getTriggeringObject(AbilityKey.LifeAmount)); sb.append(Localizer.getInstance().getMessage("lblGainedAmount")).append(": ").append(sa.getTriggeringObject(AbilityKey.LifeAmount));
return sb.toString(); return sb.toString();
} }
} }

View File

@@ -22,6 +22,7 @@ import java.util.Map;
import forge.game.ability.AbilityKey; import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
/** /**
* <p> * <p>
@@ -78,8 +79,8 @@ public class TriggerLifeLost extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Player: ").append(sa.getTriggeringObject(AbilityKey.Player)).append(", "); sb.append(Localizer.getInstance().getMessage("lblPlayer")).append(": ").append(sa.getTriggeringObject(AbilityKey.Player)).append(", ");
sb.append("Lost Amount: ").append(sa.getTriggeringObject(AbilityKey.LifeAmount)); sb.append(Localizer.getInstance().getMessage("lblLostAmount")).append(": ").append(sa.getTriggeringObject(AbilityKey.LifeAmount));
return sb.toString(); return sb.toString();
} }
} }

View File

@@ -3,6 +3,7 @@ package forge.game.trigger;
import forge.game.ability.AbilityKey; import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
import java.util.Map; import java.util.Map;
@@ -48,7 +49,7 @@ public class TriggerLosesGame extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Player: ").append(sa.getTriggeringObject(AbilityKey.Player)); sb.append(Localizer.getInstance().getMessage("lblPlayer")).append(": ").append(sa.getTriggeringObject(AbilityKey.Player));
return sb.toString(); return sb.toString();
} }
} }

View File

@@ -20,6 +20,7 @@ package forge.game.trigger;
import forge.game.ability.AbilityKey; import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
import java.util.Map; import java.util.Map;
@@ -79,7 +80,7 @@ public class TriggerPayCumulativeUpkeep extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Mana: ").append(sa.getTriggeringObject(AbilityKey.PayingMana)); sb.append(Localizer.getInstance().getMessage("lblMana")).append(": ").append(sa.getTriggeringObject(AbilityKey.PayingMana));
return sb.toString(); return sb.toString();
} }
} }

View File

@@ -20,6 +20,7 @@ package forge.game.trigger;
import forge.game.ability.AbilityKey; import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
import java.util.Map; import java.util.Map;
@@ -68,8 +69,8 @@ public class TriggerPayLife extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Player: ").append(sa.getTriggeringObject(AbilityKey.Player)).append(", "); sb.append(Localizer.getInstance().getMessage("lblPlayer")).append(": ").append(sa.getTriggeringObject(AbilityKey.Player)).append(", ");
sb.append("paid Amount: ").append(sa.getTriggeringObject(AbilityKey.LifeAmount)); sb.append(Localizer.getInstance().getMessage("lblPaidAmount")).append(": ").append(sa.getTriggeringObject(AbilityKey.LifeAmount));
return sb.toString(); return sb.toString();
} }
} }

View File

@@ -20,6 +20,7 @@ package forge.game.trigger;
import forge.game.ability.AbilityKey; import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
import java.util.Map; import java.util.Map;
@@ -69,7 +70,7 @@ public class TriggerPhase extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Phase: ").append(sa.getTriggeringObject(AbilityKey.Player)); sb.append(Localizer.getInstance().getMessage("lblPhase")).append(": ").append(sa.getTriggeringObject(AbilityKey.Player));
return sb.toString(); return sb.toString();
} }
} }

View File

@@ -3,6 +3,7 @@ package forge.game.trigger;
import forge.game.ability.AbilityKey; import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
import java.util.Map; import java.util.Map;
@@ -35,7 +36,7 @@ public class TriggerPhaseIn extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Phased In: ").append(sa.getTriggeringObject(AbilityKey.Card)); sb.append(Localizer.getInstance().getMessage("lblPhasedIn")).append(": ").append(sa.getTriggeringObject(AbilityKey.Card));
return sb.toString(); return sb.toString();
} }
} }

View File

@@ -3,6 +3,7 @@ package forge.game.trigger;
import forge.game.ability.AbilityKey; import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
import java.util.Map; import java.util.Map;
@@ -43,7 +44,7 @@ public class TriggerPhaseOut extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Phased Out: ").append(sa.getTriggeringObject(AbilityKey.Card)); sb.append(Localizer.getInstance().getMessage("lblPhasedOut")).append(": ").append(sa.getTriggeringObject(AbilityKey.Card));
return sb.toString(); return sb.toString();
} }
} }

View File

@@ -4,6 +4,7 @@ import forge.game.PlanarDice;
import forge.game.ability.AbilityKey; import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
import java.util.Map; import java.util.Map;
@@ -62,7 +63,7 @@ public class TriggerPlanarDice extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Roller: ").append(sa.getTriggeringObject(AbilityKey.Player)); sb.append(Localizer.getInstance().getMessage("lblRoller")).append(": ").append(sa.getTriggeringObject(AbilityKey.Player));
return sb.toString(); return sb.toString();
} }
} }

View File

@@ -4,6 +4,7 @@ import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.card.CardCollection; import forge.game.card.CardCollection;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
import java.util.Map; import java.util.Map;
@@ -59,7 +60,7 @@ public class TriggerPlaneswalkedFrom extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Planeswalked From: ").append(sa.getTriggeringObject(AbilityKey.Cards)); sb.append(Localizer.getInstance().getMessage("lblPlaneswalkedFrom")).append(": ").append(sa.getTriggeringObject(AbilityKey.Cards));
return sb.toString(); return sb.toString();
} }

View File

@@ -3,6 +3,7 @@ package forge.game.trigger;
import forge.game.ability.AbilityKey; import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
import java.util.Map; import java.util.Map;
@@ -59,7 +60,7 @@ public class TriggerPlaneswalkedTo extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Planeswalked To: ").append(sa.getTriggeringObject(AbilityKey.Cards)); sb.append(Localizer.getInstance().getMessage("lblPlaneswalkedTo")).append(": ").append(sa.getTriggeringObject(AbilityKey.Cards));
return sb.toString(); return sb.toString();
} }
} }

View File

@@ -22,6 +22,7 @@ import java.util.Map;
import forge.game.ability.AbilityKey; import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
/** /**
* <p> * <p>
@@ -75,7 +76,7 @@ public class TriggerRegenerated extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Regenerated: ").append(sa.getTriggeringObject(AbilityKey.Card)); sb.append(Localizer.getInstance().getMessage("lblRegenerated")).append(": ").append(sa.getTriggeringObject(AbilityKey.Card));
//sb.append("Destroyer: ").append(sa.getTriggeringObject("Causer")); //sb.append("Destroyer: ").append(sa.getTriggeringObject("Causer"));
return sb.toString(); return sb.toString();
} }

View File

@@ -5,6 +5,7 @@ import java.util.Map;
import forge.game.ability.AbilityKey; import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
public class TriggerRevealed extends Trigger { public class TriggerRevealed extends Trigger {
@@ -37,7 +38,7 @@ public class TriggerRevealed extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Revealed: ").append(sa.getTriggeringObject(AbilityKey.Card)); sb.append(Localizer.getInstance().getMessage("lblRevealed")).append(": ").append(sa.getTriggeringObject(AbilityKey.Card));
return sb.toString(); return sb.toString();
} }

View File

@@ -23,6 +23,7 @@ import forge.game.cost.IndividualCostPaymentInstance;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.game.zone.CostPaymentStack; import forge.game.zone.CostPaymentStack;
import forge.util.Localizer;
import java.util.Map; import java.util.Map;
@@ -135,7 +136,7 @@ public class TriggerSacrificed extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Sacrificed: ").append(sa.getTriggeringObject(AbilityKey.Card)); sb.append(Localizer.getInstance().getMessage("lblSacrificed")).append(": ").append(sa.getTriggeringObject(AbilityKey.Card));
return sb.toString(); return sb.toString();
} }

View File

@@ -20,6 +20,7 @@ package forge.game.trigger;
import forge.game.ability.AbilityKey; import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
import java.util.Map; import java.util.Map;
@@ -71,7 +72,7 @@ public class TriggerScry extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Scryer: ").append(sa.getTriggeringObject(AbilityKey.Player)); sb.append(Localizer.getInstance().getMessage("lblScryer")).append(": ").append(sa.getTriggeringObject(AbilityKey.Player));
return sb.toString(); return sb.toString();
} }
} }

View File

@@ -24,6 +24,7 @@ import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
/** /**
* <p> * <p>
@@ -82,7 +83,7 @@ public class TriggerSearchedLibrary extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Searcher: ").append(sa.getTriggeringObject(AbilityKey.Player)); sb.append(Localizer.getInstance().getMessage("lblSearcher")).append(": ").append(sa.getTriggeringObject(AbilityKey.Player));
return sb.toString(); return sb.toString();
} }
} }

View File

@@ -20,6 +20,7 @@ package forge.game.trigger;
import forge.game.ability.AbilityKey; import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
import java.util.Map; import java.util.Map;
@@ -83,7 +84,7 @@ public class TriggerShuffled extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Shuffler: ").append(sa.getTriggeringObject(AbilityKey.Player)); sb.append(Localizer.getInstance().getMessage("lblShuffler")).append(": ").append(sa.getTriggeringObject(AbilityKey.Player));
return sb.toString(); return sb.toString();
} }
} }

View File

@@ -38,6 +38,7 @@ import forge.game.spellability.SpellAbilityStackInstance;
import forge.game.spellability.TargetChoices; import forge.game.spellability.TargetChoices;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;
import forge.util.Expressions; import forge.util.Expressions;
import forge.util.Localizer;
/** /**
* <p> * <p>
@@ -284,9 +285,9 @@ public class TriggerSpellAbilityCast extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Card: ").append(sa.getTriggeringObject(AbilityKey.Card)).append(", "); sb.append(Localizer.getInstance().getMessage("lblCard")).append(": ").append(sa.getTriggeringObject(AbilityKey.Card)).append(", ");
sb.append("Activator: ").append(sa.getTriggeringObject(AbilityKey.Activator)).append(", "); sb.append(Localizer.getInstance().getMessage("lblActivator")).append(": ").append(sa.getTriggeringObject(AbilityKey.Activator)).append(", ");
sb.append("SpellAbility: ").append(sa.getTriggeringObject(AbilityKey.SpellAbility)); sb.append(Localizer.getInstance().getMessage("lblSpellAbility")).append(": ").append(sa.getTriggeringObject(AbilityKey.SpellAbility));
return sb.toString(); return sb.toString();
} }
} }

View File

@@ -23,6 +23,7 @@ import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.game.spellability.SpellAbilityStackInstance; import forge.game.spellability.SpellAbilityStackInstance;
import forge.util.Localizer;
/** /**
* <p> * <p>
@@ -102,9 +103,9 @@ public class TriggerSpellAbilityCopy extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Card: ").append(sa.getTriggeringObject(AbilityKey.Card)).append(", "); sb.append(Localizer.getInstance().getMessage("lblCard")).append(": ").append(sa.getTriggeringObject(AbilityKey.Card)).append(", ");
sb.append("Activator: ").append(sa.getTriggeringObject(AbilityKey.Activator)).append(", "); sb.append(Localizer.getInstance().getMessage("lblActivator")).append(": ").append(sa.getTriggeringObject(AbilityKey.Activator)).append(", ");
sb.append("SpellAbility: ").append(sa.getTriggeringObject(AbilityKey.SpellAbility)); sb.append(Localizer.getInstance().getMessage("lblSpellAbility")).append(": ").append(sa.getTriggeringObject(AbilityKey.SpellAbility));
return sb.toString(); return sb.toString();
} }
} }

View File

@@ -21,6 +21,7 @@ import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
import java.util.Map; import java.util.Map;
@@ -49,7 +50,7 @@ public class TriggerSurveil extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Player: ").append(sa.getTriggeringObject(AbilityKey.Player)); sb.append(Localizer.getInstance().getMessage("lblPlayer")).append(": ").append(sa.getTriggeringObject(AbilityKey.Player));
return sb.toString(); return sb.toString();
} }

View File

@@ -20,6 +20,7 @@ package forge.game.trigger;
import forge.game.ability.AbilityKey; import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
import java.util.Map; import java.util.Map;
@@ -85,7 +86,7 @@ public class TriggerTaps extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Tapped: ").append(sa.getTriggeringObject(AbilityKey.Card)); sb.append(Localizer.getInstance().getMessage("lblTapped")).append(": ").append(sa.getTriggeringObject(AbilityKey.Card));
return sb.toString(); return sb.toString();
} }

View File

@@ -22,6 +22,7 @@ import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
import java.util.Map; import java.util.Map;
@@ -114,8 +115,8 @@ public class TriggerTapsForMana extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Tapped for Mana: ").append(sa.getTriggeringObject(AbilityKey.Card)); sb.append(Localizer.getInstance().getMessage("lblTappedForMana")).append(": ").append(sa.getTriggeringObject(AbilityKey.Card));
sb.append("Produced: ").append(sa.getTriggeringObject(AbilityKey.Produced)); sb.append(Localizer.getInstance().getMessage("lblProduced")).append(": ").append(sa.getTriggeringObject(AbilityKey.Produced));
return sb.toString(); return sb.toString();
} }

View File

@@ -20,6 +20,7 @@ package forge.game.trigger;
import forge.game.ability.AbilityKey; import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
import java.util.Map; import java.util.Map;
@@ -65,7 +66,7 @@ public class TriggerTransformed extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Transformed: ").append(sa.getTriggeringObject(AbilityKey.Transformer)); sb.append(Localizer.getInstance().getMessage("lblTransformed")).append(": ").append(sa.getTriggeringObject(AbilityKey.Transformer));
return sb.toString(); return sb.toString();
} }

View File

@@ -3,6 +3,7 @@ package forge.game.trigger;
import forge.game.ability.AbilityKey; import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
import java.util.Map; import java.util.Map;
@@ -29,7 +30,7 @@ public class TriggerTurnBegin extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Player: ").append(sa.getTriggeringObject(AbilityKey.Player)); sb.append(Localizer.getInstance().getMessage("lblPlayer")).append(": ").append(sa.getTriggeringObject(AbilityKey.Player));
return sb.toString(); return sb.toString();
} }
} }

View File

@@ -20,6 +20,7 @@ package forge.game.trigger;
import forge.game.ability.AbilityKey; import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
import java.util.Map; import java.util.Map;
@@ -70,7 +71,7 @@ public class TriggerTurnFaceUp extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Turn Face up: ").append(sa.getTriggeringObject(AbilityKey.Card)); sb.append(Localizer.getInstance().getMessage("lblTurnFaceUp")).append(": ").append(sa.getTriggeringObject(AbilityKey.Card));
return sb.toString(); return sb.toString();
} }

View File

@@ -21,6 +21,7 @@ import forge.game.GameEntity;
import forge.game.ability.AbilityKey; import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
import java.util.Map; import java.util.Map;
@@ -82,8 +83,8 @@ public class TriggerUnattach extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Object: ").append(sa.getTriggeringObject(AbilityKey.Object)).append(", "); sb.append(Localizer.getInstance().getMessage("lblObject")).append(": ").append(sa.getTriggeringObject(AbilityKey.Object)).append(", ");
sb.append("Attachment: ").append(sa.getTriggeringObject(AbilityKey.Attach)); sb.append(Localizer.getInstance().getMessage("lblAttachment")).append(": ").append(sa.getTriggeringObject(AbilityKey.Attach));
return sb.toString(); return sb.toString();
} }

View File

@@ -20,6 +20,7 @@ package forge.game.trigger;
import forge.game.ability.AbilityKey; import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
import java.util.Map; import java.util.Map;
@@ -74,7 +75,7 @@ public class TriggerUntaps extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Untapped: ").append(sa.getTriggeringObject(AbilityKey.Card)); sb.append(Localizer.getInstance().getMessage("lblUntapped")).append(": ").append(sa.getTriggeringObject(AbilityKey.Card));
return sb.toString(); return sb.toString();
} }
} }

View File

@@ -26,6 +26,7 @@ import forge.game.ability.AbilityKey;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
import forge.util.collect.FCollection; import forge.util.collect.FCollection;
/** /**
@@ -77,7 +78,7 @@ public class TriggerVote extends Trigger {
@Override @Override
public String getImportantStackObjects(SpellAbility sa) { public String getImportantStackObjects(SpellAbility sa) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Voters: ").append(sa.getTriggeringObject(AbilityKey.OtherVoters)); sb.append(Localizer.getInstance().getMessage("lblVoters")).append(": ").append(sa.getTriggeringObject(AbilityKey.OtherVoters));
return sb.toString(); return sb.toString();
} }

View File

@@ -167,7 +167,9 @@ public class ImageCache {
public static void preloadCache(Iterable keys) { public static void preloadCache(Iterable keys) {
cache.getAll(keys); cache.getAll(keys);
} }
public static TextureRegion croppedBorderImage(Texture image) { public static TextureRegion croppedBorderImage(Texture image, boolean fullborder) {
if (!fullborder)
return new TextureRegion(image);
float rscale = 0.96f; float rscale = 0.96f;
int rw = Math.round(image.getWidth()*rscale); int rw = Math.round(image.getWidth()*rscale);
int rh = Math.round(image.getHeight()*rscale); int rh = Math.round(image.getHeight()*rscale);

View File

@@ -49,12 +49,13 @@ public class CardImage implements FImage {
} }
else { else {
if (Forge.enableUIMask) { if (Forge.enableUIMask) {
boolean fullborder = image.toString().contains(".fullborder.");
if (ImageCache.isExtendedArt(card)) if (ImageCache.isExtendedArt(card))
g.drawImage(image, x, y, w, h); g.drawImage(image, x, y, w, h);
else { else {
float radius = (h - w)/8; float radius = (h - w)/8;
g.drawfillBorder(3, ImageCache.borderColor(card), x, y, w, h, radius); g.drawfillBorder(3, ImageCache.borderColor(card), x, y, w, h, radius);
g.drawImage(ImageCache.croppedBorderImage(image), x+radius/2.2f, y+radius/2, w*0.96f, h*0.96f); g.drawImage(ImageCache.croppedBorderImage(image, fullborder), x+radius/2.2f, y+radius/2, w*0.96f, h*0.96f);
} }
} }
else else

View File

@@ -345,8 +345,8 @@ public class CardImageRenderer {
if (image == ImageCache.defaultImage) { //support drawing card image manually if card image not found if (image == ImageCache.defaultImage) { //support drawing card image manually if card image not found
drawCardImage(g, card, altState, x, y, w, h, CardStackPosition.Top); drawCardImage(g, card, altState, x, y, w, h, CardStackPosition.Top);
} } else {
else { boolean fullborder = image.toString().contains(".fullborder.");
float radius = (h - w)/8; float radius = (h - w)/8;
float wh_Adj = ForgeConstants.isGdxPortLandscape && isCurrentCard ? 1.38f:1.0f; float wh_Adj = ForgeConstants.isGdxPortLandscape && isCurrentCard ? 1.38f:1.0f;
float new_w = w*wh_Adj; float new_w = w*wh_Adj;
@@ -363,10 +363,9 @@ public class CardImageRenderer {
g.drawRotatedImage(image, new_x, new_y, new_w, new_h, new_x + new_w / 2, new_y + new_h / 2, -90); g.drawRotatedImage(image, new_x, new_y, new_w, new_h, new_x + new_w / 2, new_y + new_h / 2, -90);
else { else {
g.drawRotatedImage(FSkin.getBorders().get(0), new_x, new_y, new_w, new_h, new_x + new_w / 2, new_y + new_h / 2, -90); g.drawRotatedImage(FSkin.getBorders().get(0), new_x, new_y, new_w, new_h, new_x + new_w / 2, new_y + new_h / 2, -90);
g.drawRotatedImage(ImageCache.croppedBorderImage(image), new_x+radius/2, new_y+radius/2, new_w*0.96f, new_h*0.96f, (new_x+radius/2) + (new_w*0.96f) / 2, (new_y+radius/2) + (new_h*0.96f) / 2, -90); g.drawRotatedImage(ImageCache.croppedBorderImage(image, fullborder), new_x+radius/2, new_y+radius/2, new_w*0.96f, new_h*0.96f, (new_x+radius/2) + (new_w*0.96f) / 2, (new_y+radius/2) + (new_h*0.96f) / 2, -90);
} }
} } else
else
g.drawRotatedImage(image, new_x, new_y, new_w, new_h, new_x + new_w / 2, new_y + new_h / 2, -90); g.drawRotatedImage(image, new_x, new_y, new_w, new_h, new_x + new_w / 2, new_y + new_h / 2, -90);
} else if (rotateSplit && isCurrentCard && card.isSplitCard() && canshow) { } else if (rotateSplit && isCurrentCard && card.isSplitCard() && canshow) {
boolean isAftermath = card.getText().contains("Aftermath") || card.getAlternateState().getOracleText().contains("Aftermath"); boolean isAftermath = card.getText().contains("Aftermath") || card.getAlternateState().getOracleText().contains("Aftermath");
@@ -375,22 +374,19 @@ public class CardImageRenderer {
g.drawRotatedImage(image, new_x, new_y, new_w, new_h, new_x + new_w / 2, new_y + new_h / 2, isAftermath ? 90 : -90); g.drawRotatedImage(image, new_x, new_y, new_w, new_h, new_x + new_w / 2, new_y + new_h / 2, isAftermath ? 90 : -90);
else { else {
g.drawRotatedImage(FSkin.getBorders().get(ImageCache.getFSkinBorders(card)), new_x, new_y, new_w, new_h, new_x + new_w / 2, new_y + new_h / 2, isAftermath ? 90 : -90); g.drawRotatedImage(FSkin.getBorders().get(ImageCache.getFSkinBorders(card)), new_x, new_y, new_w, new_h, new_x + new_w / 2, new_y + new_h / 2, isAftermath ? 90 : -90);
g.drawRotatedImage(ImageCache.croppedBorderImage(image), new_x + radius / 2, new_y + radius / 2, new_w * 0.96f, new_h * 0.96f, (new_x + radius / 2) + (new_w * 0.96f) / 2, (new_y + radius / 2) + (new_h * 0.96f) / 2, isAftermath ? 90 : -90); g.drawRotatedImage(ImageCache.croppedBorderImage(image, fullborder), new_x + radius / 2, new_y + radius / 2, new_w * 0.96f, new_h * 0.96f, (new_x + radius / 2) + (new_w * 0.96f) / 2, (new_y + radius / 2) + (new_h * 0.96f) / 2, isAftermath ? 90 : -90);
} }
} } else
else
g.drawRotatedImage(image, new_x, new_y, new_w, new_h, new_x + new_w / 2, new_y + new_h / 2, isAftermath ? 90 : -90); g.drawRotatedImage(image, new_x, new_y, new_w, new_h, new_x + new_w / 2, new_y + new_h / 2, isAftermath ? 90 : -90);
} } else {
else {
if (Forge.enableUIMask && canshow && !ImageKeys.getTokenKey(ImageKeys.MORPH_IMAGE).equals(card.getState(altState).getImageKey())) { if (Forge.enableUIMask && canshow && !ImageKeys.getTokenKey(ImageKeys.MORPH_IMAGE).equals(card.getState(altState).getImageKey())) {
if (ImageCache.isExtendedArt(card)) if (ImageCache.isExtendedArt(card))
g.drawImage(image, x, y, w, h); g.drawImage(image, x, y, w, h);
else { else {
g.drawImage(ImageCache.getBorderImage(card, canshow), x, y, w, h); g.drawImage(ImageCache.getBorderImage(card, canshow), x, y, w, h);
g.drawImage(ImageCache.croppedBorderImage(image), x + radius / 2.4f, y + radius / 2, w * 0.96f, h * 0.96f); g.drawImage(ImageCache.croppedBorderImage(image, fullborder), x + radius / 2.4f, y + radius / 2, w * 0.96f, h * 0.96f);
} }
} } else {
else {
if (canshow && !ImageKeys.getTokenKey(ImageKeys.MORPH_IMAGE).equals(card.getState(altState).getImageKey())) if (canshow && !ImageKeys.getTokenKey(ImageKeys.MORPH_IMAGE).equals(card.getState(altState).getImageKey()))
g.drawImage(image, x, y, w, h); g.drawImage(image, x, y, w, h);
else // sleeve else // sleeve

View File

@@ -53,6 +53,7 @@ import forge.util.CardTranslation;
import forge.util.Utils; import forge.util.Utils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import forge.util.TextBounds; import forge.util.TextBounds;
import java.util.Arrays; import java.util.Arrays;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
@@ -405,17 +406,16 @@ public class CardRenderer {
if (image != null) { if (image != null) {
if (image == ImageCache.defaultImage) { if (image == ImageCache.defaultImage) {
CardImageRenderer.drawCardImage(g, CardView.getCardForUi(pc), false, x, y, w, h, pos); CardImageRenderer.drawCardImage(g, CardView.getCardForUi(pc), false, x, y, w, h, pos);
} } else {
else { boolean fullborder = image.toString().contains(".fullborder.");
if (Forge.enableUIMask) { if (Forge.enableUIMask) {
if (ImageCache.isExtendedArt(pc)) if (ImageCache.isExtendedArt(pc))
g.drawImage(image, x, y, w, h); g.drawImage(image, x, y, w, h);
else { else {
g.drawImage(ImageCache.getBorderImage(pc), x, y, w, h); g.drawImage(ImageCache.getBorderImage(pc), x, y, w, h);
g.drawImage(ImageCache.croppedBorderImage(image), x + radius / 2.4f, y + radius / 2, w * 0.96f, h * 0.96f); g.drawImage(ImageCache.croppedBorderImage(image, fullborder), x + radius / 2.4f, y + radius / 2, w * 0.96f, h * 0.96f);
} }
} } else
else
g.drawImage(image, x, y, w, h); g.drawImage(image, x, y, w, h);
} }
if (pc.isFoil()) { //draw foil effect if needed if (pc.isFoil()) { //draw foil effect if needed
@@ -425,8 +425,7 @@ public class CardRenderer {
} }
drawFoilEffect(g, card, x, y, w, h, false); drawFoilEffect(g, card, x, y, w, h, false);
} }
} } else {
else {
if (Forge.enableUIMask) //render this if mask is still loading if (Forge.enableUIMask) //render this if mask is still loading
CardImageRenderer.drawCardImage(g, CardView.getCardForUi(pc), false, x, y, w, h, pos); CardImageRenderer.drawCardImage(g, CardView.getCardForUi(pc), false, x, y, w, h, pos);
else //draw cards without textures as just a black rectangle else //draw cards without textures as just a black rectangle
@@ -442,8 +441,8 @@ public class CardRenderer {
if (image != null) { if (image != null) {
if (image == ImageCache.defaultImage) { if (image == ImageCache.defaultImage) {
CardImageRenderer.drawCardImage(g, card, false, x, y, w, h, pos); CardImageRenderer.drawCardImage(g, card, false, x, y, w, h, pos);
} } else {
else { boolean fullborder = image.toString().contains(".fullborder.");
if(FModel.getPreferences().getPrefBoolean(ForgePreferences.FPref.UI_ROTATE_PLANE_OR_PHENOMENON) if(FModel.getPreferences().getPrefBoolean(ForgePreferences.FPref.UI_ROTATE_PLANE_OR_PHENOMENON)
&& (card.getCurrentState().isPhenomenon() || card.getCurrentState().isPlane()) && rotate){ && (card.getCurrentState().isPhenomenon() || card.getCurrentState().isPlane()) && rotate){
if (Forge.enableUIMask) { if (Forge.enableUIMask) {
@@ -451,23 +450,20 @@ public class CardRenderer {
g.drawRotatedImage(image, x, y, w, h, x + w / 2, y + h / 2, -90); g.drawRotatedImage(image, x, y, w, h, x + w / 2, y + h / 2, -90);
else { else {
g.drawRotatedImage(FSkin.getBorders().get(0), x, y, w, h, x + w / 2, y + h / 2, -90); g.drawRotatedImage(FSkin.getBorders().get(0), x, y, w, h, x + w / 2, y + h / 2, -90);
g.drawRotatedImage(ImageCache.croppedBorderImage(image), x+radius/2.3f, y+radius/2, w*0.96f, h*0.96f, (x+radius/2.3f) + (w*0.96f) / 2, (y+radius/2) + (h*0.96f) / 2, -90); g.drawRotatedImage(ImageCache.croppedBorderImage(image, fullborder), x+radius/2.3f, y+radius/2, w*0.96f, h*0.96f, (x+radius/2.3f) + (w*0.96f) / 2, (y+radius/2) + (h*0.96f) / 2, -90);
} }
} } else
else
g.drawRotatedImage(image, x, y, w, h, x + w / 2, y + h / 2, -90); g.drawRotatedImage(image, x, y, w, h, x + w / 2, y + h / 2, -90);
} } else {
else {
if (Forge.enableUIMask && canshow) { if (Forge.enableUIMask && canshow) {
if (ImageCache.isExtendedArt(card)) if (ImageCache.isExtendedArt(card))
g.drawImage(image, x, y, w, h); g.drawImage(image, x, y, w, h);
else { else {
boolean t = (card.getCurrentState().getOriginalColors() != card.getCurrentState().getColors()) || card.getCurrentState().hasChangeColors(); boolean t = (card.getCurrentState().getOriginalColors() != card.getCurrentState().getColors()) || card.getCurrentState().hasChangeColors();
g.drawBorderImage(ImageCache.getBorderImage(card, canshow), ImageCache.getTint(card), x, y, w, h, t); //tint check for changed colors g.drawBorderImage(ImageCache.getBorderImage(card, canshow), ImageCache.getTint(card), x, y, w, h, t); //tint check for changed colors
g.drawImage(ImageCache.croppedBorderImage(image), x + radius / 2.4f, y + radius / 2, w * 0.96f, h * 0.96f); g.drawImage(ImageCache.croppedBorderImage(image, fullborder), x + radius / 2.4f, y + radius / 2, w * 0.96f, h * 0.96f);
} }
} } else {
else {
if (canshow) if (canshow)
g.drawImage(image, x, y, w, h); g.drawImage(image, x, y, w, h);
else // draw card back sleeves else // draw card back sleeves
@@ -476,8 +472,7 @@ public class CardRenderer {
} }
} }
drawFoilEffect(g, card, x, y, w, h, false); drawFoilEffect(g, card, x, y, w, h, false);
} } else {
else {
if (Forge.enableUIMask) //render this if mask is still loading if (Forge.enableUIMask) //render this if mask is still loading
CardImageRenderer.drawCardImage(g, card, false, x, y, w, h, pos); CardImageRenderer.drawCardImage(g, card, false, x, y, w, h, pos);
else //draw cards without textures as just a black rectangle else //draw cards without textures as just a black rectangle

View File

@@ -173,6 +173,7 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
new DeckSectionPage(DeckSection.Sideboard) new DeckSectionPage(DeckSection.Sideboard)
}; };
case Draft: case Draft:
case QuestDraft:
return new DeckEditorPage[] { return new DeckEditorPage[] {
new DraftPackPage(), new DraftPackPage(),
new DeckSectionPage(DeckSection.Main), new DeckSectionPage(DeckSection.Main),
@@ -215,12 +216,6 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
new DeckSectionPage(DeckSection.Main, ItemManagerConfig.QUEST_DECK_EDITOR), new DeckSectionPage(DeckSection.Main, ItemManagerConfig.QUEST_DECK_EDITOR),
new DeckSectionPage(DeckSection.Sideboard, ItemManagerConfig.QUEST_DECK_EDITOR) new DeckSectionPage(DeckSection.Sideboard, ItemManagerConfig.QUEST_DECK_EDITOR)
}; };
case QuestDraft:
return new DeckEditorPage[] {
new DraftPackPage(),
new DeckSectionPage(DeckSection.Main),
new DeckSectionPage(DeckSection.Sideboard, ItemManagerConfig.DRAFT_POOL)
};
case PlanarConquest: case PlanarConquest:
return new DeckEditorPage[] { return new DeckEditorPage[] {
new CatalogPage(ItemManagerConfig.CONQUEST_COLLECTION, localizer.getMessage("lblCollection"), FSkinImage.SPELLBOOK), new CatalogPage(ItemManagerConfig.CONQUEST_COLLECTION, localizer.getMessage("lblCollection"), FSkinImage.SPELLBOOK),
@@ -1731,6 +1726,7 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
DeckPreferences.setPlanarDeck(deckStr); DeckPreferences.setPlanarDeck(deckStr);
break; break;
case Draft: case Draft:
case QuestDraft:
DeckPreferences.setDraftDeck(deckStr); DeckPreferences.setDraftDeck(deckStr);
break; break;
case Sealed: case Sealed:
@@ -1740,10 +1736,6 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
FModel.getQuest().setCurrentDeck(model.toString()); FModel.getQuest().setCurrentDeck(model.toString());
FModel.getQuest().save(); FModel.getQuest().save();
break; break;
case QuestDraft:
FModel.getQuest().setCurrentDeck(model.toString());
FModel.getQuest().save();
break;
default: default:
break; break;
} }

View File

@@ -19,6 +19,7 @@ import forge.toolbox.FGroupList;
import forge.toolbox.FList; import forge.toolbox.FList;
import forge.toolbox.FEvent.FEventHandler; import forge.toolbox.FEvent.FEventHandler;
import forge.util.Callback; import forge.util.Callback;
import forge.util.Localizer;
import forge.util.TextUtil; import forge.util.TextUtil;
import forge.util.Utils; import forge.util.Utils;
@@ -40,13 +41,14 @@ public abstract class FormatFilter<T extends InventoryItem> extends ItemFilter<T
public FormatFilter(ItemManager<? super T> itemManager0) { public FormatFilter(ItemManager<? super T> itemManager0) {
super(itemManager0); super(itemManager0);
final Localizer localizer = Localizer.getInstance();
cbxFormats.setFont(FSkinFont.get(12)); cbxFormats.setFont(FSkinFont.get(12));
cbxFormats.addItem("All Sets/Formats"); cbxFormats.addItem(localizer.getMessage("lblAllSetsFormats"));
for (GameFormat format : FModel.getFormats().getFilterList()) { for (GameFormat format : FModel.getFormats().getFilterList()) {
cbxFormats.addItem(format); cbxFormats.addItem(format);
} }
cbxFormats.addItem("Other Formats..."); cbxFormats.addItem(localizer.getMessage("lblOtherFormats"));
cbxFormats.addItem("Choose Sets..."); cbxFormats.addItem(localizer.getMessage("lblChooseSets"));
selectedFormat = cbxFormats.getText(); selectedFormat = cbxFormats.getText();
cbxFormats.setChangedHandler(new FEventHandler() { cbxFormats.setChangedHandler(new FEventHandler() {

View File

@@ -12,6 +12,7 @@ import forge.screens.settings.SettingsScreen;
import forge.toolbox.FGroupList; import forge.toolbox.FGroupList;
import forge.toolbox.FList; import forge.toolbox.FList;
import forge.util.Callback; import forge.util.Callback;
import forge.util.Localizer;
import forge.util.Utils; import forge.util.Utils;
import java.util.Arrays; import java.util.Arrays;
@@ -32,7 +33,7 @@ public class HistoricFormatSelect extends FScreen {
private Runnable onCloseCallBack; private Runnable onCloseCallBack;
public HistoricFormatSelect() { public HistoricFormatSelect() {
super("Choose Format"); super(Localizer.getInstance().getMessage("lblChooseFormat"));
for (GameFormat.FormatType group:GameFormat.FormatType.values()){ for (GameFormat.FormatType group:GameFormat.FormatType.values()){
if (group == GameFormat.FormatType.Historic){ if (group == GameFormat.FormatType.Historic){
for (GameFormat.FormatSubType subgroup:GameFormat.FormatSubType.values()){ for (GameFormat.FormatSubType subgroup:GameFormat.FormatSubType.values()){

View File

@@ -144,8 +144,8 @@ public class ImageView<T extends InventoryItem> extends ItemView<T> {
} }
} }
private final ExpandCollapseButton btnExpandCollapseAll = new ExpandCollapseButton(); private final ExpandCollapseButton btnExpandCollapseAll = new ExpandCollapseButton();
private final FComboBox<Object> cbGroupByOptions = new FComboBox<>("Groups: "); private final FComboBox<Object> cbGroupByOptions = new FComboBox<>(Localizer.getInstance().getMessage("lblGroups") + " ");
private final FComboBox<Object> cbPileByOptions = new FComboBox<>("Piles: "); private final FComboBox<Object> cbPileByOptions = new FComboBox<>(Localizer.getInstance().getMessage("lblPiles") + " ");
public ImageView(ItemManager<T> itemManager0, ItemManagerModel<T> model0) { public ImageView(ItemManager<T> itemManager0, ItemManagerModel<T> model0) {
super(itemManager0, model0); super(itemManager0, model0);
@@ -670,7 +670,7 @@ public class ImageView<T extends InventoryItem> extends ItemView<T> {
@Override @Override
public String getCaption() { public String getCaption() {
return "Image View"; return Localizer.getInstance().getMessage("lblImageView");
} }
@Override @Override

View File

@@ -34,6 +34,7 @@ import forge.toolbox.FDisplayObject;
import forge.toolbox.FList; import forge.toolbox.FList;
import com.badlogic.gdx.math.Rectangle; import com.badlogic.gdx.math.Rectangle;
import forge.util.Localizer;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
@@ -81,7 +82,7 @@ public final class ItemListView<T extends InventoryItem> extends ItemView<T> {
@Override @Override
public String getCaption() { public String getCaption() {
return "List View"; return Localizer.getInstance().getMessage("lblListView");
} }
@Override @Override

View File

@@ -117,21 +117,23 @@ public class MatchController extends AbstractGuiGame {
@Override @Override
public void refreshCardDetails(final Iterable<CardView> cards) { public void refreshCardDetails(final Iterable<CardView> cards) {
/*//ensure cards appear in the correct row of the field //ensure cards appear in the correct row of the field
for (final VPlayerPanel pnl : view.getPlayerPanels().values()) { for (final VPlayerPanel pnl : view.getPlayerPanels().values()) {
pnl.getField().update(); pnl.getField().update(true);
}*/ }
} }
@Override @Override
public void refreshField() { public void refreshField() {
if(!GuiBase.isNetworkplay()) //TODO alternate method for update Netplay...
return;
if(getGameView() == null) if(getGameView() == null)
return; return;
if(getGameView().getPhase() == null) if(getGameView().getPhase() == null)
return; return;
if (getGameView().getPhase().phaseforUpdateField()) if (getGameView().getPhase().phaseforUpdateField())
for (final VPlayerPanel pnl : view.getPlayerPanels().values()) for (final VPlayerPanel pnl : view.getPlayerPanels().values())
pnl.getField().update(); pnl.getField().update(false);
} }
public boolean hotSeatMode() { public boolean hotSeatMode() {

View File

@@ -40,8 +40,11 @@ public class VField extends FContainer {
return cardPanels; return cardPanels;
} }
public void update() { public void update(boolean invokeInEdtNowOrLater) {
FThreads.invokeInEdtNowOrLater(updateRoutine); if (invokeInEdtNowOrLater)
FThreads.invokeInEdtNowOrLater(updateRoutine);
else
FThreads.invokeInEdtLater(updateRoutine);
} }
private final Runnable updateRoutine = new Runnable() { private final Runnable updateRoutine = new Runnable() {

View File

@@ -176,7 +176,7 @@ public class VPlayerPanel extends FContainer {
public void updateZone(ZoneType zoneType) { public void updateZone(ZoneType zoneType) {
if (zoneType == ZoneType.Battlefield ) { if (zoneType == ZoneType.Battlefield ) {
field.update(); field.update(true);
} }
else if (zoneType == ZoneType.Command) { else if (zoneType == ZoneType.Command) {
commandZone.update(); commandZone.update();

View File

@@ -38,6 +38,7 @@ import forge.toolbox.FDisplayObject;
import forge.toolbox.FEvent; import forge.toolbox.FEvent;
import forge.toolbox.FEvent.FEventHandler; import forge.toolbox.FEvent.FEventHandler;
import forge.toolbox.FLabel; import forge.toolbox.FLabel;
import forge.util.Localizer;
import forge.util.collect.FCollectionView; import forge.util.collect.FCollectionView;
import forge.util.Utils; import forge.util.Utils;
@@ -98,7 +99,7 @@ public class VStack extends FDropDown {
if (stackSize != stack.size()) { if (stackSize != stack.size()) {
int oldStackSize = stackSize; int oldStackSize = stackSize;
stackSize = stack.size(); stackSize = stack.size();
getMenuTab().setText("Stack (" + stackSize + ")"); getMenuTab().setText(Localizer.getInstance().getMessage("lblStack") + " (" + stackSize + ")");
if (stackSize > 0) { if (stackSize > 0) {
if (!isVisible()) { if (!isVisible()) {
@@ -133,7 +134,7 @@ public class VStack extends FDropDown {
final FCollectionView<StackItemView> stack = MatchController.instance.getGameView().getStack(); final FCollectionView<StackItemView> stack = MatchController.instance.getGameView().getStack();
if (stack.isEmpty()) { //show label if stack empty if (stack.isEmpty()) { //show label if stack empty
FLabel label = add(new FLabel.Builder().text("[Empty]").font(FONT).align(Align.center).build()); FLabel label = add(new FLabel.Builder().text("[" + Localizer.getInstance().getMessage("lblEmpty") + "]").font(FONT).align(Align.center).build());
float height = Math.round(label.getAutoSizeBounds().height) + 2 * PADDING; float height = Math.round(label.getAutoSizeBounds().height) + 2 * PADDING;
label.setBounds(x, y, width, height); label.setBounds(x, y, width, height);

View File

@@ -757,6 +757,7 @@ lblcopiesof=Kopien von
#ItemListView.java #ItemListView.java
lblUniqueCardsOnly=Nur eine Version lblUniqueCardsOnly=Nur eine Version
ttUniqueCardsOnly=Schaltet zwischen der Anzeige der neuesten oder aller Versionen einer Karte um. ttUniqueCardsOnly=Schaltet zwischen der Anzeige der neuesten oder aller Versionen einer Karte um.
lblListView=List View
#ACEditorBase.java #ACEditorBase.java
lblAddcard=Karten hinzufügen lblAddcard=Karten hinzufügen
ttAddcard=Fügt gewählte Karte dem Deck hinzu (oder Doppelklick oder Leertaste drücken) ttAddcard=Fügt gewählte Karte dem Deck hinzu (oder Doppelklick oder Leertaste drücken)
@@ -789,6 +790,9 @@ lblCollapseallgroups=Minimiere alle Gruppen
lblGroupby=Gruppiere nach lblGroupby=Gruppiere nach
lblPileby=Stapel nach lblPileby=Stapel nach
lblColumns=Spalten lblColumns=Spalten
lblPiles=Piles:
lblGroups=Groups:
lblImageView=Image View
#CEditorVariant.java, CEditorConstructed.java #CEditorVariant.java, CEditorConstructed.java
lblCatalog=Katalog lblCatalog=Katalog
lblAdd=Hinzufügen lblAdd=Hinzufügen
@@ -796,7 +800,7 @@ lbltodeck=zum Deck
lblfromdeck=vom Deck lblfromdeck=vom Deck
lbltosideboard=zum Sideboard lbltosideboard=zum Sideboard
lblfromsideboard=vom Sideboard lblfromsideboard=vom Sideboard
lblascommander=als General lblascommander=als Kommandeur
lblasoathbreaker=als "Eidbrecher" lblasoathbreaker=als "Eidbrecher"
lblassignaturespell=als "Signatur"-Spruch lblassignaturespell=als "Signatur"-Spruch
lblasavatar=als Avatar lblasavatar=als Avatar
@@ -1239,3 +1243,145 @@ lblLifePaidForPhyrexianMana=(%d Leben wurde bezahlt für phyrexianisches Mana)
lblClickOnYourLifeTotalToPayLifeForPhyrexianMana=Klicke auf deine Lebenspunkte um phyrexianisches Mana zu bezahlen. lblClickOnYourLifeTotalToPayLifeForPhyrexianMana=Klicke auf deine Lebenspunkte um phyrexianisches Mana zu bezahlen.
lblClickOnYourLifeTotalToPayLifeForBlackMana=Klicke auf deine Lebenspunkte um schwarzes Mana zu bezahlen. lblClickOnYourLifeTotalToPayLifeForBlackMana=Klicke auf deine Lebenspunkte um schwarzes Mana zu bezahlen.
lblClickOnYourLifeTotalToPayLifeForPhyrexianOrBlackMana=Klicke auf deine Lebenspunkte um phyrexianisches oder schwarzes Mana zu bezahlen. lblClickOnYourLifeTotalToPayLifeForPhyrexianOrBlackMana=Klicke auf deine Lebenspunkte um phyrexianisches oder schwarzes Mana zu bezahlen.
lblPuzzleText1=Puzzle Mode loads in a puzzle that you have to win in a predetermined time/way.
lblPuzzleText2=To begin, press the Start button below, then select a puzzle from a list.
lblPuzzleText3=Your objective will be displayed in a pop-up window when the puzzle starts and also specified on a special effect card which will be placed in your command zone.
lblChooseAPuzzle=Choose a puzzle
lblLoadingThePuzzle=Loading the puzzle...
#GameLogFormatter.java
lblLogScryTopBottomLibrary=%s scried %top card(s) to the top of the library and %bottom card(s) to the bottom of the library
lblLogScryTopLibrary=%s scried %top card(s) to the top of the library
lblLogScryBottomLibrary=%s scried %bottom card(s) to the bottom of the library
lblPlayerHasMulliganedDownToNCards=%s has mulliganed down to %d cards.
lblPlayerDidntAttackThisTurn=%s didn't attack this turn.
#FormatFilter.java
lblAllSetsFormats=All Sets/Formats
lblOtherFormats=Other Formats...
lblChooseSets=Choose Sets...
#HistoricFormatSelect.java
lblChooseFormat=Choose Format
#TriggerAdapt.java
lblAdapt=Adapt
#TriggerAttached.java
lblAttachee=Attachee
#TriggerAttackerBlocked.java
lblNumberBlockers=Number Blockers
lblBlocker=Blocker
#TriggerAttackersDeclared.java
lblNumberAttackers=Number Attackers
#TriggerAttackerUnblockedOnce.java
lblAttackingPlayer=AttackingPlayer
lblDefenders=Defenders
#TriggerBecomeMonarch.java
lblPlayer=Player
#TriggerBecomeMonstrous.java
lblMonstrous=Monstrous
#TriggerBecomeRenowned.java
lblRenowned=Renowned
#TriggerBecomesTarget.java
lblSource=Source
lblTarget=Target
#TriggerBecomesTargetOnce.java
lblTargets=Targets
#TriggerBlockersDeclared.java
lblBlockers=Blockers
#TriggerChampioned.java
lblChampioned=Championed
#TriggerChangesController.java
lblChangedController=Changed Controller
#TriggerChangesZone.java
lblZoneChanger=Zone Changer
#TriggerChangesZoneAll.java
lblAmount=Amount
#TriggerCounterAdded.java
lblAddedOnce=Added once
#TriggerCountered.java
lblCountered=Countered
lblCause=Cause
#TriggerCounteredRemoved.java
lblRemovedFrom=Removed from
#TriggerCrewed.java
lblVehicle=Vehicle
lblCrew=Crew
#TriggerCycled.java
lblCycled=Cycled
#TriggerDamageDealtOnce.java
lblDamageSource=Damage Source
lblDamaged=Damaged
#TriggerDamagePrevented.java
lblDamageTarget=Damage Target
#TriggerDestroyed.java
lblDestroyed=Destroyed
lblDestroyer=Destroyer
#TriggerDevoured.java
lblDevoured=Devoured
#TriggerDiscarded.java
lblDiscarded=Discarded
#TriggerEvolved.java
lblEvolved=Evolved
#TriggerExerted.java
lblExerted=Exerted
#TriggerExiled.java
lblExiled=Exiled
#TriggerExploited.java
lblExploited=Exploited
lblExploiter=Exploiter
#TriggerExplores.java
lblExplorer=Explorer
#TriggerFight.java
lblFighter=Fighter
#TriggerLandPlayed.java
lblLandPlayed=Land played
#TriggerLifeGained.java
lblGainedAmount=Gained Amount
#TriggerLifeLost.java
lblLostAmount=Lost Amount
#TriggerPayCumulativeUpkeep.java
lblMana=Mana
#TriggerPayLife.java
lblPaidAmount=Paid Amount
#TriggerPhaseIn.java
lblPhasedIn=Phased In
#TriggerPhaseOut.java
lblPhasedOut=Phased Out
#TriggerRoller.java
lblRoller=Roller
#TriggerPlaneswalkedFrom.java
lblPlaneswalkedFrom=Planeswalked From
#TriggerPlaneswalkedTo.java
lblPlaneswalkedTo=Planeswalked To
#TriggerRegenerated.java
lblRegenerated=Regenerated
#TriggerRevealed.java
lblRevealed=Revealed
#TriggerSacrificed.java
lblSacrificed=Sacrificed
#TriggerScry.java
lblScryer=Scryer
#TriggerSearchLibrary.java
lblSearcher=Searcher
#TriggerShuffled.java
lblShuffler=Shuffler
#TriggerSpellAbilityCast.java
lblActivator=Activator
#TriggerSpellAbilityCast.java
lblSpellAbility=SpellAbility
#TriggerTaps.java
lblTapped=Tapped
#TriggerTapsForMana.java
lblTappedForMana=Tapped for Mana
lblProduced=Produced
#TriggerTransformed.java
lblTransformed=Transformed
#TriggerTurnFaceUp.java
lblTurnFaceUp=Turn Face up
#TriggerUnattach.java
lblObject=Object
lblAttachment=Attachment
#TriggerUntaps.java
lblUntapped=Untapped
#TriggerVote.java
lblVoters=Voters
#PermanentCreatureEffect.java
lblCreature=Creature

View File

@@ -759,6 +759,7 @@ lblcopiesof=copies of
#ItemListView.java #ItemListView.java
lblUniqueCardsOnly=Unique Cards Only lblUniqueCardsOnly=Unique Cards Only
ttUniqueCardsOnly=Toggle whether to show unique cards only ttUniqueCardsOnly=Toggle whether to show unique cards only
lblListView=List View
#ACEditorBase.java #ACEditorBase.java
lblAddcard=Add card lblAddcard=Add card
ttAddcard=Add selected card to current deck (or double click the row or hit the spacebar) ttAddcard=Add selected card to current deck (or double click the row or hit the spacebar)
@@ -791,6 +792,9 @@ lblCollapseallgroups=Collapse all groups
lblGroupby=group by lblGroupby=group by
lblPileby=pile by lblPileby=pile by
lblColumns=Columns lblColumns=Columns
lblPiles=Piles:
lblGroups=Groups:
lblImageView=Image View
#CEditorVariant.java, CEditorConstructed.java #CEditorVariant.java, CEditorConstructed.java
lblCatalog=Catalog lblCatalog=Catalog
lblAdd=Add lblAdd=Add
@@ -1240,4 +1244,140 @@ lblPayManaCost=Pay Mana Cost:
lblLifePaidForPhyrexianMana=(%d life paid for phyrexian mana) lblLifePaidForPhyrexianMana=(%d life paid for phyrexian mana)
lblClickOnYourLifeTotalToPayLifeForPhyrexianMana=Click on your life total to pay life for phyrexian mana. lblClickOnYourLifeTotalToPayLifeForPhyrexianMana=Click on your life total to pay life for phyrexian mana.
lblClickOnYourLifeTotalToPayLifeForBlackMana=Click on your life total to pay life for black mana. lblClickOnYourLifeTotalToPayLifeForBlackMana=Click on your life total to pay life for black mana.
lblClickOnYourLifeTotalToPayLifeForPhyrexianOrBlackMana=Click on your life total to pay life for phyrexian mana or black mana. lblClickOnYourLifeTotalToPayLifeForPhyrexianOrBlackMana=Click on your life total to pay life for phyrexian mana or black mana.
#GameLogFormatter.java
lblLogScryTopBottomLibrary=%s scried %top card(s) to the top of the library and %bottom card(s) to the bottom of the library
lblLogScryTopLibrary=%s scried %top card(s) to the top of the library
lblLogScryBottomLibrary=%s scried %bottom card(s) to the bottom of the library
lblPlayerHasMulliganedDownToNCards=%s has mulliganed down to %d cards.
lblPlayerDidntAttackThisTurn=%s didn't attack this turn.
#FormatFilter.java
lblAllSetsFormats=All Sets/Formats
lblOtherFormats=Other Formats...
lblChooseSets=Choose Sets...
#HistoricFormatSelect.java
lblChooseFormat=Choose Format
#TriggerAdapt.java
lblAdapt=Adapt
#TriggerAttached.java
lblAttachee=Attachee
#TriggerAttackerBlocked.java
lblNumberBlockers=Number Blockers
lblBlocker=Blocker
#TriggerAttackersDeclared.java
lblNumberAttackers=Number Attackers
#TriggerAttackerUnblockedOnce.java
lblAttackingPlayer=AttackingPlayer
lblDefenders=Defenders
#TriggerBecomeMonarch.java
lblPlayer=Player
#TriggerBecomeMonstrous.java
lblMonstrous=Monstrous
#TriggerBecomeRenowned.java
lblRenowned=Renowned
#TriggerBecomesTarget.java
lblSource=Source
lblTarget=Target
#TriggerBecomesTargetOnce.java
lblTargets=Targets
#TriggerBlockersDeclared.java
lblBlockers=Blockers
#TriggerChampioned.java
lblChampioned=Championed
#TriggerChangesController.java
lblChangedController=Changed Controller
#TriggerChangesZone.java
lblZoneChanger=Zone Changer
#TriggerChangesZoneAll.java
lblAmount=Amount
#TriggerCounterAdded.java
lblAddedOnce=Added once
#TriggerCountered.java
lblCountered=Countered
lblCause=Cause
#TriggerCounteredRemoved.java
lblRemovedFrom=Removed from
#TriggerCrewed.java
lblVehicle=Vehicle
lblCrew=Crew
#TriggerCycled.java
lblCycled=Cycled
#TriggerDamageDealtOnce.java
lblDamageSource=Damage Source
lblDamaged=Damaged
#TriggerDamagePrevented.java
lblDamageTarget=Damage Target
#TriggerDestroyed.java
lblDestroyed=Destroyed
lblDestroyer=Destroyer
#TriggerDevoured.java
lblDevoured=Devoured
#TriggerDiscarded.java
lblDiscarded=Discarded
#TriggerEvolved.java
lblEvolved=Evolved
#TriggerExerted.java
lblExerted=Exerted
#TriggerExiled.java
lblExiled=Exiled
#TriggerExploited.java
lblExploited=Exploited
lblExploiter=Exploiter
#TriggerExplores.java
lblExplorer=Explorer
#TriggerFight.java
lblFighter=Fighter
#TriggerLandPlayed.java
lblLandPlayed=Land played
#TriggerLifeGained.java
lblGainedAmount=Gained Amount
#TriggerLifeLost.java
lblLostAmount=Lost Amount
#TriggerPayCumulativeUpkeep.java
lblMana=Mana
#TriggerPayLife.java
lblPaidAmount=Paid Amount
#TriggerPhaseIn.java
lblPhasedIn=Phased In
#TriggerPhaseOut.java
lblPhasedOut=Phased Out
#TriggerRoller.java
lblRoller=Roller
#TriggerPlaneswalkedFrom.java
lblPlaneswalkedFrom=Planeswalked From
#TriggerPlaneswalkedTo.java
lblPlaneswalkedTo=Planeswalked To
#TriggerRegenerated.java
lblRegenerated=Regenerated
#TriggerRevealed.java
lblRevealed=Revealed
#TriggerSacrificed.java
lblSacrificed=Sacrificed
#TriggerScry.java
lblScryer=Scryer
#TriggerSearchLibrary.java
lblSearcher=Searcher
#TriggerShuffled.java
lblShuffler=Shuffler
#TriggerSpellAbilityCast.java
lblActivator=Activator
#TriggerSpellAbilityCast.java
lblSpellAbility=SpellAbility
#TriggerTaps.java
lblTapped=Tapped
#TriggerTapsForMana.java
lblTappedForMana=Tapped for Mana
lblProduced=Produced
#TriggerTransformed.java
lblTransformed=Transformed
#TriggerTurnFaceUp.java
lblTurnFaceUp=Turn Face up
#TriggerUnattach.java
lblObject=Object
lblAttachment=Attachment
#TriggerUntaps.java
lblUntapped=Untapped
#TriggerVote.java
lblVoters=Voters
#PermanentCreatureEffect.java
lblCreature=Creature

View File

@@ -757,6 +757,7 @@ lblcopiesof=copias de
#ItemListView.java #ItemListView.java
lblUniqueCardsOnly=Solo Cartas Únicas lblUniqueCardsOnly=Solo Cartas Únicas
ttUniqueCardsOnly=Alternar para mostrar solo cartas únicas ttUniqueCardsOnly=Alternar para mostrar solo cartas únicas
lblListView=Vista de Lista
#ACEditorBase.java #ACEditorBase.java
lblAddcard=Añadir carta lblAddcard=Añadir carta
ttAddcard=Añade la carta seleccionada al mazo actual (o haz doble clic en la fila o presiona la barra espaciadora) ttAddcard=Añade la carta seleccionada al mazo actual (o haz doble clic en la fila o presiona la barra espaciadora)
@@ -789,6 +790,9 @@ lblCollapseallgroups=Contraer todos los grupos
lblGroupby=agrupar por lblGroupby=agrupar por
lblPileby=apilar por lblPileby=apilar por
lblColumns=Columnas lblColumns=Columnas
lblPiles=Apilar:
lblGroups=Agrupar:
lblImageView=Vista de Imágenes
#CEditorVariant.java, CEditorConstructed.java #CEditorVariant.java, CEditorConstructed.java
lblCatalog=Catálogo lblCatalog=Catálogo
lblAdd=Añadir lblAdd=Añadir
@@ -1238,4 +1242,140 @@ lblPayManaCost=Paga el coste de maná:
lblLifePaidForPhyrexianMana=(%d de vida pagado por el maná filaxiano) lblLifePaidForPhyrexianMana=(%d de vida pagado por el maná filaxiano)
lblClickOnYourLifeTotalToPayLifeForPhyrexianMana=Haga clic en el total de su vida para pagar la vida por el maná filaxiano. lblClickOnYourLifeTotalToPayLifeForPhyrexianMana=Haga clic en el total de su vida para pagar la vida por el maná filaxiano.
lblClickOnYourLifeTotalToPayLifeForBlackMana=Haga clic en el total de su vida para pagar la vida de maná negro. lblClickOnYourLifeTotalToPayLifeForBlackMana=Haga clic en el total de su vida para pagar la vida de maná negro.
lblClickOnYourLifeTotalToPayLifeForPhyrexianOrBlackMana=Haga clic en el total de su vida para pagar la vida por maná filoxiano o maná negro. lblClickOnYourLifeTotalToPayLifeForPhyrexianOrBlackMana=Haga clic en el total de su vida para pagar la vida por maná filoxiano o maná negro.
#GameLogFormatter.java
lblLogScryTopBottomLibrary=%s adivinó %top carta(s) de la parte superior de la biblioteca y %bottom carta(s) de la parte inferior de la biblioteca
lblLogScryTopLibrary=%s adivinó %top carta(s) de la parte superior de la biblioteca
lblLogScryBottomLibrary=%s adivinó %bottom carta(s) de la parte inferior de la biblioteca
lblPlayerHasMulliganedDownToNCards=%s ha hecho mulligan a %d cartas.
lblPlayerDidntAttackThisTurn=%s no atacó este turno.
#FormatFilter.java
lblAllSetsFormats=Todos los Sets/Formatos
lblOtherFormats=Otros Formatos...
lblChooseSets=Selecciona Sets...
#HistoricFormatSelect.java
lblChooseFormat=Selecciona Formato
#TriggerAdapt.java
lblAdapt=Adaptar
#TriggerAttached.java
lblAttachee=Acoplado
#TriggerAttackerBlocked.java
lblNumberBlockers=Número de Bloqueadores
lblBlocker=Bloqueador
#TriggerAttackersDeclared.java
lblNumberAttackers=Número de Atacantes
#TriggerAttackerUnblockedOnce.java
lblAttackingPlayer=Jugador Atacante
lblDefenders=Defensores
#TriggerBecomeMonarch.java
lblPlayer=Jugador
#TriggerBecomeMonstrous.java
lblMonstrous=Monstruoso
#TriggerBecomeRenowned.java
lblRenowned=Renombrado
#TriggerBecomesTarget.java
lblSource=Origen
lblTarget=Objetivo
#TriggerBecomesTargetOnce.java
lblTargets=Objetivos
#TriggerBlockersDeclared.java
lblBlockers=Bloqueadores
#TriggerChampioned.java
lblChampioned=Promovido
#TriggerChangesController.java
lblChangedController=Controlador Cambiado
#TriggerChangesZone.java
lblZoneChanger=Cambiador de Zona
#TriggerChangesZoneAll.java
lblAmount=Cantidad
#TriggerCounterAdded.java
lblAddedOnce=Añadido una vez
#TriggerCountered.java
lblCountered=Contrarrestado
lblCause=Motivo
#TriggerCounteredRemoved.java
lblRemovedFrom=Eliminado de
#TriggerCrewed.java
lblVehicle=Vehículo
lblCrew=Tripulación
#TriggerCycled.java
lblCycled=Ciclado
#TriggerDamageDealtOnce.java
lblDamageSource=Origen del Daño
lblDamaged=Dañado
#TriggerDamagePrevented.java
lblDamageTarget=Dañar Objetivo
#TriggerDestroyed.java
lblDestroyed=Destruido
lblDestroyer=Destructor
#TriggerDevoured.java
lblDevoured=Devorado
#TriggerDiscarded.java
lblDiscarded=Descartado
#TriggerEvolved.java
lblEvolved=Evolucionado
#TriggerExerted.java
lblExerted=Ejecutado
#TriggerExiled.java
lblExiled=Exiliado
#TriggerExploited.java
lblExploited=Explotado
lblExploiter=Explotador
#TriggerExplores.java
lblExplorer=Explorador
#TriggerFight.java
lblFighter=Luchador
#TriggerLandPlayed.java
lblLandPlayed=Tierra jugada
#TriggerLifeGained.java
lblGainedAmount=Cantidad Ganada
#TriggerLifeLost.java
lblLostAmount=Cantidad Perdida
#TriggerPayCumulativeUpkeep.java
lblMana=Maná
#TriggerPayLife.java
lblPaidAmount=Cantidad Pagada
#TriggerPhaseIn.java
lblPhasedIn=En Fase
#TriggerPhaseOut.java
lblPhasedOut=Fuera de Fase
#TriggerRoller.java
lblRoller=Tirador de dados
#TriggerPlaneswalkedFrom.java
lblPlaneswalkedFrom=Planeswalked Desde
#TriggerPlaneswalkedTo.java
lblPlaneswalkedTo=Planeswalked A
#TriggerRegenerated.java
lblRegenerated=Regenerado
#TriggerRevealed.java
lblRevealed=Revelado
#TriggerSacrificed.java
lblSacrificed=Sacrificado
#TriggerScry.java
lblScryer=Escrutador
#TriggerSearchLibrary.java
lblSearcher=Buscador
#TriggerShuffled.java
lblShuffler=Barajeador
#TriggerSpellAbilityCast.java
lblActivator=Activador
#TriggerSpellAbilityCast.java
lblSpellAbility=Habilidad de Hechizo
#TriggerTaps.java
lblTapped=Girado
#TriggerTapsForMana.java
lblTappedForMana=Girado para Maná
lblProduced=Producido
#TriggerTransformed.java
lblTransformed=Transformado
#TriggerTurnFaceUp.java
lblTurnFaceUp=Poner la cara hacia arriba
#TriggerUnattach.java
lblObject=Objeto
lblAttachment=Adjunto
#TriggerUntaps.java
lblUntapped=Desgirado
#TriggerVote.java
lblVoters=Votantes
#PermanentCreatureEffect.java
lblCreature=Criatura

View File

@@ -757,6 +757,7 @@ lblcopiesof=副本
#ItemListView.java #ItemListView.java
lblUniqueCardsOnly=每张牌都只显示一个画 lblUniqueCardsOnly=每张牌都只显示一个画
ttUniqueCardsOnly=切换是否每张牌都只显示一个画 ttUniqueCardsOnly=切换是否每张牌都只显示一个画
lblListView=列表视图
#ACEditorBase.java #ACEditorBase.java
lblAddcard=添加牌 lblAddcard=添加牌
ttAddcard=将选定的牌添加到当前套牌(双击该行或者空格) ttAddcard=将选定的牌添加到当前套牌(双击该行或者空格)
@@ -789,6 +790,9 @@ lblCollapseallgroups=折叠所有组
lblGroupby=分组 lblGroupby=分组
lblPileby=堆积 lblPileby=堆积
lblColumns= lblColumns=
lblPiles=柱状:
lblGroups=分组:
lblImageView=图片视图
#CEditorVariant.java, CEditorConstructed.java #CEditorVariant.java, CEditorConstructed.java
lblCatalog=目录 lblCatalog=目录
lblAdd=添加 lblAdd=添加
@@ -808,7 +812,7 @@ lbltoplanardeck=到时空竞逐套牌
lbltoconspiracydeck=到诡局套牌 lbltoconspiracydeck=到诡局套牌
lblMove=移到 lblMove=移到
#VDock.java #VDock.java
lblDock=Dock lblDock=停靠栏
lblViewDeckList=查看套牌列表 lblViewDeckList=查看套牌列表
lblRevertLayout=还原布局 lblRevertLayout=还原布局
lblOpenLayout=打开布局 lblOpenLayout=打开布局
@@ -1238,4 +1242,140 @@ lblPayManaCost=支付法术力:
lblLifePaidForPhyrexianMana=(以%d生命支付了非瑞克西亚法术力 lblLifePaidForPhyrexianMana=(以%d生命支付了非瑞克西亚法术力
lblClickOnYourLifeTotalToPayLifeForPhyrexianMana=单击你的总生命,以生命值支付非瑞克西亚法术力。 lblClickOnYourLifeTotalToPayLifeForPhyrexianMana=单击你的总生命,以生命值支付非瑞克西亚法术力。
lblClickOnYourLifeTotalToPayLifeForBlackMana=单击你的总生命,以生命值支付黑色法术力。 lblClickOnYourLifeTotalToPayLifeForBlackMana=单击你的总生命,以生命值支付黑色法术力。
lblClickOnYourLifeTotalToPayLifeForPhyrexianOrBlackMana=单击你的总生命,以生命值支付黑色或非瑞克西亚法术力。 lblClickOnYourLifeTotalToPayLifeForPhyrexianOrBlackMana=单击你的总生命,以生命值支付黑色或非瑞克西亚法术力。
#GameLogFormatter.java
lblLogScryTopBottomLibrary=%s将%top张牌放到牌库顶和%bottom张牌放到牌库底
lblLogScryTopLibrary=%s将%top张牌放到牌库顶
lblLogScryBottomLibrary=%s将%top张牌放到牌库底
lblPlayerHasMulliganedDownToNCards=%s已经调度到%d张牌。
lblPlayerDidntAttackThisTurn=%s本回合没有进攻。
#FormatFilter.java
lblAllSetsFormats=所有系列/赛制
lblOtherFormats=其他赛制
lblChooseSets=选择系列
#HistoricFormatSelect.java
lblChooseFormat=选择赛制
#TriggerAdapt.java
lblAdapt=演化
#TriggerAttached.java
lblAttachee=结附
#TriggerAttackerBlocked.java
lblNumberBlockers=阻挡者数
lblBlocker=阻挡者
#TriggerAttackersDeclared.java
lblNumberAttackers=攻击者数
#TriggerAttackerUnblockedOnce.java
lblAttackingPlayer=进攻牌手
lblDefenders=阻挡者
#TriggerBecomeMonarch.java
lblPlayer=牌手
#TriggerBecomeMonstrous.java
lblMonstrous=已蛮化
#TriggerBecomeRenowned.java
lblRenowned=已铭勇
#TriggerBecomesTarget.java
lblSource=来源
lblTarget=目标
#TriggerBecomesTargetOnce.java
lblTargets=目标
#TriggerBlockersDeclared.java
lblBlockers=阻挡者
#TriggerChampioned.java
lblChampioned=夺冠
#TriggerChangesController.java
lblChangedController=改变操控者
#TriggerChangesZone.java
lblZoneChanger=改变区域
#TriggerChangesZoneAll.java
lblAmount=共计
#TriggerCounterAdded.java
lblAddedOnce=添加一次
#TriggerCountered.java
lblCountered=反击
lblCause=原因
#TriggerCounteredRemoved.java
lblRemovedFrom=删除
#TriggerCrewed.java
lblVehicle=载具
lblCrew=搭载
#TriggerCycled.java
lblCycled=已循环
#TriggerDamageDealtOnce.java
lblDamageSource=伤害来源
lblDamaged=造成伤害
#TriggerDamagePrevented.java
lblDamageTarget=伤害目标
#TriggerDestroyed.java
lblDestroyed=被消灭
lblDestroyer=破坏者
#TriggerDevoured.java
lblDevoured=已吞噬
#TriggerDiscarded.java
lblDiscarded=丢弃
#TriggerEvolved.java
lblEvolved=已进化
#TriggerExerted.java
lblExerted=已耗竭
#TriggerExiled.java
lblExiled=被放逐
#TriggerExploited.java
lblExploited=被榨取
lblExploiter=榨取者
#TriggerExplores.java
lblExplorer=勘察者
#TriggerFight.java
lblFighter=互斗者
#TriggerLandPlayed.java
lblLandPlayed=已下地
#TriggerLifeGained.java
lblGainedAmount=获得的数量
#TriggerLifeLost.java
lblLostAmount=失去的数量
#TriggerPayCumulativeUpkeep.java
lblMana=法术力
#TriggerPayLife.java
lblPaidAmount=已支付的数量
#TriggerPhaseIn.java
lblPhasedIn=已跃回
#TriggerPhaseOut.java
lblPhasedOut=已跃离
#TriggerRoller.java
lblRoller=回滚者
#TriggerPlaneswalkedFrom.java
lblPlaneswalkedFrom=时空旅行自
#TriggerPlaneswalkedTo.java
lblPlaneswalkedTo=时空旅行到
#TriggerRegenerated.java
lblRegenerated=已重生
#TriggerRevealed.java
lblRevealed=已展示
#TriggerSacrificed.java
lblSacrificed=已牺牲
#TriggerScry.java
lblScryer=占卜者
#TriggerSearchLibrary.java
lblSearcher=搜寻者
#TriggerShuffled.java
lblShuffler=洗牌者
#TriggerSpellAbilityCast.java
lblActivator=启动自
#TriggerSpellAbilityCast.java
lblSpellAbility=咒语异能
#TriggerTaps.java
lblTapped=已横置
#TriggerTapsForMana.java
lblTappedForMana=为法术力横置
lblProduced=产生
#TriggerTransformed.java
lblTransformed=已转化
#TriggerTurnFaceUp.java
lblTurnFaceUp=面朝上
#TriggerUnattach.java
lblObject=物件
lblAttachment=装备
#TriggerUntaps.java
lblUntapped=未横置
#TriggerVote.java
lblVoters=投票
#PermanentCreatureEffect.java
lblCreature=生物

View File

@@ -301,8 +301,7 @@ public class FControlGameEventHandler extends IGameEventVisitor.Base<Void> {
@Override @Override
public Void visit(final GameEventCardTapped event) { public Void visit(final GameEventCardTapped event) {
if(GuiBase.isNetworkplay()) refreshFieldUpdate = true; //update all players field when event un/tapped
refreshFieldUpdate = true; //update all players field when event un/tapped
processCard(event.card, cardsUpdate); processCard(event.card, cardsUpdate);
return processEvent(); return processEvent();
} }

View File

@@ -165,6 +165,8 @@ public interface IGuiGame {
void setSelectables(final Iterable<CardView> cards); void setSelectables(final Iterable<CardView> cards);
void clearSelectables(); void clearSelectables();
boolean isSelecting(); boolean isSelecting();
boolean isGamePaused();
public void setgamePause(boolean pause);
void awaitNextInput(); void awaitNextInput();
void cancelAwaitNextInput(); void cancelAwaitNextInput();

View File

@@ -40,6 +40,7 @@ public abstract class AbstractGuiGame implements IGuiGame, IMayViewCards {
private IGameController spectator = null; private IGameController spectator = null;
private final Map<PlayerView, IGameController> gameControllers = Maps.newHashMap(); private final Map<PlayerView, IGameController> gameControllers = Maps.newHashMap();
private final Map<PlayerView, IGameController> originalGameControllers = Maps.newHashMap(); private final Map<PlayerView, IGameController> originalGameControllers = Maps.newHashMap();
private boolean gamePause = false;
public final boolean hasLocalPlayers() { public final boolean hasLocalPlayers() {
return !gameControllers.isEmpty(); return !gameControllers.isEmpty();
@@ -263,6 +264,8 @@ public abstract class AbstractGuiGame implements IGuiGame, IMayViewCards {
public boolean isSelecting() { public boolean isSelecting() {
return !selectableCards.isEmpty(); return !selectableCards.isEmpty();
} }
public boolean isGamePaused() { return gamePause; }
public void setgamePause(boolean pause) { gamePause = pause; }
/** Concede game, bring up WinLose UI. */ /** Concede game, bring up WinLose UI. */
public boolean concede() { public boolean concede() {
@@ -297,7 +300,8 @@ public abstract class AbstractGuiGame implements IGuiGame, IMayViewCards {
if (showConfirmDialog(Localizer.getInstance().getMessage("lblCloseGameSpectator"), Localizer.getInstance().getMessage("lblCloseGame"), Localizer.getInstance().getMessage("lblClose"), Localizer.getInstance().getMessage("lblCancel"))) { if (showConfirmDialog(Localizer.getInstance().getMessage("lblCloseGameSpectator"), Localizer.getInstance().getMessage("lblCloseGame"), Localizer.getInstance().getMessage("lblClose"), Localizer.getInstance().getMessage("lblCancel"))) {
IGameController controller = spectator; IGameController controller = spectator;
spectator = null; //ensure we don't prompt again, including when calling nextGameDecision below spectator = null; //ensure we don't prompt again, including when calling nextGameDecision below
controller.selectButtonOk(); //pause if (!isGamePaused())
controller.selectButtonOk(); //pause
controller.nextGameDecision(NextGameDecision.QUIT); controller.nextGameDecision(NextGameDecision.QUIT);
} }
return false; //let logic above handle closing current screen return false; //let logic above handle closing current screen

View File

@@ -48,6 +48,7 @@ public class InputPlaybackControl extends InputSyncronizedBase {
} else { } else {
getController().getGui().updateButtons(null, "Pause", isFast ? "1x Speed" : "10x Faster", true, true, true); getController().getGui().updateButtons(null, "Pause", isFast ? "1x Speed" : "10x Faster", true, true, true);
} }
getController().getGui().setgamePause(isPaused);
} }
public void pause() { public void pause() {