mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-17 11:18:01 +00:00
Merge branch 'master' of git.cardforge.org:core-developers/forge into start_replacement_run_keys_refactor
This commit is contained in:
@@ -3653,6 +3653,8 @@ public class Card extends GameEntity implements Comparable<Card> {
|
|||||||
|
|
||||||
if (updateView) {
|
if (updateView) {
|
||||||
updateKeywords();
|
updateKeywords();
|
||||||
|
if (isToken())
|
||||||
|
game.fireEvent(new GameEventTokenStateUpdate(this));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3707,6 +3709,8 @@ public class Card extends GameEntity implements Comparable<Card> {
|
|||||||
KeywordsChange change = changedCardKeywords.remove(timestamp);
|
KeywordsChange change = changedCardKeywords.remove(timestamp);
|
||||||
if (change != null && updateView) {
|
if (change != null && updateView) {
|
||||||
updateKeywords();
|
updateKeywords();
|
||||||
|
if (isToken())
|
||||||
|
game.fireEvent(new GameEventTokenStateUpdate(this));
|
||||||
}
|
}
|
||||||
return change;
|
return change;
|
||||||
}
|
}
|
||||||
@@ -5409,6 +5413,59 @@ public class Card extends GameEntity implements Comparable<Card> {
|
|||||||
}
|
}
|
||||||
return protectKey;
|
return protectKey;
|
||||||
}
|
}
|
||||||
|
public String getHexproofKey() {
|
||||||
|
String hexproofKey = "";
|
||||||
|
boolean hR = false; boolean hG = false; boolean hB = false; boolean hU = false; boolean hW = false;
|
||||||
|
for (final KeywordInterface inst : getKeywords()) {
|
||||||
|
String kw = inst.getOriginal();
|
||||||
|
if (!kw.startsWith("Hexproof")) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (kw.equals("Hexproof")) {
|
||||||
|
hexproofKey += "generic:";
|
||||||
|
}
|
||||||
|
if (kw.startsWith("Hexproof:")) {
|
||||||
|
String[] k = kw.split(":");
|
||||||
|
if (k[2].toString().equals("red")) {
|
||||||
|
if (!hR) {
|
||||||
|
hR = true;
|
||||||
|
hexproofKey += "R:";
|
||||||
|
}
|
||||||
|
} else if (k[2].toString().equals("green")) {
|
||||||
|
if (!hG) {
|
||||||
|
hG = true;
|
||||||
|
hexproofKey += "G:";
|
||||||
|
}
|
||||||
|
} else if (k[2].toString().equals("black")) {
|
||||||
|
if (!hB) {
|
||||||
|
hB = true;
|
||||||
|
hexproofKey += "B:";
|
||||||
|
}
|
||||||
|
} else if (k[2].toString().equals("blue")) {
|
||||||
|
if (!hU) {
|
||||||
|
hU = true;
|
||||||
|
hexproofKey += "U:";
|
||||||
|
}
|
||||||
|
} else if (k[2].toString().equals("white")) {
|
||||||
|
if (!hW) {
|
||||||
|
hW = true;
|
||||||
|
hexproofKey += "W:";
|
||||||
|
}
|
||||||
|
} else if (k[2].toString().equals("monocolored")) {
|
||||||
|
hexproofKey += "monocolored:";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return hexproofKey;
|
||||||
|
}
|
||||||
|
public String getKeywordKey() {
|
||||||
|
List<String> ability = new ArrayList<>();
|
||||||
|
for (final KeywordInterface inst : getKeywords()) {
|
||||||
|
ability.add(inst.getOriginal());
|
||||||
|
}
|
||||||
|
Collections.sort(ability);
|
||||||
|
return String.join(",", ability);
|
||||||
|
}
|
||||||
public Zone getZone() {
|
public Zone getZone() {
|
||||||
return currentZone;
|
return currentZone;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1017,7 +1017,9 @@ public class CardView extends GameEntityView {
|
|||||||
foilIndexOverride = index0;
|
foilIndexOverride = index0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getKeywordKey() { return get(TrackableProperty.KeywordKey); }
|
||||||
public String getProtectionKey() { return get(TrackableProperty.ProtectionKey); }
|
public String getProtectionKey() { return get(TrackableProperty.ProtectionKey); }
|
||||||
|
public String getHexproofKey() { return get(TrackableProperty.HexproofKey); }
|
||||||
public boolean hasDeathtouch() { return get(TrackableProperty.HasDeathtouch); }
|
public boolean hasDeathtouch() { return get(TrackableProperty.HasDeathtouch); }
|
||||||
public boolean hasDefender() { return get(TrackableProperty.HasDefender); }
|
public boolean hasDefender() { return get(TrackableProperty.HasDefender); }
|
||||||
public boolean hasDoubleStrike() { return get(TrackableProperty.HasDoubleStrike); }
|
public boolean hasDoubleStrike() { return get(TrackableProperty.HasDoubleStrike); }
|
||||||
@@ -1031,12 +1033,8 @@ public class CardView extends GameEntityView {
|
|||||||
public boolean hasMenace() { return get(TrackableProperty.HasMenace); }
|
public boolean hasMenace() { return get(TrackableProperty.HasMenace); }
|
||||||
public boolean hasReach() { return get(TrackableProperty.HasReach); }
|
public boolean hasReach() { return get(TrackableProperty.HasReach); }
|
||||||
public boolean hasShroud() { return get(TrackableProperty.HasShroud); }
|
public boolean hasShroud() { return get(TrackableProperty.HasShroud); }
|
||||||
public boolean hasTrample() {
|
public boolean hasTrample() { return get(TrackableProperty.HasTrample); }
|
||||||
return get(TrackableProperty.HasTrample);
|
public boolean hasVigilance() { return get(TrackableProperty.HasVigilance); }
|
||||||
}
|
|
||||||
public boolean hasVigilance() {
|
|
||||||
return get(TrackableProperty.HasVigilance);
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean hasHaste() {
|
public boolean hasHaste() {
|
||||||
return get(TrackableProperty.HasHaste);
|
return get(TrackableProperty.HasHaste);
|
||||||
@@ -1077,6 +1075,10 @@ public class CardView extends GameEntityView {
|
|||||||
updateAbilityText(c, state);
|
updateAbilityText(c, state);
|
||||||
//set protectionKey for Icons
|
//set protectionKey for Icons
|
||||||
set(TrackableProperty.ProtectionKey, c.getProtectionKey());
|
set(TrackableProperty.ProtectionKey, c.getProtectionKey());
|
||||||
|
//set hexproofKeys for Icons
|
||||||
|
set(TrackableProperty.HexproofKey, c.getHexproofKey());
|
||||||
|
//keywordkey
|
||||||
|
set(TrackableProperty.KeywordKey, c.getKeywordKey());
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isBasicLand() {
|
public boolean isBasicLand() {
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
package forge.game.event;
|
||||||
|
|
||||||
|
import forge.game.card.Card;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class GameEventTokenStateUpdate extends GameEvent {
|
||||||
|
|
||||||
|
public final Collection<Card> cards;
|
||||||
|
public GameEventTokenStateUpdate(Card affected) {
|
||||||
|
cards = Arrays.asList(affected);
|
||||||
|
}
|
||||||
|
|
||||||
|
public GameEventTokenStateUpdate(List<Card> affected) {
|
||||||
|
cards = affected;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> T visit(IGameEventVisitor<T> visitor) {
|
||||||
|
return visitor.visit(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -37,6 +37,7 @@ public interface IGameEventVisitor<T> {
|
|||||||
T visit(GameEventPlayerPoisoned event);
|
T visit(GameEventPlayerPoisoned event);
|
||||||
T visit(GameEventPlayerPriority event);
|
T visit(GameEventPlayerPriority event);
|
||||||
T visit(GameEventPlayerStatsChanged event);
|
T visit(GameEventPlayerStatsChanged event);
|
||||||
|
T visit(GameEventTokenStateUpdate event);
|
||||||
T visit(GameEventScry event);
|
T visit(GameEventScry event);
|
||||||
T visit(GameEventShuffle event);
|
T visit(GameEventShuffle event);
|
||||||
T visit(GameEventSpellAbilityCast gameEventSpellAbilityCast);
|
T visit(GameEventSpellAbilityCast gameEventSpellAbilityCast);
|
||||||
@@ -83,6 +84,7 @@ public interface IGameEventVisitor<T> {
|
|||||||
public T visit(GameEventPlayerPoisoned event) { return null; }
|
public T visit(GameEventPlayerPoisoned event) { return null; }
|
||||||
public T visit(GameEventPlayerPriority event) { return null; }
|
public T visit(GameEventPlayerPriority event) { return null; }
|
||||||
public T visit(GameEventPlayerStatsChanged event) { return null; }
|
public T visit(GameEventPlayerStatsChanged event) { return null; }
|
||||||
|
public T visit(GameEventTokenStateUpdate event) { return null; }
|
||||||
public T visit(GameEventScry event) { return null; }
|
public T visit(GameEventScry event) { return null; }
|
||||||
public T visit(GameEventShuffle event) { return null; }
|
public T visit(GameEventShuffle event) { return null; }
|
||||||
public T visit(GameEventSpellResolved event) { return null; }
|
public T visit(GameEventSpellResolved event) { return null; }
|
||||||
|
|||||||
@@ -189,6 +189,8 @@ public class PhaseHandler implements java.io.Serializable {
|
|||||||
final List<Card> lands = CardLists.filter(playerTurn.getLandsInPlay(), Presets.UNTAPPED);
|
final List<Card> lands = CardLists.filter(playerTurn.getLandsInPlay(), Presets.UNTAPPED);
|
||||||
playerTurn.setNumPowerSurgeLands(lands.size());
|
playerTurn.setNumPowerSurgeLands(lands.size());
|
||||||
}
|
}
|
||||||
|
//update tokens
|
||||||
|
game.fireEvent(new GameEventTokenStateUpdate(playerTurn.getTokensInPlay()));
|
||||||
|
|
||||||
game.fireEvent(new GameEventTurnPhase(playerTurn, phase, phaseType));
|
game.fireEvent(new GameEventTurnPhase(playerTurn, phase, phaseType));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2348,6 +2348,13 @@ public class Player extends GameEntity implements Comparable<Player> {
|
|||||||
return CardLists.filter(getCardsIn(ZoneType.Battlefield), Presets.CREATURES);
|
return CardLists.filter(getCardsIn(ZoneType.Battlefield), Presets.CREATURES);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* use to get a list of tokens in play for a given player.
|
||||||
|
*/
|
||||||
|
public CardCollection getTokensInPlay() {
|
||||||
|
return CardLists.filter(getCardsIn(ZoneType.Battlefield), Presets.TOKEN);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* use to get a list of all lands a given player has on the battlefield.
|
* use to get a list of all lands a given player has on the battlefield.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -82,6 +82,7 @@ public enum TrackableProperty {
|
|||||||
ChangedColorWords(TrackableTypes.StringMapType),
|
ChangedColorWords(TrackableTypes.StringMapType),
|
||||||
ChangedTypes(TrackableTypes.StringMapType),
|
ChangedTypes(TrackableTypes.StringMapType),
|
||||||
|
|
||||||
|
KeywordKey(TrackableTypes.StringType),
|
||||||
HasDeathtouch(TrackableTypes.BooleanType),
|
HasDeathtouch(TrackableTypes.BooleanType),
|
||||||
HasDefender(TrackableTypes.BooleanType),
|
HasDefender(TrackableTypes.BooleanType),
|
||||||
HasDoubleStrike(TrackableTypes.BooleanType),
|
HasDoubleStrike(TrackableTypes.BooleanType),
|
||||||
@@ -99,7 +100,8 @@ public enum TrackableProperty {
|
|||||||
HasVigilance(TrackableTypes.BooleanType),
|
HasVigilance(TrackableTypes.BooleanType),
|
||||||
//protectionkey
|
//protectionkey
|
||||||
ProtectionKey(TrackableTypes.StringType),
|
ProtectionKey(TrackableTypes.StringType),
|
||||||
|
//hexproofkey
|
||||||
|
HexproofKey(TrackableTypes.StringType),
|
||||||
HasHaste(TrackableTypes.BooleanType),
|
HasHaste(TrackableTypes.BooleanType),
|
||||||
HasInfect(TrackableTypes.BooleanType),
|
HasInfect(TrackableTypes.BooleanType),
|
||||||
HasStorm(TrackableTypes.BooleanType),
|
HasStorm(TrackableTypes.BooleanType),
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ public final class CardOverlaysMenu {
|
|||||||
menu.add(getMenuItem_CardOverlay("Mana Cost", FPref.UI_OVERLAY_CARD_MANA_COST));
|
menu.add(getMenuItem_CardOverlay("Mana Cost", FPref.UI_OVERLAY_CARD_MANA_COST));
|
||||||
menu.add(getMenuItem_CardOverlay("Power/Toughness", FPref.UI_OVERLAY_CARD_POWER));
|
menu.add(getMenuItem_CardOverlay("Power/Toughness", FPref.UI_OVERLAY_CARD_POWER));
|
||||||
menu.add(getMenuItem_CardOverlay("Card Id", FPref.UI_OVERLAY_CARD_ID));
|
menu.add(getMenuItem_CardOverlay("Card Id", FPref.UI_OVERLAY_CARD_ID));
|
||||||
|
menu.add(getMenuItem_CardOverlay("Ability Icon", FPref.UI_OVERLAY_ABILITY_ICONS));
|
||||||
return menu;
|
return menu;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -135,7 +135,17 @@ public class CardFaceSymbols {
|
|||||||
MANA_IMAGES.put("shroud", FSkin.getImage(FSkinProp.IMG_ABILITY_SHROUD));
|
MANA_IMAGES.put("shroud", FSkin.getImage(FSkinProp.IMG_ABILITY_SHROUD));
|
||||||
MANA_IMAGES.put("trample", FSkin.getImage(FSkinProp.IMG_ABILITY_TRAMPLE));
|
MANA_IMAGES.put("trample", FSkin.getImage(FSkinProp.IMG_ABILITY_TRAMPLE));
|
||||||
MANA_IMAGES.put("vigilance", FSkin.getImage(FSkinProp.IMG_ABILITY_VIGILANCE));
|
MANA_IMAGES.put("vigilance", FSkin.getImage(FSkinProp.IMG_ABILITY_VIGILANCE));
|
||||||
|
//hexproof from
|
||||||
|
MANA_IMAGES.put("hexproofR", FSkin.getImage(FSkinProp.IMG_ABILITY_HEXPROOF_R));
|
||||||
|
MANA_IMAGES.put("hexproofG", FSkin.getImage(FSkinProp.IMG_ABILITY_HEXPROOF_G));
|
||||||
|
MANA_IMAGES.put("hexproofB", FSkin.getImage(FSkinProp.IMG_ABILITY_HEXPROOF_B));
|
||||||
|
MANA_IMAGES.put("hexproofU", FSkin.getImage(FSkinProp.IMG_ABILITY_HEXPROOF_U));
|
||||||
|
MANA_IMAGES.put("hexproofW", FSkin.getImage(FSkinProp.IMG_ABILITY_HEXPROOF_W));
|
||||||
|
MANA_IMAGES.put("hexproofC", FSkin.getImage(FSkinProp.IMG_ABILITY_HEXPROOF_C));
|
||||||
|
MANA_IMAGES.put("hexproofUB", FSkin.getImage(FSkinProp.IMG_ABILITY_HEXPROOF_UB));
|
||||||
|
//token icon
|
||||||
|
MANA_IMAGES.put("token", FSkin.getImage(FSkinProp.IMG_ABILITY_TOKEN));
|
||||||
|
//protection from
|
||||||
MANA_IMAGES.put("protectAll", FSkin.getImage(FSkinProp.IMG_ABILITY_PROTECT_ALL));
|
MANA_IMAGES.put("protectAll", FSkin.getImage(FSkinProp.IMG_ABILITY_PROTECT_ALL));
|
||||||
MANA_IMAGES.put("protectB", FSkin.getImage(FSkinProp.IMG_ABILITY_PROTECT_B));
|
MANA_IMAGES.put("protectB", FSkin.getImage(FSkinProp.IMG_ABILITY_PROTECT_B));
|
||||||
MANA_IMAGES.put("protectBU", FSkin.getImage(FSkinProp.IMG_ABILITY_PROTECT_BU));
|
MANA_IMAGES.put("protectBU", FSkin.getImage(FSkinProp.IMG_ABILITY_PROTECT_BU));
|
||||||
|
|||||||
@@ -50,6 +50,7 @@ import java.awt.geom.RoundRectangle2D;
|
|||||||
import java.awt.image.BufferedImage;
|
import java.awt.image.BufferedImage;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.file.Paths;
|
import java.nio.file.Paths;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -511,7 +512,7 @@ public class CardPanel extends SkinnedPanel implements CardContainer, IDisposabl
|
|||||||
int abiX = cardXOffset + (cardWidth / 2) + (cardWidth / 3);
|
int abiX = cardXOffset + (cardWidth / 2) + (cardWidth / 3);
|
||||||
int abiSpace = (cardWidth / 7);
|
int abiSpace = (cardWidth / 7);
|
||||||
int abiY = cardWidth < 200 ? cardYOffset + 25 : cardYOffset + 50;
|
int abiY = cardWidth < 200 ? cardYOffset + 25 : cardYOffset + 50;
|
||||||
if (ZoneType.Battlefield.equals(card.getZone())){
|
if (ZoneType.Battlefield.equals(card.getZone()) && showAbilityIcons()){
|
||||||
if (card.getCurrentState().hasFlying()) {
|
if (card.getCurrentState().hasFlying()) {
|
||||||
CardFaceSymbols.drawAbilitySymbol("flying", g, abiX, abiY, abiScale, abiScale);
|
CardFaceSymbols.drawAbilitySymbol("flying", g, abiX, abiY, abiScale, abiScale);
|
||||||
abiY += abiSpace;
|
abiY += abiSpace;
|
||||||
@@ -545,10 +546,43 @@ public class CardPanel extends SkinnedPanel implements CardContainer, IDisposabl
|
|||||||
abiY += abiSpace;
|
abiY += abiSpace;
|
||||||
}
|
}
|
||||||
if (card.getCurrentState().hasHexproof()) {
|
if (card.getCurrentState().hasHexproof()) {
|
||||||
CardFaceSymbols.drawAbilitySymbol("hexproof", g, abiX, abiY, abiScale, abiScale);
|
if (!card.getCurrentState().getHexproofKey().isEmpty()){
|
||||||
abiY += abiSpace;
|
String[] splitK = card.getCurrentState().getHexproofKey().split(":");
|
||||||
|
List<String> listHK = Arrays.asList(splitK);
|
||||||
|
if (listHK.contains("generic")) {
|
||||||
|
CardFaceSymbols.drawAbilitySymbol("hexproof", g, abiX, abiY, abiScale, abiScale);
|
||||||
|
abiY += abiSpace;
|
||||||
|
}
|
||||||
|
if (listHK.contains("R")) {
|
||||||
|
CardFaceSymbols.drawAbilitySymbol("hexproofR", g, abiX, abiY, abiScale, abiScale);
|
||||||
|
abiY += abiSpace;
|
||||||
|
}
|
||||||
|
if (listHK.contains("B")) {
|
||||||
|
CardFaceSymbols.drawAbilitySymbol("hexproofB", g, abiX, abiY, abiScale, abiScale);
|
||||||
|
abiY += abiSpace;
|
||||||
|
}
|
||||||
|
if (listHK.contains("U")) {
|
||||||
|
CardFaceSymbols.drawAbilitySymbol("hexproofU", g, abiX, abiY, abiScale, abiScale);
|
||||||
|
abiY += abiSpace;
|
||||||
|
}
|
||||||
|
if (listHK.contains("G")) {
|
||||||
|
CardFaceSymbols.drawAbilitySymbol("hexproofG", g, abiX, abiY, abiScale, abiScale);
|
||||||
|
abiY += abiSpace;
|
||||||
|
}
|
||||||
|
if (listHK.contains("W")) {
|
||||||
|
CardFaceSymbols.drawAbilitySymbol("hexproofW", g, abiX, abiY, abiScale, abiScale);
|
||||||
|
abiY += abiSpace;
|
||||||
|
}
|
||||||
|
if (listHK.contains("monocolored")) {
|
||||||
|
CardFaceSymbols.drawAbilitySymbol("hexproofC", g, abiX, abiY, abiScale, abiScale);
|
||||||
|
abiY += abiSpace;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
CardFaceSymbols.drawAbilitySymbol("hexproof", g, abiX, abiY, abiScale, abiScale);
|
||||||
|
abiY += abiSpace;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (card.getCurrentState().hasShroud()) {
|
else if (card.getCurrentState().hasShroud()) {
|
||||||
CardFaceSymbols.drawAbilitySymbol("shroud", g, abiX, abiY, abiScale, abiScale);
|
CardFaceSymbols.drawAbilitySymbol("shroud", g, abiX, abiY, abiScale, abiScale);
|
||||||
abiY += abiSpace;
|
abiY += abiSpace;
|
||||||
}
|
}
|
||||||
@@ -963,6 +997,10 @@ public class CardPanel extends SkinnedPanel implements CardContainer, IDisposabl
|
|||||||
return isShowingOverlays() && isPreferenceEnabled(FPref.UI_OVERLAY_CARD_ID);
|
return isShowingOverlays() && isPreferenceEnabled(FPref.UI_OVERLAY_CARD_ID);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean showAbilityIcons() {
|
||||||
|
return isShowingOverlays() && isPreferenceEnabled(FPref.UI_OVERLAY_ABILITY_ICONS);
|
||||||
|
}
|
||||||
|
|
||||||
public void repaintOverlays() {
|
public void repaintOverlays() {
|
||||||
repaint();
|
repaint();
|
||||||
doLayout();
|
doLayout();
|
||||||
|
|||||||
@@ -25,7 +25,11 @@ import forge.screens.home.NewGameMenu;
|
|||||||
import forge.screens.match.MatchController;
|
import forge.screens.match.MatchController;
|
||||||
import forge.sound.MusicPlaylist;
|
import forge.sound.MusicPlaylist;
|
||||||
import forge.sound.SoundSystem;
|
import forge.sound.SoundSystem;
|
||||||
import forge.toolbox.*;
|
import forge.toolbox.FContainer;
|
||||||
|
import forge.toolbox.FDisplayObject;
|
||||||
|
import forge.toolbox.FGestureAdapter;
|
||||||
|
import forge.toolbox.FOptionPane;
|
||||||
|
import forge.toolbox.FOverlay;
|
||||||
import forge.util.Callback;
|
import forge.util.Callback;
|
||||||
import forge.util.FileUtil;
|
import forge.util.FileUtil;
|
||||||
import forge.util.Localizer;
|
import forge.util.Localizer;
|
||||||
|
|||||||
@@ -37,7 +37,13 @@ import forge.sound.IAudioClip;
|
|||||||
import forge.sound.IAudioMusic;
|
import forge.sound.IAudioMusic;
|
||||||
import forge.toolbox.FOptionPane;
|
import forge.toolbox.FOptionPane;
|
||||||
import forge.toolbox.GuiChoose;
|
import forge.toolbox.GuiChoose;
|
||||||
import forge.util.*;
|
import forge.util.Callback;
|
||||||
|
import forge.util.FileUtil;
|
||||||
|
import forge.util.ImageFetcher;
|
||||||
|
import forge.util.LibGDXImageFetcher;
|
||||||
|
import forge.util.ThreadUtil;
|
||||||
|
import forge.util.WaitCallback;
|
||||||
|
import forge.util.WaitRunnable;
|
||||||
|
|
||||||
public class GuiMobile implements IGuiBase {
|
public class GuiMobile implements IGuiBase {
|
||||||
private final String assetsDir;
|
private final String assetsDir;
|
||||||
|
|||||||
@@ -265,9 +265,19 @@ public enum FSkinImage implements FImage {
|
|||||||
IMG_ABILITY_LIFELINK (FSkinProp.IMG_ABILITY_LIFELINK, SourceFile.ABILITIES),
|
IMG_ABILITY_LIFELINK (FSkinProp.IMG_ABILITY_LIFELINK, SourceFile.ABILITIES),
|
||||||
IMG_ABILITY_MENACE (FSkinProp.IMG_ABILITY_MENACE, SourceFile.ABILITIES),
|
IMG_ABILITY_MENACE (FSkinProp.IMG_ABILITY_MENACE, SourceFile.ABILITIES),
|
||||||
IMG_ABILITY_REACH (FSkinProp.IMG_ABILITY_REACH, SourceFile.ABILITIES),
|
IMG_ABILITY_REACH (FSkinProp.IMG_ABILITY_REACH, SourceFile.ABILITIES),
|
||||||
IMG_ABILITY_SHROUD (FSkinProp.IMG_ABILITY_SHROUD, SourceFile.ABILITIES),
|
IMG_ABILITY_SHROUD (FSkinProp.IMG_ABILITY_SHROUD, SourceFile.ABILITIES),
|
||||||
IMG_ABILITY_TRAMPLE (FSkinProp.IMG_ABILITY_TRAMPLE, SourceFile.ABILITIES),
|
IMG_ABILITY_TRAMPLE (FSkinProp.IMG_ABILITY_TRAMPLE, SourceFile.ABILITIES),
|
||||||
IMG_ABILITY_VIGILANCE (FSkinProp.IMG_ABILITY_VIGILANCE, SourceFile.ABILITIES),
|
IMG_ABILITY_VIGILANCE (FSkinProp.IMG_ABILITY_VIGILANCE, SourceFile.ABILITIES),
|
||||||
|
//HEXPROOF FROM
|
||||||
|
IMG_ABILITY_HEXPROOF_R (FSkinProp.IMG_ABILITY_HEXPROOF_R, SourceFile.ABILITIES),
|
||||||
|
IMG_ABILITY_HEXPROOF_G (FSkinProp.IMG_ABILITY_HEXPROOF_G, SourceFile.ABILITIES),
|
||||||
|
IMG_ABILITY_HEXPROOF_B (FSkinProp.IMG_ABILITY_HEXPROOF_B, SourceFile.ABILITIES),
|
||||||
|
IMG_ABILITY_HEXPROOF_U (FSkinProp.IMG_ABILITY_HEXPROOF_U, SourceFile.ABILITIES),
|
||||||
|
IMG_ABILITY_HEXPROOF_W (FSkinProp.IMG_ABILITY_HEXPROOF_W, SourceFile.ABILITIES),
|
||||||
|
IMG_ABILITY_HEXPROOF_C (FSkinProp.IMG_ABILITY_HEXPROOF_C, SourceFile.ABILITIES),
|
||||||
|
IMG_ABILITY_HEXPROOF_UB (FSkinProp.IMG_ABILITY_HEXPROOF_UB, SourceFile.ABILITIES),
|
||||||
|
//token icon
|
||||||
|
IMG_ABILITY_TOKEN (FSkinProp.IMG_ABILITY_TOKEN, SourceFile.ABILITIES),
|
||||||
//PROTECT ICONS
|
//PROTECT ICONS
|
||||||
IMG_ABILITY_PROTECT_ALL (FSkinProp.IMG_ABILITY_PROTECT_ALL, SourceFile.ABILITIES),
|
IMG_ABILITY_PROTECT_ALL (FSkinProp.IMG_ABILITY_PROTECT_ALL, SourceFile.ABILITIES),
|
||||||
IMG_ABILITY_PROTECT_B (FSkinProp.IMG_ABILITY_PROTECT_B, SourceFile.ABILITIES),
|
IMG_ABILITY_PROTECT_B (FSkinProp.IMG_ABILITY_PROTECT_B, SourceFile.ABILITIES),
|
||||||
|
|||||||
@@ -118,7 +118,17 @@ public class CardFaceSymbols {
|
|||||||
MANA_IMAGES.put("shroud", FSkinImage.IMG_ABILITY_SHROUD);
|
MANA_IMAGES.put("shroud", FSkinImage.IMG_ABILITY_SHROUD);
|
||||||
MANA_IMAGES.put("trample", FSkinImage.IMG_ABILITY_TRAMPLE);
|
MANA_IMAGES.put("trample", FSkinImage.IMG_ABILITY_TRAMPLE);
|
||||||
MANA_IMAGES.put("vigilance", FSkinImage.IMG_ABILITY_VIGILANCE);
|
MANA_IMAGES.put("vigilance", FSkinImage.IMG_ABILITY_VIGILANCE);
|
||||||
|
//hexproof from
|
||||||
|
MANA_IMAGES.put("hexproofR", FSkinImage.IMG_ABILITY_HEXPROOF_R);
|
||||||
|
MANA_IMAGES.put("hexproofG", FSkinImage.IMG_ABILITY_HEXPROOF_G);
|
||||||
|
MANA_IMAGES.put("hexproofB", FSkinImage.IMG_ABILITY_HEXPROOF_B);
|
||||||
|
MANA_IMAGES.put("hexproofU", FSkinImage.IMG_ABILITY_HEXPROOF_U);
|
||||||
|
MANA_IMAGES.put("hexproofW", FSkinImage.IMG_ABILITY_HEXPROOF_W);
|
||||||
|
MANA_IMAGES.put("hexproofC", FSkinImage.IMG_ABILITY_HEXPROOF_C);
|
||||||
|
MANA_IMAGES.put("hexproofUB", FSkinImage.IMG_ABILITY_HEXPROOF_UB);
|
||||||
|
//token icon
|
||||||
|
MANA_IMAGES.put("token", FSkinImage.IMG_ABILITY_TOKEN);
|
||||||
|
//protection from
|
||||||
MANA_IMAGES.put("protectAll", FSkinImage.IMG_ABILITY_PROTECT_ALL);
|
MANA_IMAGES.put("protectAll", FSkinImage.IMG_ABILITY_PROTECT_ALL);
|
||||||
MANA_IMAGES.put("protectB", FSkinImage.IMG_ABILITY_PROTECT_B);
|
MANA_IMAGES.put("protectB", FSkinImage.IMG_ABILITY_PROTECT_B);
|
||||||
MANA_IMAGES.put("protectBU", FSkinImage.IMG_ABILITY_PROTECT_BU);
|
MANA_IMAGES.put("protectBU", FSkinImage.IMG_ABILITY_PROTECT_BU);
|
||||||
|
|||||||
@@ -5,13 +5,19 @@ import com.badlogic.gdx.graphics.Texture;
|
|||||||
import com.badlogic.gdx.utils.Align;
|
import com.badlogic.gdx.utils.Align;
|
||||||
import com.google.common.collect.ImmutableList;
|
import com.google.common.collect.ImmutableList;
|
||||||
import forge.Graphics;
|
import forge.Graphics;
|
||||||
import forge.assets.*;
|
import forge.assets.FBufferedImage;
|
||||||
|
import forge.assets.FSkinColor;
|
||||||
|
import forge.assets.FSkinFont;
|
||||||
|
import forge.assets.FSkinImage;
|
||||||
|
import forge.assets.FSkinTexture;
|
||||||
|
import forge.assets.ImageCache;
|
||||||
|
import forge.assets.TextRenderer;
|
||||||
import forge.card.CardDetailUtil.DetailColors;
|
import forge.card.CardDetailUtil.DetailColors;
|
||||||
import forge.card.CardRenderer.CardStackPosition;
|
import forge.card.CardRenderer.CardStackPosition;
|
||||||
import forge.card.mana.ManaCost;
|
import forge.card.mana.ManaCost;
|
||||||
import forge.game.GameView;
|
import forge.game.GameView;
|
||||||
import forge.game.card.CardView;
|
|
||||||
import forge.game.card.CardView.CardStateView;
|
import forge.game.card.CardView.CardStateView;
|
||||||
|
import forge.game.card.CardView;
|
||||||
import forge.game.zone.ZoneType;
|
import forge.game.zone.ZoneType;
|
||||||
import forge.model.FModel;
|
import forge.model.FModel;
|
||||||
import forge.properties.ForgeConstants;
|
import forge.properties.ForgeConstants;
|
||||||
|
|||||||
@@ -19,7 +19,13 @@ import forge.CachedCardImage;
|
|||||||
import forge.FThreads;
|
import forge.FThreads;
|
||||||
import forge.Graphics;
|
import forge.Graphics;
|
||||||
import forge.StaticData;
|
import forge.StaticData;
|
||||||
import forge.assets.*;
|
import forge.assets.FImageComplex;
|
||||||
|
import forge.assets.FRotatedImage;
|
||||||
|
import forge.assets.FSkinColor;
|
||||||
|
import forge.assets.FSkinFont;
|
||||||
|
import forge.assets.FSkinImage;
|
||||||
|
import forge.assets.FTextureRegionImage;
|
||||||
|
import forge.assets.ImageCache;
|
||||||
import forge.card.CardDetailUtil.DetailColors;
|
import forge.card.CardDetailUtil.DetailColors;
|
||||||
import forge.card.CardZoom.ActivateHandler;
|
import forge.card.CardZoom.ActivateHandler;
|
||||||
import forge.card.mana.ManaCost;
|
import forge.card.mana.ManaCost;
|
||||||
@@ -42,6 +48,7 @@ import forge.toolbox.FList;
|
|||||||
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.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -551,7 +558,11 @@ public class CardRenderer {
|
|||||||
float abiSpace = cw / 5.7f;
|
float abiSpace = cw / 5.7f;
|
||||||
float abiCount = 0;
|
float abiCount = 0;
|
||||||
|
|
||||||
if (onbattlefield && onTop) {
|
if (onbattlefield && onTop && showAbilityIcons(card)) {
|
||||||
|
if (card.isToken()){
|
||||||
|
CardFaceSymbols.drawSymbol("token", g, abiX, abiY, abiScale, abiScale);
|
||||||
|
abiY += abiSpace;
|
||||||
|
}
|
||||||
if (card.getCurrentState().hasFlying()) {
|
if (card.getCurrentState().hasFlying()) {
|
||||||
CardFaceSymbols.drawSymbol("flying", g, abiX, abiY, abiScale, abiScale);
|
CardFaceSymbols.drawSymbol("flying", g, abiX, abiY, abiScale, abiScale);
|
||||||
if (unselectable){
|
if (unselectable){
|
||||||
@@ -609,11 +620,65 @@ public class CardRenderer {
|
|||||||
abiCount += 1;
|
abiCount += 1;
|
||||||
}
|
}
|
||||||
if (card.getCurrentState().hasHexproof()) {
|
if (card.getCurrentState().hasHexproof()) {
|
||||||
CardFaceSymbols.drawSymbol("hexproof", g, abiX, abiY, abiScale, abiScale);
|
if (!card.getCurrentState().getHexproofKey().isEmpty()){
|
||||||
if (unselectable){
|
String[] splitK = card.getCurrentState().getHexproofKey().split(":");
|
||||||
g.setAlphaComposite(0.6f); g.fillRect(Color.BLACK, abiX, abiY, abiScale, abiScale ); g.setAlphaComposite(oldAlpha);}
|
List<String> listHK = Arrays.asList(splitK);
|
||||||
abiY += abiSpace;
|
if (listHK.contains("generic")) {
|
||||||
abiCount += 1;
|
CardFaceSymbols.drawSymbol("hexproof", g, abiX, abiY, abiScale, abiScale);
|
||||||
|
if (unselectable){
|
||||||
|
g.setAlphaComposite(0.6f); g.fillRect(Color.BLACK, abiX, abiY, abiScale, abiScale ); g.setAlphaComposite(oldAlpha);}
|
||||||
|
abiY += abiSpace;
|
||||||
|
abiCount += 1;
|
||||||
|
}
|
||||||
|
if (listHK.contains("R")) {
|
||||||
|
CardFaceSymbols.drawSymbol("hexproofR", g, abiX, abiY, abiScale, abiScale);
|
||||||
|
if (unselectable){
|
||||||
|
g.setAlphaComposite(0.6f); g.fillRect(Color.BLACK, abiX, abiY, abiScale, abiScale ); g.setAlphaComposite(oldAlpha);}
|
||||||
|
abiY += abiSpace;
|
||||||
|
abiCount += 1;
|
||||||
|
}
|
||||||
|
if (listHK.contains("B")) {
|
||||||
|
CardFaceSymbols.drawSymbol("hexproofB", g, abiX, abiY, abiScale, abiScale);
|
||||||
|
if (unselectable){
|
||||||
|
g.setAlphaComposite(0.6f); g.fillRect(Color.BLACK, abiX, abiY, abiScale, abiScale ); g.setAlphaComposite(oldAlpha);}
|
||||||
|
abiY += abiSpace;
|
||||||
|
abiCount += 1;
|
||||||
|
}
|
||||||
|
if (listHK.contains("U")) {
|
||||||
|
CardFaceSymbols.drawSymbol("hexproofU", g, abiX, abiY, abiScale, abiScale);
|
||||||
|
if (unselectable){
|
||||||
|
g.setAlphaComposite(0.6f); g.fillRect(Color.BLACK, abiX, abiY, abiScale, abiScale ); g.setAlphaComposite(oldAlpha);}
|
||||||
|
abiY += abiSpace;
|
||||||
|
abiCount += 1;
|
||||||
|
}
|
||||||
|
if (listHK.contains("G")) {
|
||||||
|
CardFaceSymbols.drawSymbol("hexproofG", g, abiX, abiY, abiScale, abiScale);
|
||||||
|
if (unselectable){
|
||||||
|
g.setAlphaComposite(0.6f); g.fillRect(Color.BLACK, abiX, abiY, abiScale, abiScale ); g.setAlphaComposite(oldAlpha);}
|
||||||
|
abiY += abiSpace;
|
||||||
|
abiCount += 1;
|
||||||
|
}
|
||||||
|
if (listHK.contains("W")) {
|
||||||
|
CardFaceSymbols.drawSymbol("hexproofW", g, abiX, abiY, abiScale, abiScale);
|
||||||
|
if (unselectable){
|
||||||
|
g.setAlphaComposite(0.6f); g.fillRect(Color.BLACK, abiX, abiY, abiScale, abiScale ); g.setAlphaComposite(oldAlpha);}
|
||||||
|
abiY += abiSpace;
|
||||||
|
abiCount += 1;
|
||||||
|
}
|
||||||
|
if (listHK.contains("monocolored")) {
|
||||||
|
CardFaceSymbols.drawSymbol("hexproofC", g, abiX, abiY, abiScale, abiScale);
|
||||||
|
if (unselectable){
|
||||||
|
g.setAlphaComposite(0.6f); g.fillRect(Color.BLACK, abiX, abiY, abiScale, abiScale ); g.setAlphaComposite(oldAlpha);}
|
||||||
|
abiY += abiSpace;
|
||||||
|
abiCount += 1;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
CardFaceSymbols.drawSymbol("hexproof", g, abiX, abiY, abiScale, abiScale);
|
||||||
|
if (unselectable){
|
||||||
|
g.setAlphaComposite(0.6f); g.fillRect(Color.BLACK, abiX, abiY, abiScale, abiScale ); g.setAlphaComposite(oldAlpha);}
|
||||||
|
abiY += abiSpace;
|
||||||
|
abiCount += 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (card.getCurrentState().hasShroud()) {
|
else if (card.getCurrentState().hasShroud()) {
|
||||||
CardFaceSymbols.drawSymbol("shroud", g, abiX, abiY, abiScale, abiScale);
|
CardFaceSymbols.drawSymbol("shroud", g, abiX, abiY, abiScale, abiScale);
|
||||||
@@ -1003,6 +1068,10 @@ public class CardRenderer {
|
|||||||
isPreferenceEnabled(FPref.UI_OVERLAY_CARD_MANA_COST);
|
isPreferenceEnabled(FPref.UI_OVERLAY_CARD_MANA_COST);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static boolean showAbilityIcons(CardView card) {
|
||||||
|
return isShowingOverlays(card) && isPreferenceEnabled(FPref.UI_OVERLAY_ABILITY_ICONS);
|
||||||
|
}
|
||||||
|
|
||||||
private static boolean showCardIdOverlay(CardView card) {
|
private static boolean showCardIdOverlay(CardView card) {
|
||||||
return card.getId() > 0 && isShowingOverlays(card) && isPreferenceEnabled(FPref.UI_OVERLAY_CARD_ID);
|
return card.getId() > 0 && isShowingOverlays(card) && isPreferenceEnabled(FPref.UI_OVERLAY_CARD_ID);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,8 +10,15 @@ import com.google.common.collect.ImmutableList;
|
|||||||
import forge.Forge;
|
import forge.Forge;
|
||||||
import forge.Forge.KeyInputAdapter;
|
import forge.Forge.KeyInputAdapter;
|
||||||
import forge.Graphics;
|
import forge.Graphics;
|
||||||
import forge.assets.*;
|
import forge.assets.FImage;
|
||||||
import forge.card.*;
|
import forge.assets.FSkin;
|
||||||
|
import forge.assets.FSkinFont;
|
||||||
|
import forge.assets.FSkinImage;
|
||||||
|
import forge.assets.FTextureRegionImage;
|
||||||
|
import forge.card.CardDb;
|
||||||
|
import forge.card.CardEdition;
|
||||||
|
import forge.card.CardPreferences;
|
||||||
|
import forge.card.CardRulesPredicates;
|
||||||
import forge.deck.io.DeckPreferences;
|
import forge.deck.io.DeckPreferences;
|
||||||
import forge.item.PaperCard;
|
import forge.item.PaperCard;
|
||||||
import forge.itemmanager.CardManager;
|
import forge.itemmanager.CardManager;
|
||||||
@@ -30,9 +37,13 @@ import forge.planarconquest.ConquestUtil;
|
|||||||
import forge.properties.ForgePreferences.FPref;
|
import forge.properties.ForgePreferences.FPref;
|
||||||
import forge.screens.FScreen;
|
import forge.screens.FScreen;
|
||||||
import forge.screens.TabPageScreen;
|
import forge.screens.TabPageScreen;
|
||||||
import forge.toolbox.*;
|
import forge.toolbox.FContainer;
|
||||||
|
import forge.toolbox.FEvent;
|
||||||
import forge.toolbox.FEvent.FEventHandler;
|
import forge.toolbox.FEvent.FEventHandler;
|
||||||
import forge.toolbox.FEvent.FEventType;
|
import forge.toolbox.FEvent.FEventType;
|
||||||
|
import forge.toolbox.FLabel;
|
||||||
|
import forge.toolbox.FOptionPane;
|
||||||
|
import forge.toolbox.GuiChoose;
|
||||||
import forge.util.Callback;
|
import forge.util.Callback;
|
||||||
import forge.util.ItemPool;
|
import forge.util.ItemPool;
|
||||||
import forge.util.Lang;
|
import forge.util.Lang;
|
||||||
@@ -41,7 +52,11 @@ import forge.util.Utils;
|
|||||||
import forge.util.storage.IStorage;
|
import forge.util.storage.IStorage;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
|
|
||||||
public class FDeckEditor extends TabPageScreen<FDeckEditor> {
|
public class FDeckEditor extends TabPageScreen<FDeckEditor> {
|
||||||
|
|||||||
@@ -55,7 +55,14 @@ import forge.util.ItemPool;
|
|||||||
import forge.util.LayoutHelper;
|
import forge.util.LayoutHelper;
|
||||||
import forge.util.Localizer;
|
import forge.util.Localizer;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.Arrays;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Comparator;
|
||||||
|
import java.util.LinkedList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -22,7 +22,11 @@ import forge.util.Callback;
|
|||||||
import forge.util.TextUtil;
|
import forge.util.TextUtil;
|
||||||
import forge.util.Utils;
|
import forge.util.Utils;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import com.badlogic.gdx.utils.Align;
|
import com.badlogic.gdx.utils.Align;
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,11 @@ import forge.assets.ImageCache;
|
|||||||
import forge.card.CardRenderer;
|
import forge.card.CardRenderer;
|
||||||
import forge.card.CardRenderer.CardStackPosition;
|
import forge.card.CardRenderer.CardStackPosition;
|
||||||
import forge.card.CardZoom;
|
import forge.card.CardZoom;
|
||||||
import forge.deck.*;
|
import forge.deck.ArchetypeDeckGenerator;
|
||||||
|
import forge.deck.CardThemedDeckGenerator;
|
||||||
|
import forge.deck.CommanderDeckGenerator;
|
||||||
|
import forge.deck.DeckProxy;
|
||||||
|
import forge.deck.FDeckViewer;
|
||||||
import forge.item.InventoryItem;
|
import forge.item.InventoryItem;
|
||||||
import forge.item.PaperCard;
|
import forge.item.PaperCard;
|
||||||
import forge.itemmanager.ColumnDef;
|
import forge.itemmanager.ColumnDef;
|
||||||
@@ -33,8 +37,11 @@ import forge.toolbox.FScrollPane;
|
|||||||
import forge.util.Localizer;
|
import forge.util.Localizer;
|
||||||
import forge.util.Utils;
|
import forge.util.Utils;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
|
import java.util.TreeMap;
|
||||||
|
|
||||||
import com.badlogic.gdx.graphics.Color;
|
import com.badlogic.gdx.graphics.Color;
|
||||||
import com.badlogic.gdx.graphics.Texture;
|
import com.badlogic.gdx.graphics.Texture;
|
||||||
|
|||||||
@@ -35,7 +35,10 @@ import forge.toolbox.FList;
|
|||||||
|
|
||||||
import com.badlogic.gdx.math.Rectangle;
|
import com.badlogic.gdx.math.Rectangle;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,17 @@
|
|||||||
package forge.screens.constructed;
|
package forge.screens.constructed;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.Arrays;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import forge.deck.CardPool;
|
||||||
|
import forge.deck.Deck;
|
||||||
|
import forge.deck.DeckSection;
|
||||||
|
import forge.deck.DeckType;
|
||||||
|
import forge.deck.FDeckChooser;
|
||||||
|
|
||||||
import forge.deck.*;
|
|
||||||
import forge.util.Localizer;
|
import forge.util.Localizer;
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
import com.badlogic.gdx.Gdx;
|
import com.badlogic.gdx.Gdx;
|
||||||
|
|||||||
@@ -4,7 +4,11 @@ import java.util.Collections;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import forge.util.*;
|
import forge.util.Callback;
|
||||||
|
import forge.util.Lang;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
import forge.util.NameGenerator;
|
||||||
|
import forge.util.Utils;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import com.badlogic.gdx.utils.Align;
|
import com.badlogic.gdx.utils.Align;
|
||||||
import com.google.common.collect.ImmutableList;
|
import com.google.common.collect.ImmutableList;
|
||||||
|
|||||||
@@ -1,8 +1,11 @@
|
|||||||
package forge.screens.match;
|
package forge.screens.match;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import com.badlogic.gdx.graphics.Color;
|
import com.badlogic.gdx.graphics.Color;
|
||||||
|
|
||||||
|
|||||||
@@ -110,6 +110,9 @@ public class VField extends FContainer {
|
|||||||
if (!c.hasCardAttachments() &&
|
if (!c.hasCardAttachments() &&
|
||||||
cardName.equals(c.getCurrentState().getName()) &&
|
cardName.equals(c.getCurrentState().getName()) &&
|
||||||
card.hasSameCounters(c) &&
|
card.hasSameCounters(c) &&
|
||||||
|
card.getCurrentState().getKeywordKey().equals(c.getCurrentState().getKeywordKey()) &&
|
||||||
|
card.isTapped() == c.isTapped() && // don't stack tapped tokens on untapped tokens
|
||||||
|
card.isSick() == c.isSick() && //don't stack sick tokens on non sick
|
||||||
card.isToken() == c.isToken()) { //don't stack tokens on top of non-tokens
|
card.isToken() == c.isToken()) { //don't stack tokens on top of non-tokens
|
||||||
CardAreaPanel cPanel = CardAreaPanel.get(c);
|
CardAreaPanel cPanel = CardAreaPanel.get(c);
|
||||||
while (cPanel.getNextPanelInStack() != null) {
|
while (cPanel.getNextPanelInStack() != null) {
|
||||||
|
|||||||
@@ -15,8 +15,14 @@ import forge.interfaces.IWinLoseView;
|
|||||||
import forge.item.PaperCard;
|
import forge.item.PaperCard;
|
||||||
import forge.menu.FMagnifyView;
|
import forge.menu.FMagnifyView;
|
||||||
import forge.model.FModel;
|
import forge.model.FModel;
|
||||||
import forge.toolbox.*;
|
import forge.toolbox.FButton;
|
||||||
|
import forge.toolbox.FContainer;
|
||||||
|
import forge.toolbox.FDisplayObject;
|
||||||
|
import forge.toolbox.FEvent;
|
||||||
import forge.toolbox.FEvent.FEventHandler;
|
import forge.toolbox.FEvent.FEventHandler;
|
||||||
|
import forge.toolbox.FLabel;
|
||||||
|
import forge.toolbox.FOverlay;
|
||||||
|
import forge.toolbox.FTextArea;
|
||||||
import forge.util.TextUtil;
|
import forge.util.TextUtil;
|
||||||
import forge.util.Utils;
|
import forge.util.Utils;
|
||||||
import forge.util.gui.SGuiChoose;
|
import forge.util.gui.SGuiChoose;
|
||||||
|
|||||||
@@ -2,7 +2,18 @@ package forge.screens.planarconquest;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import forge.planarconquest.*;
|
import forge.planarconquest.ConquestAwardPool;
|
||||||
|
import forge.planarconquest.ConquestBattle;
|
||||||
|
import forge.planarconquest.ConquestChaosBattle;
|
||||||
|
import forge.planarconquest.ConquestData;
|
||||||
|
import forge.planarconquest.ConquestEvent;
|
||||||
|
import forge.planarconquest.ConquestLocation;
|
||||||
|
import forge.planarconquest.ConquestPlane;
|
||||||
|
import forge.planarconquest.ConquestPlaneData;
|
||||||
|
import forge.planarconquest.ConquestRegion;
|
||||||
|
import forge.planarconquest.ConquestReward;
|
||||||
|
import forge.planarconquest.ConquestUtil;
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
import com.badlogic.gdx.graphics.Color;
|
import com.badlogic.gdx.graphics.Color;
|
||||||
|
|||||||
@@ -18,8 +18,13 @@ import forge.itemmanager.filters.HistoricFormatSelect;
|
|||||||
import forge.model.CardCollections;
|
import forge.model.CardCollections;
|
||||||
import forge.model.FModel;
|
import forge.model.FModel;
|
||||||
import forge.properties.ForgeConstants;
|
import forge.properties.ForgeConstants;
|
||||||
import forge.quest.*;
|
import forge.quest.QuestController;
|
||||||
|
import forge.quest.QuestMode;
|
||||||
|
import forge.quest.QuestUtil;
|
||||||
|
import forge.quest.QuestWorld;
|
||||||
|
import forge.quest.StartingPoolPreferences;
|
||||||
import forge.quest.StartingPoolPreferences.PoolType;
|
import forge.quest.StartingPoolPreferences.PoolType;
|
||||||
|
import forge.quest.StartingPoolType;
|
||||||
import forge.quest.data.DeckConstructionRules;
|
import forge.quest.data.DeckConstructionRules;
|
||||||
import forge.quest.data.GameFormatQuest;
|
import forge.quest.data.GameFormatQuest;
|
||||||
import forge.quest.data.QuestPreferences.QPref;
|
import forge.quest.data.QuestPreferences.QPref;
|
||||||
@@ -27,9 +32,17 @@ import forge.screens.FScreen;
|
|||||||
import forge.screens.LoadingOverlay;
|
import forge.screens.LoadingOverlay;
|
||||||
import forge.screens.home.NewGameMenu;
|
import forge.screens.home.NewGameMenu;
|
||||||
import forge.screens.quest.QuestMenu.LaunchReason;
|
import forge.screens.quest.QuestMenu.LaunchReason;
|
||||||
import forge.toolbox.*;
|
import forge.toolbox.FCheckBox;
|
||||||
|
import forge.toolbox.FComboBox;
|
||||||
|
import forge.toolbox.FDisplayObject;
|
||||||
|
import forge.toolbox.FEvent;
|
||||||
import forge.toolbox.FEvent.FEventHandler;
|
import forge.toolbox.FEvent.FEventHandler;
|
||||||
|
import forge.toolbox.FLabel;
|
||||||
|
import forge.toolbox.FNumericTextField;
|
||||||
|
import forge.toolbox.FOptionPane;
|
||||||
|
import forge.toolbox.FRadioButton;
|
||||||
import forge.toolbox.FRadioButton.RadioButtonGroup;
|
import forge.toolbox.FRadioButton.RadioButtonGroup;
|
||||||
|
import forge.toolbox.FScrollPane;
|
||||||
import forge.util.FileUtil;
|
import forge.util.FileUtil;
|
||||||
import forge.util.ThreadUtil;
|
import forge.util.ThreadUtil;
|
||||||
import forge.util.Utils;
|
import forge.util.Utils;
|
||||||
@@ -38,8 +51,13 @@ import forge.util.storage.IStorage;
|
|||||||
|
|
||||||
import org.apache.commons.lang3.text.WordUtils;
|
import org.apache.commons.lang3.text.WordUtils;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
public class NewQuestScreen extends FScreen {
|
public class NewQuestScreen extends FScreen {
|
||||||
|
|
||||||
|
|||||||
@@ -3,8 +3,12 @@ package forge.screens.quest;
|
|||||||
import com.badlogic.gdx.graphics.Color;
|
import com.badlogic.gdx.graphics.Color;
|
||||||
import com.badlogic.gdx.utils.Align;
|
import com.badlogic.gdx.utils.Align;
|
||||||
import forge.Graphics;
|
import forge.Graphics;
|
||||||
import forge.assets.*;
|
import forge.assets.FImage;
|
||||||
|
import forge.assets.FSkinColor;
|
||||||
import forge.assets.FSkinColor.Colors;
|
import forge.assets.FSkinColor.Colors;
|
||||||
|
import forge.assets.FSkinFont;
|
||||||
|
import forge.assets.FSkinImage;
|
||||||
|
import forge.assets.ImageCache;
|
||||||
import forge.quest.IQuestEvent;
|
import forge.quest.IQuestEvent;
|
||||||
import forge.screens.settings.SettingsScreen;
|
import forge.screens.settings.SettingsScreen;
|
||||||
import forge.toolbox.FDisplayObject;
|
import forge.toolbox.FDisplayObject;
|
||||||
|
|||||||
@@ -1,7 +1,14 @@
|
|||||||
package forge.screens.settings;
|
package forge.screens.settings;
|
||||||
|
|
||||||
import forge.download.*;
|
import forge.download.GuiDownloadAchievementImages;
|
||||||
|
import forge.download.GuiDownloadPicturesLQ;
|
||||||
|
import forge.download.GuiDownloadPrices;
|
||||||
|
import forge.download.GuiDownloadQuestImages;
|
||||||
|
import forge.download.GuiDownloadSetPicturesLQ;
|
||||||
|
import forge.download.GuiDownloadService;
|
||||||
|
|
||||||
import forge.util.Localizer;
|
import forge.util.Localizer;
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
import com.badlogic.gdx.utils.Align;
|
import com.badlogic.gdx.utils.Align;
|
||||||
|
|||||||
@@ -331,6 +331,10 @@ public class SettingsPage extends TabPage<SettingsScreen> {
|
|||||||
localizer.getMessage("lblShowCardIDOverlays"),
|
localizer.getMessage("lblShowCardIDOverlays"),
|
||||||
localizer.getMessage("nlShowCardIDOverlays")),
|
localizer.getMessage("nlShowCardIDOverlays")),
|
||||||
5);
|
5);
|
||||||
|
lstSettings.addItem(new BooleanSetting(FPref.UI_OVERLAY_ABILITY_ICONS,
|
||||||
|
"Show Ability Icons",
|
||||||
|
"Show ability icons for cards, otherwise they're hidden."),
|
||||||
|
5);
|
||||||
|
|
||||||
//Vibration Options
|
//Vibration Options
|
||||||
lstSettings.addItem(new BooleanSetting(FPref.UI_VIBRATE_ON_LIFE_LOSS,
|
lstSettings.addItem(new BooleanSetting(FPref.UI_VIBRATE_ON_LIFE_LOSS,
|
||||||
|
|||||||
@@ -10,7 +10,8 @@ import forge.Graphics;
|
|||||||
import forge.interfaces.IComboBox;
|
import forge.interfaces.IComboBox;
|
||||||
import forge.menu.FDropDownMenu;
|
import forge.menu.FDropDownMenu;
|
||||||
import forge.menu.FMenuItem;
|
import forge.menu.FMenuItem;
|
||||||
import forge.toolbox.FEvent.*;
|
import forge.toolbox.FEvent.FEventHandler;
|
||||||
|
import forge.toolbox.FEvent.FEventType;
|
||||||
|
|
||||||
public class FComboBox<T> extends FTextField implements IComboBox<T> {
|
public class FComboBox<T> extends FTextField implements IComboBox<T> {
|
||||||
private final List<T> items = new ArrayList<>();
|
private final List<T> items = new ArrayList<>();
|
||||||
|
|||||||
@@ -9,7 +9,12 @@ import forge.util.Callback;
|
|||||||
import forge.util.Localizer;
|
import forge.util.Localizer;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.Arrays;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Comparator;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public class GuiChoose {
|
public class GuiChoose {
|
||||||
|
|
||||||
|
|||||||
@@ -12,5 +12,5 @@ ALTERNATE
|
|||||||
Name:Granted
|
Name:Granted
|
||||||
ManaCost:3 U
|
ManaCost:3 U
|
||||||
Types:Sorcery Adventure
|
Types:Sorcery Adventure
|
||||||
A:SP$ ChangeZone | Cost$ 3 U | Origin$ Sideboard | Destination$ Hand | ChangeType$ Card.nonCreature | ChangeNum$ 1 | SpellDescription$ You may choose a noncreature card you own from outside the game, reveal it, and put it into your hand.
|
A:SP$ ChangeZone | Cost$ 3 U | Origin$ Sideboard | Destination$ Hand | ChangeType$ Card.nonCreature+YouOwn | ChangeNum$ 1 | SpellDescription$ You may choose a noncreature card you own from outside the game, reveal it, and put it into your hand.
|
||||||
Oracle:You may choose a noncreature card you own from outside the game, reveal it, and put it into your hand.
|
Oracle:You may choose a noncreature card you own from outside the game, reveal it, and put it into your hand.
|
||||||
|
|||||||
@@ -9,6 +9,6 @@ ALTERNATE
|
|||||||
|
|
||||||
Name:Shield's Might
|
Name:Shield's Might
|
||||||
ManaCost:1 G
|
ManaCost:1 G
|
||||||
Types:Sorcery Adventure
|
Types:Instant Adventure
|
||||||
A:SP$ Pump | Cost$ 1 G | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ +2 | NumDef$ +2 | SpellDescription$ Target creature gets +2/+2 until end of turn. (Then exile this card. You may cast the creature later from exile.)
|
A:SP$ Pump | Cost$ 1 G | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ +2 | NumDef$ +2 | SpellDescription$ Target creature gets +2/+2 until end of turn. (Then exile this card. You may cast the creature later from exile.)
|
||||||
Oracle:Target creature gets +2/+2 until end of turn. (Then exile this card. You may cast the creature later from exile.)
|
Oracle:Target creature gets +2/+2 until end of turn. (Then exile this card. You may cast the creature later from exile.)
|
||||||
|
|||||||
@@ -9,5 +9,5 @@ SVar:TrigPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ HOUR | Counter
|
|||||||
T:Mode$ CounterAdded | ValidCard$ Card.Self | TriggerZones$ Battlefield | CounterType$ HOUR | CounterAmount$ EQ12 | Execute$ TrigChangeAll | TriggerDescription$ When the twelfth hour counter is put on CARDNAME, shuffle your hand and graveyard into your library, then draw seven cards. Exile CARDNAME.
|
T:Mode$ CounterAdded | ValidCard$ Card.Self | TriggerZones$ Battlefield | CounterType$ HOUR | CounterAmount$ EQ12 | Execute$ TrigChangeAll | TriggerDescription$ When the twelfth hour counter is put on CARDNAME, shuffle your hand and graveyard into your library, then draw seven cards. Exile CARDNAME.
|
||||||
SVar:TrigChangeAll:DB$ ChangeZoneAll | Origin$ Graveyard,Hand | Destination$ Library | ChangeType$ Card.YouOwn | Shuffle$ True | SubAbility$ DBDraw
|
SVar:TrigChangeAll:DB$ ChangeZoneAll | Origin$ Graveyard,Hand | Destination$ Library | ChangeType$ Card.YouOwn | Shuffle$ True | SubAbility$ DBDraw
|
||||||
SVar:DBDraw:DB$ Draw | Defined$ You | NumCards$ 7 | SubAbility$ DBExile
|
SVar:DBDraw:DB$ Draw | Defined$ You | NumCards$ 7 | SubAbility$ DBExile
|
||||||
SVar:DBExile:DB$ ChangeZone | Origin$ Stack | Destination$ Exile
|
SVar:DBExile:DB$ ChangeZone | Origin$ Battlefield | Destination$ Exile
|
||||||
Oracle:{T}: Add {U}.\n{2}{U}: Put an hour counter on Midnight Clock.\nAt the beginning of each upkeep, put an hour counter on Midnight Clock.\nWhen the twelfth hour counter is put on Midnight Clock, shuffle your hand and graveyard into your library, then draw seven cards. Exile Midnight Clock.
|
Oracle:{T}: Add {U}.\n{2}{U}: Put an hour counter on Midnight Clock.\nAt the beginning of each upkeep, put an hour counter on Midnight Clock.\nWhen the twelfth hour counter is put on Midnight Clock, shuffle your hand and graveyard into your library, then draw seven cards. Exile Midnight Clock.
|
||||||
|
|||||||
@@ -1080,61 +1080,61 @@ lblSearch=Suche
|
|||||||
lblPriority=Priorität
|
lblPriority=Priorität
|
||||||
lblTurn=Zug
|
lblTurn=Zug
|
||||||
lblPhase=Phase
|
lblPhase=Phase
|
||||||
lblEmpty=Empty
|
lblEmpty=Leer
|
||||||
lbltoResolve=to Resolve.
|
lbltoResolve=zur Abwicklung.
|
||||||
lblStormCount=Storm Count
|
lblStormCount=Sturmzähler
|
||||||
#PlayerControllerHuman.java
|
#PlayerControllerHuman.java
|
||||||
lblYouHaveWonTheCoinToss=%s, you have won the coin toss.
|
lblYouHaveWonTheCoinToss=%s, du hast den Münzwurf gewonnen.
|
||||||
lblYouLostTheLastGame=%s, you lost the last game.
|
lblYouLostTheLastGame=%s, du hast das letzte Spiel verloren.
|
||||||
lblWouldYouLiketoPlayorDraw=Would you like to play or draw?
|
lblWouldYouLiketoPlayorDraw=Willst du lieber zuerst spielen oder ziehen.
|
||||||
lblWhoWouldYouLiketoStartthisGame=Who would you like to start this game? (Click on the portrait.)
|
lblWhoWouldYouLiketoStartthisGame=Wer soll das Spiel beginnen? (Klicke auf das Portrait.)
|
||||||
lblPlay=Play
|
lblPlay=Spielen
|
||||||
lblDraw=Draw
|
lblDraw=Ziehen
|
||||||
lblTooFewCardsMainDeck=Too few cards in your main deck (minimum %s), please make modifications to your deck again.
|
lblTooFewCardsMainDeck=Zu wenig Karten in deinem Deck (mindestens %s). Bitte passe dein Deck an.
|
||||||
lblTooManyCardsSideboard=Too many cards in your sideboard (maximum %s), please make modifications to your deck again.
|
lblTooManyCardsSideboard=Zu viele Karten in deinem Deck (maximal %s). Bitte passe dein Deck an.
|
||||||
lblAssignCombatDamageWerentBlocked=Do you want to assign its combat damage as though it weren't blocked?
|
lblAssignCombatDamageWerentBlocked=Möchtest du den Kampfschaden deklarieren, als wäre nicht geblockt worden?
|
||||||
lblChosenCards=Chosen Cards
|
lblChosenCards=Wähle Karten
|
||||||
lblAttacker=Attacker
|
lblAttacker=Angreifer
|
||||||
lblTriggeredby=Triggered by
|
lblTriggeredby=Ausgelöst durch
|
||||||
lblChooseWhichCardstoReveal=Choose Which Cards to Reveal
|
lblChooseWhichCardstoReveal=Wähle die vorzuzeigenden Karten
|
||||||
lblChooseCardsActivateOpeningHandandOrder=Choose cards to activate from opening hand and their order
|
lblChooseCardsActivateOpeningHandandOrder=Wähle die aus der Starthand zu aktivierenden Karten und ihre Reihenfolge
|
||||||
lblActivateFirst=Activate first
|
lblActivateFirst=Aktiviere zuerst
|
||||||
lblChooseOptionalCosts=Choose optional Costs
|
lblChooseOptionalCosts=Wähle optionale Kosten
|
||||||
lblOptionalCosts=Optional Costs
|
lblOptionalCosts=Optionale Kosten
|
||||||
lblDoYouWanttoScry=Do you want to scry?
|
lblDoYouWanttoScry=Hellsicht anwenden?
|
||||||
lblChooseCardstoSpliceonto=Choose cards to Splice onto
|
lblChooseCardstoSpliceonto=Wähle Karte, an welche gekoppelt werden soll
|
||||||
lblDoNextActioninSequence=Do Next Action in Sequence
|
lblDoNextActioninSequence=Nächste Aktion ausführen
|
||||||
lblPleaseDefineanActionSequenceFirst=Please define an action sequence first.
|
lblPleaseDefineanActionSequenceFirst=Bitte lege erst die Aktionsreigefolge fest.
|
||||||
lblRememberActionSequence=Remember Action Sequence
|
lblRememberActionSequence=Merke Aktionsreihenfolge
|
||||||
lblYouMustHavePrioritytoUseThisFeature=You must have priority to use this feature.
|
lblYouMustHavePrioritytoUseThisFeature=Um diese Funktion zu nutzen brauchst du die Priorität.
|
||||||
lblNameTheCard=Name the card
|
lblNameTheCard=Nenne die Karte
|
||||||
lblWhichPlayerShouldRoll=Which player should roll?
|
lblWhichPlayerShouldRoll=Welcher Spieler soll würfeln?
|
||||||
lblChooseResult=Choose result
|
lblChooseResult=Wähle Ergebnis
|
||||||
lblChosenCardNotPermanentorCantExistIndependentlyontheBattleground=The chosen card is not a permanent or can't exist independently on the battlefield.\nIf you'd like to cast a non-permanent spell, or if you'd like to cast a permanent spell and place it on stack, please use the Cast Spell/Play Land button.
|
lblChosenCardNotPermanentorCantExistIndependentlyontheBattleground=Die gewählte Karte ist keine bleibende oder kann nicht alleine auf dem Spielfeld existieren.\nWenn du einen Nicht-bleibenden-Karte-Spruch sprechen, oder einen Bleibende-Karte-Spruch auf dem Stapel plazieren möchtest, nutze bitte den "Zauber wirken/Land spielen"-Knopf.
|
||||||
lblError=Error
|
lblError=Fehler
|
||||||
lblWinGame=Win Game
|
lblWinGame=Gewinne Spiel
|
||||||
lblSetLifetoWhat=Set life to what?
|
lblSetLifetoWhat=Setze Lebenspunkte auf?
|
||||||
lblSetLifeforWhichPlayer=Set life for which player
|
lblSetLifeforWhichPlayer=Setze Lebenspunkte für Spieler
|
||||||
lblChoosePermanentstoTap=Choose permanents to tap
|
lblChoosePermanentstoTap=Wähle Karte zum Tappen
|
||||||
lblChoosePermanentstoUntap=Choose permanents to untap
|
lblChoosePermanentstoUntap=Wähle Karte zum Enttappen
|
||||||
lblWhichTypeofCounter=Which type of counter?
|
lblWhichTypeofCounter=Welche Art von Marken?
|
||||||
lblHowManyCounters=How many counters?
|
lblHowManyCounters=Wie viele Marken?
|
||||||
lblRemoveCountersFromWhichCard=Remove counters from which card?
|
lblRemoveCountersFromWhichCard=Entferne Marken von welcher Karte?
|
||||||
lblAddCountersToWhichCard=Add counters to which card?
|
lblAddCountersToWhichCard=Lege Marken auf welche Karte?
|
||||||
lblChooseaCard=Choose a card
|
lblChooseaCard=Wähle eine Karte
|
||||||
lblNoPlayerPriorityDeckCantBeTutoredFrom=No player has priority at the moment, so their deck can't be tutored from.
|
lblNoPlayerPriorityDeckCantBeTutoredFrom=Kein Spieler hat Priorität im Moment, daher kein Zugriff auf entsprechendes Deck.
|
||||||
lblNoPlayerPriorityGameStateCannotBeSetup=No player has priority at the moment, so game state cannot be setup.
|
lblNoPlayerPriorityGameStateCannotBeSetup=Kein Spieler hat Priorität im Moment, daher der Spielstand nicht gesetzt werden.
|
||||||
lblErrorLoadingBattleSetupFile=Error loading battle setup file!
|
lblErrorLoadingBattleSetupFile=Fehler beim Laden der Spielvorgaben!
|
||||||
lblSelectCardstoAddtoYourDeck=Select cards to add to your deck
|
lblSelectCardstoAddtoYourDeck=Wähle Karten, um sie deinem Deck hinzuzufügen.
|
||||||
lblAddTheseToMyDeck=Add these to my deck
|
lblAddTheseToMyDeck=Zu meinem Deck hinzufügen
|
||||||
lblChooseaPile=Choose a pile
|
lblChooseaPile=Wähle einen Stapel
|
||||||
lblSelectOrderForSimultaneousAbilities=Select order for simultaneous abilities
|
lblSelectOrderForSimultaneousAbilities=Wähle Reihenfolge für simultane Fähigkeiten
|
||||||
lblReorderSimultaneousAbilities=Reorder simultaneous abilities
|
lblReorderSimultaneousAbilities=Ordne Reihenfolge für simultane Fähigkeiten neu
|
||||||
lblResolveFirst=Resolve first
|
lblResolveFirst=Zuerst abwickeln
|
||||||
lblMoveCardstoToporBbottomofLibrary=Move cards to top or bottom of library
|
lblMoveCardstoToporBbottomofLibrary=Bewege Karte an Anfang oder Ende der Bibliothek
|
||||||
lblSelectCardsToBeOutOnTheBottomOfYourLibrary=Select cards to be put on the bottom of your library
|
lblSelectCardsToBeOutOnTheBottomOfYourLibrary=Wähle Karte, welche unter die Bibliothek gelegt werden soll
|
||||||
lblCardsToPutOnTheBottom=Cards to put on the bottom
|
lblCardsToPutOnTheBottom=Karten, welche unter die Bibliothek gelegt werden sollen
|
||||||
lblArrangeCardsToBePutOnTopOfYourLibrary=Arrange cards to be put on top of your library
|
lblArrangeCardsToBePutOnTopOfYourLibrary=Ordne Karten, welche unter die Bibliothek gelegt werden sollen
|
||||||
lblTopOfLibrary=Top of Library
|
lblTopOfLibrary=Oben auf Bibliothek
|
||||||
lblSelectCardsToBePutIntoTheGraveyard=Select cards to be put into the graveyard
|
lblSelectCardsToBePutIntoTheGraveyard=Wähle Karten, welche auf den Friedhof gelegt werden sollen
|
||||||
lblCardsToPutInTheGraveyard=Cards to put in the graveyard
|
lblCardsToPutInTheGraveyard=Karten, welche auf den Friedhof gelegt werden sollen
|
||||||
|
|||||||
@@ -58,15 +58,15 @@ cbSingletons=单张模式
|
|||||||
cbRemoveArtifacts=删除神器
|
cbRemoveArtifacts=删除神器
|
||||||
cbAnte=赌博模式
|
cbAnte=赌博模式
|
||||||
cbAnteMatchRarity=赌注稀有度匹配
|
cbAnteMatchRarity=赌注稀有度匹配
|
||||||
cbEnableAICheats=允许AI作弊
|
cbEnableAICheats=允许人工智能作弊
|
||||||
cbManaBurn=法术力灼烧
|
cbManaBurn=法术力灼烧
|
||||||
cbManaLostPrompt=提示法术力池将要清空
|
cbManaLostPrompt=提示法术力池将要清空
|
||||||
cbDevMode=开发人员模式
|
cbDevMode=开发人员模式
|
||||||
cbLoadCardsLazily=惰性加载卡牌脚本
|
cbLoadCardsLazily=惰性加载牌张脚本
|
||||||
cbLoadHistoricFormats=加载史记赛制
|
cbLoadHistoricFormats=加载史记赛制
|
||||||
cbWorkshopSyntax=作坊语法检查
|
cbWorkshopSyntax=作坊语法检查
|
||||||
cbEnforceDeckLegality=套牌一致性
|
cbEnforceDeckLegality=套牌一致性
|
||||||
cbSideboardForAI=玩家为AI换备
|
cbSideboardForAI=玩家为人工智能换备
|
||||||
cbPerformanceMode=性能模式
|
cbPerformanceMode=性能模式
|
||||||
cbFilteredHands=手牌过滤
|
cbFilteredHands=手牌过滤
|
||||||
cbImageFetcher=自动下载缺失的图片
|
cbImageFetcher=自动下载缺失的图片
|
||||||
@@ -101,7 +101,7 @@ cbUseSentry=自动提交错误报告
|
|||||||
cbpGameLogEntryType=游戏日志详细程度
|
cbpGameLogEntryType=游戏日志详细程度
|
||||||
cbpCloseAction=关闭动作
|
cbpCloseAction=关闭动作
|
||||||
cbpDefaultFontSize=默认字体大小
|
cbpDefaultFontSize=默认字体大小
|
||||||
cbpAiProfiles=AI强度
|
cbpAiProfiles=人工智能强度
|
||||||
cbpDisplayCurrentCardColors=显示牌张颜色详情
|
cbpDisplayCurrentCardColors=显示牌张颜色详情
|
||||||
cbpAutoYieldMode=自动让过
|
cbpAutoYieldMode=自动让过
|
||||||
cbpCounterDisplayType=计数器显示类型
|
cbpCounterDisplayType=计数器显示类型
|
||||||
@@ -115,19 +115,19 @@ nlCompactMainMenu=启用节省空间的侧边栏,一次只显示一个菜单
|
|||||||
nlUseSentry=启用后,会自动向开发人员提交错误报告。
|
nlUseSentry=启用后,会自动向开发人员提交错误报告。
|
||||||
GamePlay=游戏
|
GamePlay=游戏
|
||||||
nlpMulliganRule=选择调度规则
|
nlpMulliganRule=选择调度规则
|
||||||
nlpAiProfiles=选择你的AI对手
|
nlpAiProfiles=选择你的人工智能对手
|
||||||
nlAnte=确定游戏是否使用赌注
|
nlAnte=确定游戏是否使用赌注
|
||||||
nlAnteMatchRarity=尝试为所有玩家生成同稀有度赌注
|
nlAnteMatchRarity=尝试为所有玩家生成同稀有度赌注
|
||||||
nlEnableAICheats=允许AI进行作弊以获得优势(对于已经设置了作弊洗牌的AI)。
|
nlEnableAICheats=允许人工智能进行作弊以获得优势(对于已经设置了作弊洗牌的人工智能)。
|
||||||
nlManaBurn=使用法术力灼烧(M10之前的规则)
|
nlManaBurn=使用法术力灼烧(M10之前的规则)
|
||||||
nlManaLostPrompt=启用后,如果让过优先权会导致法术力池清空,你将收到一个警告提示。
|
nlManaLostPrompt=启用后,如果让过优先权会导致法术力池清空,你将收到一个警告提示。
|
||||||
nlEnforceDeckLegality=强制每个与环境相关的套牌合法性(最小单卡数,最大单卡数等)。
|
nlEnforceDeckLegality=强制每个与环境相关的套牌合法性(最小单卡数,最大单卡数等)。
|
||||||
nlSideboardForAI=允许用户在构筑赛制中为AI换备牌。
|
nlSideboardForAI=允许用户在构筑赛制中为人工智能换备牌。
|
||||||
nlPerformanceMode=禁止其他静态能力检查以加速游戏引擎(警告:对手手牌有闪现单卡能使用时可能会跳过)。
|
nlPerformanceMode=禁止其他静态能力检查以加速游戏引擎(警告:对手手牌有闪现单卡能使用时可能会跳过)。
|
||||||
nlFilteredHands=生成两个起手并发给你最接近套牌地比例的起手(需要重启)
|
nlFilteredHands=生成两个起手并发给你最接近套牌地比例的起手(需要重启)
|
||||||
nlCloneImgSource=启用克隆的时候将使用原画而不是克隆牌的画
|
nlCloneImgSource=启用克隆的时候将使用原画而不是克隆牌的画
|
||||||
nlPromptFreeBlocks=启用后如果你需要支付0来阻挡,则不会提示自动支付0。
|
nlPromptFreeBlocks=启用后如果你需要支付0来阻挡,则不会提示自动支付0。
|
||||||
nlPauseWhileMinimized=启用后,Forge将在暂停时最小化(主要用于AI VS AI)。
|
nlPauseWhileMinimized=启用后,Forge将在暂停时最小化(主要用于人工智能 VS 人工智能)。
|
||||||
nlEscapeEndsTurn=启用后,空格键可以用于结束当前回合的替代按键。
|
nlEscapeEndsTurn=启用后,空格键可以用于结束当前回合的替代按键。
|
||||||
nlDetailedPaymentDesc=启用后,选择目标和支付费用的时候会显示详细的咒语/异能说明。
|
nlDetailedPaymentDesc=启用后,选择目标和支付费用的时候会显示详细的咒语/异能说明。
|
||||||
nlShowStormCount=启用后,提示窗格将会显示当前的风暴计数
|
nlShowStormCount=启用后,提示窗格将会显示当前的风暴计数
|
||||||
@@ -144,10 +144,10 @@ DeckEditorOptions=套牌编辑器选项
|
|||||||
nlFilterLandsByColorId=当使用牌张颜色筛选器时,过滤地可以更容易找到产数相关法术力的地
|
nlFilterLandsByColorId=当使用牌张颜色筛选器时,过滤地可以更容易找到产数相关法术力的地
|
||||||
AdvancedSettings=高级设置
|
AdvancedSettings=高级设置
|
||||||
nlDevMode=启用在开发期间进行测试的功能菜单
|
nlDevMode=启用在开发期间进行测试的功能菜单
|
||||||
nlWorkshopSyntax=在作坊中启用卡牌脚本检查。注意:该功能任在测试阶段。
|
nlWorkshopSyntax=在作坊中启用牌张脚本检查。注意:该功能任在测试阶段。
|
||||||
nlGameLogEntryType=更改游戏中日志显示的信息量。排序为最少到最详细。
|
nlGameLogEntryType=更改游戏中日志显示的信息量。排序为最少到最详细。
|
||||||
nlCloseAction=更改单击右上角X按钮时的行为
|
nlCloseAction=更改单击右上角X按钮时的行为
|
||||||
nlLoadCardsLazily=如果打开该选项Forge将在使用到卡牌脚本时才加载(警告:实验状态)。
|
nlLoadCardsLazily=如果打开该选项Forge将在使用到牌张脚本时才加载(警告:实验状态)。
|
||||||
nlLoadHistoricFormats=如果打开,Forge将加载史记赛制,这个能会导致游戏载入时间变长。
|
nlLoadHistoricFormats=如果打开,Forge将加载史记赛制,这个能会导致游戏载入时间变长。
|
||||||
GraphicOptions=图形选项
|
GraphicOptions=图形选项
|
||||||
nlDefaultFontSize=UI中字体的默认大小。所有字体元素都相对于此缩放。(需要重启)
|
nlDefaultFontSize=UI中字体的默认大小。所有字体元素都相对于此缩放。(需要重启)
|
||||||
@@ -155,21 +155,21 @@ cbpMulliganRule = 调度规则
|
|||||||
nlImageFetcher=允许从在线资源中实时获取缺失的图片
|
nlImageFetcher=允许从在线资源中实时获取缺失的图片
|
||||||
nlDisplayFoil=显示闪卡
|
nlDisplayFoil=显示闪卡
|
||||||
nlRandomFoil=随机将牌设置为闪卡
|
nlRandomFoil=随机将牌设置为闪卡
|
||||||
nlScaleLarger=允许卡牌图片缩放为初始大小
|
nlScaleLarger=允许牌张图片缩放为初始大小
|
||||||
nlRenderBlackCardBorders=为牌周围渲染黑色边框
|
nlRenderBlackCardBorders=为牌周围渲染黑色边框
|
||||||
nlLargeCardViewers=是所有牌看起来更大以便高分辨率图片看起来更舒适,不适合低分辨率设备使用
|
nlLargeCardViewers=是所有牌看起来更大以便高分辨率图片看起来更舒适,不适合低分辨率设备使用
|
||||||
nlSmallDeckViewer=将套牌查看器设置为800X600而不是按屏幕大小等比缩放
|
nlSmallDeckViewer=将套牌查看器设置为800X600而不是按屏幕大小等比缩放
|
||||||
nlRandomArtInPools=限制赛生成的卡池中带有闪卡。
|
nlRandomArtInPools=限制赛生成的卡池中带有闪卡。
|
||||||
nlUiForTouchScreen=增加一些UI元素以提高触屏体验(需要重启)。
|
nlUiForTouchScreen=增加一些UI元素以提高触屏体验(需要重启)。
|
||||||
nlCompactPrompt=隐藏标题并在“提示”窗格中使用较小的字体使其更紧凑。
|
nlCompactPrompt=隐藏标题并在“提示”窗格中使用较小的字体使其更紧凑。
|
||||||
nlHideReminderText=在“卡牌详情“窗格中隐藏提醒文本
|
nlHideReminderText=在“牌张详情“窗格中隐藏提醒文本
|
||||||
nlOpenPacksIndiv=打开肥包或者补充盒的时候一包一包开。
|
nlOpenPacksIndiv=打开肥包或者补充盒的时候一包一包开。
|
||||||
nlTokensInSeparateRow=生物与衍生物分不同的行显示。
|
nlTokensInSeparateRow=生物与衍生物分不同的行显示。
|
||||||
nlStackCreatures=在战场上如同地、神器、结界一般堆叠一样的生物。
|
nlStackCreatures=在战场上如同地、神器、结界一般堆叠一样的生物。
|
||||||
nlTimedTargOverlay=启用基于限制目标的覆盖优化以减少CPU使用率(仅在旧设备上需要使用,需要重启游戏)。
|
nlTimedTargOverlay=启用基于限制目标的覆盖优化以减少CPU使用率(仅在旧设备上需要使用,需要重启游戏)。
|
||||||
nlCounterDisplayType=选择指示物的样式。基于文本还是基于图片还是二者混合。
|
nlCounterDisplayType=选择指示物的样式。基于文本还是基于图片还是二者混合。
|
||||||
nlCounterDisplayLocation=确定牌张上指示物的位置:靠近底部还是顶部
|
nlCounterDisplayLocation=确定牌张上指示物的位置:靠近底部还是顶部
|
||||||
nlDisplayCurrentCardColors=在卡牌详情窗格中显示当前牌的颜色
|
nlDisplayCurrentCardColors=在牌张详情窗格中显示当前牌的颜色
|
||||||
SoundOptions=声音选项
|
SoundOptions=声音选项
|
||||||
nlEnableSounds=在游戏中启用声音效果
|
nlEnableSounds=在游戏中启用声音效果
|
||||||
nlEnableMusic=在游戏中启用背景音乐
|
nlEnableMusic=在游戏中启用背景音乐
|
||||||
@@ -195,7 +195,7 @@ lblDownloadPicsHQ=下载缺省牌的高清图片
|
|||||||
lblDownloadSetPics=下载每张牌的图片(每张牌出现一次)
|
lblDownloadSetPics=下载每张牌的图片(每张牌出现一次)
|
||||||
lblDownloadQuestImages=下载冒险之旅里使用的衍生物与图标
|
lblDownloadQuestImages=下载冒险之旅里使用的衍生物与图标
|
||||||
lblDownloadAchievementImages=下载成就图片,让你的奖杯更引人注目。
|
lblDownloadAchievementImages=下载成就图片,让你的奖杯更引人注目。
|
||||||
lblDownloadPrices=下载卡牌商店最新的价格表
|
lblDownloadPrices=下载牌张商店最新的价格表
|
||||||
lblYourVersionOfJavaIsTooOld=你的Java版本太旧无法开始下载内容
|
lblYourVersionOfJavaIsTooOld=你的Java版本太旧无法开始下载内容
|
||||||
lblPleaseUpdateToTheLatestVersionOfJava=请更新到最新版本的JRE
|
lblPleaseUpdateToTheLatestVersionOfJava=请更新到最新版本的JRE
|
||||||
lblYoureRunning=你在运行
|
lblYoureRunning=你在运行
|
||||||
@@ -255,7 +255,7 @@ lblCommanderDeck=指挥官套牌
|
|||||||
lblPlanarDeck=时空竞逐套牌
|
lblPlanarDeck=时空竞逐套牌
|
||||||
lblVanguard=先锋
|
lblVanguard=先锋
|
||||||
lblHuman=人类
|
lblHuman=人类
|
||||||
lblAI=AI
|
lblAI=人工智能
|
||||||
lblOpen=打开
|
lblOpen=打开
|
||||||
lblUseSimulation=使用模拟
|
lblUseSimulation=使用模拟
|
||||||
lblGetaNewRandomName=获取一个新的随机名称
|
lblGetaNewRandomName=获取一个新的随机名称
|
||||||
@@ -299,7 +299,7 @@ lblAlphaStrike=先攻
|
|||||||
lblEndTurn=结束回合
|
lblEndTurn=结束回合
|
||||||
lblTargetingArcs=瞄准弧
|
lblTargetingArcs=瞄准弧
|
||||||
lblOff=关闭
|
lblOff=关闭
|
||||||
lblCardMouseOver=卡牌悬停
|
lblCardMouseOver=牌张悬停
|
||||||
lblAlwaysOn=总是打开
|
lblAlwaysOn=总是打开
|
||||||
lblAutoYields=自动让过
|
lblAutoYields=自动让过
|
||||||
lblDeckList=套牌列表
|
lblDeckList=套牌列表
|
||||||
@@ -352,8 +352,8 @@ lblPlayAnOpponent=所有对手
|
|||||||
lblPlayAll7opponents=全部7个对手
|
lblPlayAll7opponents=全部7个对手
|
||||||
lblBuildorselectadeck=构建或选择一个套牌
|
lblBuildorselectadeck=构建或选择一个套牌
|
||||||
lblDraftText1=在轮抓模式中,三个补充包在8个玩家中传递
|
lblDraftText1=在轮抓模式中,三个补充包在8个玩家中传递
|
||||||
lblDraftText2=从你选的牌中组一套牌。AI也会这样做
|
lblDraftText2=从你选的牌中组一套牌。人工智能也会这样做
|
||||||
lblDraftText3=然后对抗一个或多个AI对手
|
lblDraftText3=然后对抗一个或多个人工智能对手
|
||||||
lblNewBoosterDraftGame=新的补充包轮抓
|
lblNewBoosterDraftGame=新的补充包轮抓
|
||||||
lblDraftDecks=轮抓套牌
|
lblDraftDecks=轮抓套牌
|
||||||
#CSubmenuDraft.java
|
#CSubmenuDraft.java
|
||||||
@@ -366,8 +366,8 @@ lblSealedDecks=现开套牌
|
|||||||
lblHeaderSealed=游戏模式:现开
|
lblHeaderSealed=游戏模式:现开
|
||||||
lblSealedText1=构建或选择一个套牌
|
lblSealedText1=构建或选择一个套牌
|
||||||
lblSealedText2=在现开模式中,您可以从补充包里(最多10个)构建一套牌
|
lblSealedText2=在现开模式中,您可以从补充包里(最多10个)构建一套牌
|
||||||
lblSealedText3=从你得到的牌中组一套牌。AI也会这样做
|
lblSealedText3=从你得到的牌中组一套牌。人工智能也会这样做
|
||||||
lblSealedText4=然后对抗一个或多个AI对手
|
lblSealedText4=然后对抗一个或多个人工智能对手
|
||||||
btnBuildNewSealedDeck=构建新的现开套牌
|
btnBuildNewSealedDeck=构建新的现开套牌
|
||||||
#FDeckChooser.java
|
#FDeckChooser.java
|
||||||
lblViewDeck=查看套牌
|
lblViewDeck=查看套牌
|
||||||
@@ -425,7 +425,7 @@ lblNextChallengeNotYet=没有确定下次胜利后的挑战
|
|||||||
btnUnlockSets=解锁系列
|
btnUnlockSets=解锁系列
|
||||||
btnTravel=时空旅行
|
btnTravel=时空旅行
|
||||||
btnBazaar=珍宝集市
|
btnBazaar=珍宝集市
|
||||||
btnSpellShop=卡牌商店
|
btnSpellShop=牌张商店
|
||||||
cbSummonPlant=召唤植物
|
cbSummonPlant=召唤植物
|
||||||
cbLaunchZeppelin=启动飞艇
|
cbLaunchZeppelin=启动飞艇
|
||||||
#VSubmenuQuest.java
|
#VSubmenuQuest.java
|
||||||
@@ -448,7 +448,7 @@ lblCustomdeck=自定义套牌
|
|||||||
lblDefineCustomFormat=定义自定义赛制
|
lblDefineCustomFormat=定义自定义赛制
|
||||||
lblSelectFormat=选择赛制
|
lblSelectFormat=选择赛制
|
||||||
lblStartWithAllCards=从所选系列的所有牌开始
|
lblStartWithAllCards=从所选系列的所有牌开始
|
||||||
lblAllowDuplicateCards=允许重复的卡牌
|
lblAllowDuplicateCards=允许重复的牌张
|
||||||
lblStartingPoolDistribution=初始牌池分配
|
lblStartingPoolDistribution=初始牌池分配
|
||||||
lblChooseDistribution=选择分配
|
lblChooseDistribution=选择分配
|
||||||
lblPrizedCards=奖励卡
|
lblPrizedCards=奖励卡
|
||||||
@@ -505,9 +505,9 @@ lblColors=颜色
|
|||||||
lblnoSettings=没有可用于此选择的设置
|
lblnoSettings=没有可用于此选择的设置
|
||||||
lblDistribution=分配
|
lblDistribution=分配
|
||||||
lblHoverforDescription=将鼠标悬停在每个选项上以获得更详细的说明
|
lblHoverforDescription=将鼠标悬停在每个选项上以获得更详细的说明
|
||||||
lblradBalanced=“均衡”将在每种选定的颜色中提供数量均衡的卡牌。
|
lblradBalanced=“均衡”将在每种选定的颜色中提供数量均衡的牌张。
|
||||||
lblradRandom=“随机”将随机分配卡牌和颜色。
|
lblradRandom=“随机”将随机分配牌张和颜色。
|
||||||
lblradSurpriseMe=随机挑选颜色并提供数量均衡的随机卡牌。
|
lblradSurpriseMe=随机挑选颜色并提供数量均衡的随机牌张。
|
||||||
lblradBoosters=忽略所有颜色设置,从指定数量的补充包中生成牌池
|
lblradBoosters=忽略所有颜色设置,从指定数量的补充包中生成牌池
|
||||||
lblcbxArtifacts=选择后无论选择的颜色如何,神器都包涵在牌池中,这模拟了旧牌池的行为。
|
lblcbxArtifacts=选择后无论选择的颜色如何,神器都包涵在牌池中,这模拟了旧牌池的行为。
|
||||||
#VSubmenuChallenges.java
|
#VSubmenuChallenges.java
|
||||||
@@ -531,7 +531,7 @@ lblPastResults=结果
|
|||||||
lblQuestDecks=套牌管理
|
lblQuestDecks=套牌管理
|
||||||
lblQuestDesc1=一开始你可以从有限的牌池中构建套牌。
|
lblQuestDesc1=一开始你可以从有限的牌池中构建套牌。
|
||||||
lblQuestDesc2=随着冒险之旅的进行,你的牌池逐渐增长,可以构建出更强的套牌。
|
lblQuestDesc2=随着冒险之旅的进行,你的牌池逐渐增长,可以构建出更强的套牌。
|
||||||
lblQuestDesc3=并且在与AI的决斗和挑战对抗中可以解锁更多牌。
|
lblQuestDesc3=并且在与人工智能的决斗和挑战对抗中可以解锁更多牌。
|
||||||
lblBuildaNewDeck=构建一个新套牌
|
lblBuildaNewDeck=构建一个新套牌
|
||||||
#Decktype.java
|
#Decktype.java
|
||||||
lblCustomUserDecks=用户自定义套牌
|
lblCustomUserDecks=用户自定义套牌
|
||||||
@@ -620,7 +620,7 @@ lblBuildAndSelectaDeck=构建,然后在“冒险套牌”子菜单中选择一
|
|||||||
lblCurrentDeck=你现在的套牌是%n
|
lblCurrentDeck=你现在的套牌是%n
|
||||||
PleaseCreateAQuestBefore=请在%n之前创建套牌。
|
PleaseCreateAQuestBefore=请在%n之前创建套牌。
|
||||||
lblNoQuest=没有探索
|
lblNoQuest=没有探索
|
||||||
lblVisitTheSpellShop=参观卡牌商店
|
lblVisitTheSpellShop=参观牌张商店
|
||||||
lblVisitTheBazaar=参观珍宝集市
|
lblVisitTheBazaar=参观珍宝集市
|
||||||
lblUnlockEditions=解锁新的时空
|
lblUnlockEditions=解锁新的时空
|
||||||
lblUnlocked=你已经成功解锁%n
|
lblUnlocked=你已经成功解锁%n
|
||||||
@@ -662,9 +662,9 @@ lblHard=难
|
|||||||
lblExpert=专家
|
lblExpert=专家
|
||||||
lblWinsforBooster=获得补充包所需的胜利
|
lblWinsforBooster=获得补充包所需的胜利
|
||||||
lblWinsforRankIncrease=排名增加所需的胜利
|
lblWinsforRankIncrease=排名增加所需的胜利
|
||||||
lblWinsforMediumAI=匹配中等难度AI所需的胜利
|
lblWinsforMediumAI=匹配中等难度人工智能所需的胜利
|
||||||
lblWinsforHardAI=匹配困难难度AI所需的胜利
|
lblWinsforHardAI=匹配困难难度人工智能所需的胜利
|
||||||
lblWinsforExpertAI=匹配专家难度AI所需的胜利
|
lblWinsforExpertAI=匹配专家难度人工智能所需的胜利
|
||||||
lblStartingCommons=初始铁
|
lblStartingCommons=初始铁
|
||||||
lblStartingUncommons=初始银
|
lblStartingUncommons=初始银
|
||||||
lblStartingRares=初始金
|
lblStartingRares=初始金
|
||||||
@@ -695,16 +695,16 @@ lblCardSalePercentageCap=出售牌的系数上限
|
|||||||
lblCardSalePriceCap=出售牌的价格上限
|
lblCardSalePriceCap=出售牌的价格上限
|
||||||
lblWinstoUncapSalePrice=胜利解锁价格系数
|
lblWinstoUncapSalePrice=胜利解锁价格系数
|
||||||
lblPlaysetSize=玩家收藏大小
|
lblPlaysetSize=玩家收藏大小
|
||||||
ttPlaysetSize=在售卖卡牌时要保留的卡牌数量
|
ttPlaysetSize=在售卖牌张时要保留的牌张数量
|
||||||
lblPlaysetSizeBasicLand=玩家收藏大小:基本地
|
lblPlaysetSizeBasicLand=玩家收藏大小:基本地
|
||||||
ttPlaysetSizeBasicLand=在售卖卡牌时要保留的基本地数量
|
ttPlaysetSizeBasicLand=在售卖牌张时要保留的基本地数量
|
||||||
lblPlaysetSizeAnyNumber=玩家收藏大小:任意数量
|
lblPlaysetSizeAnyNumber=玩家收藏大小:任意数量
|
||||||
ttPlaysetSizeAnyNumber=售卖卡牌时不保留卡牌
|
ttPlaysetSizeAnyNumber=售卖牌张时不保留牌张
|
||||||
lblItemLevelRestriction=物品等级限制
|
lblItemLevelRestriction=物品等级限制
|
||||||
lblFoilfilterAlwaysOn=闪卡过滤器始终开启
|
lblFoilfilterAlwaysOn=闪卡过滤器始终开启
|
||||||
lblRatingsfilterAlwaysOn=评级过滤器始终开启。
|
lblRatingsfilterAlwaysOn=评级过滤器始终开启。
|
||||||
lblSimulateAIvsAIResults=模拟AI VS AI的结果。
|
lblSimulateAIvsAIResults=模拟人工智能 VS 人工智能的结果。
|
||||||
ttSimulateAIvsAIResults=如果设置为1,则不会播放AI VS AI的轮抓。而是快速确定其对局结果。
|
ttSimulateAIvsAIResults=如果设置为1,则不会播放人工智能 VS 人工智能的轮抓。而是快速确定其对局结果。
|
||||||
lblWinsforNewDraft=新轮抓所需的胜利
|
lblWinsforNewDraft=新轮抓所需的胜利
|
||||||
lblWinsperDraftRotation=每次轮抓胜利轮替
|
lblWinsperDraftRotation=每次轮抓胜利轮替
|
||||||
ttWinsperDraftRotation=如果轮抓没有赢这么多场,那么它将被删除或者替换。
|
ttWinsperDraftRotation=如果轮抓没有赢这么多场,那么它将被删除或者替换。
|
||||||
@@ -767,7 +767,7 @@ lblRemove4ofcard=移除4张牌
|
|||||||
ttRemove4ofcard=最多可以将4张所选牌从当前套牌移除
|
ttRemove4ofcard=最多可以将4张所选牌从当前套牌移除
|
||||||
lblAddBasicLands=添加基本地
|
lblAddBasicLands=添加基本地
|
||||||
ttAddBasicLands=添加基本地到套牌
|
ttAddBasicLands=添加基本地到套牌
|
||||||
lblCardCatalog=卡牌目录
|
lblCardCatalog=牌张目录
|
||||||
lblJumptoprevioustable=跳转到上一个表格
|
lblJumptoprevioustable=跳转到上一个表格
|
||||||
lblJumptopnexttable=跳转到下一个表格
|
lblJumptopnexttable=跳转到下一个表格
|
||||||
lblJumptotextfilter=跳转到文本筛选器
|
lblJumptotextfilter=跳转到文本筛选器
|
||||||
@@ -863,7 +863,7 @@ lblUntitled=无标题
|
|||||||
lblPrompt=提示
|
lblPrompt=提示
|
||||||
lblGameSetup=游戏设置
|
lblGameSetup=游戏设置
|
||||||
#ColumnDef.java
|
#ColumnDef.java
|
||||||
lblAIStatus=AI状态
|
lblAIStatus=人工智能状态
|
||||||
lblCMC=总法术力费用
|
lblCMC=总法术力费用
|
||||||
ttCMC=总法术力费用
|
ttCMC=总法术力费用
|
||||||
lblCN=编号
|
lblCN=编号
|
||||||
@@ -905,7 +905,7 @@ lblBattlefieldTextureFiltering=战场纹理过滤
|
|||||||
lblCompactListItems=紧凑的项目列表
|
lblCompactListItems=紧凑的项目列表
|
||||||
lblCompactTabs=紧凑标签
|
lblCompactTabs=紧凑标签
|
||||||
lblCardOverlays=牌张叠加层
|
lblCardOverlays=牌张叠加层
|
||||||
lblDisableCardEffect=禁用卡牌“效果”图
|
lblDisableCardEffect=禁用牌张“效果”图
|
||||||
lblDynamicBackgroundPlanechase=动态时空背景
|
lblDynamicBackgroundPlanechase=动态时空背景
|
||||||
lblGameplayOptions=游戏选项
|
lblGameplayOptions=游戏选项
|
||||||
lblGeneralSettings=常规设置
|
lblGeneralSettings=常规设置
|
||||||
@@ -929,14 +929,14 @@ lblVibrateWhenLosingLife=失去生命时震动
|
|||||||
lblVibrationOptions=振动选项
|
lblVibrationOptions=振动选项
|
||||||
nlAutomaticBugReports=在没有提示的情况下自动向开发人员报告错误
|
nlAutomaticBugReports=在没有提示的情况下自动向开发人员报告错误
|
||||||
nlBattlefieldTextureFiltering=在战场上过滤闪卡特效,使其在大屏幕上不像素化(需要重启,可能会降低性能)。
|
nlBattlefieldTextureFiltering=在战场上过滤闪卡特效,使其在大屏幕上不像素化(需要重启,可能会降低性能)。
|
||||||
nlCompactListItems=默认情况下,在所有视图列表中只显示卡牌和套牌的单行文本。
|
nlCompactListItems=默认情况下,在所有视图列表中只显示牌张和套牌的单行文本。
|
||||||
nlCompactTabs=在标签页屏幕顶部显示较小的标签(例如此屏幕)。
|
nlCompactTabs=在标签页屏幕顶部显示较小的标签(例如此屏幕)。
|
||||||
nlDisableCardEffect=禁用“效果”卡的缩放图片。
|
nlDisableCardEffect=禁用“效果”卡的缩放图片。
|
||||||
nlDynamicBackgroundPlanechase=使用当前时空图片作为背景(时空图片必须位于cache/pics/planechase文件夹中)。
|
nlDynamicBackgroundPlanechase=使用当前时空图片作为背景(时空图片必须位于cache/pics/planechase文件夹中)。
|
||||||
nlHotSeatMode=当用两个人类玩家开始游戏的时候,用单个提示控制两个玩家。
|
nlHotSeatMode=当用两个人类玩家开始游戏的时候,用单个提示控制两个玩家。
|
||||||
nlLandscapeMode=使用横向(水平)而不是纵向(垂直)。
|
nlLandscapeMode=使用横向(水平)而不是纵向(垂直)。
|
||||||
nlMinimizeScreenLock=锁定屏幕时最小化Forge(锁屏以后出现图形故障使用)。
|
nlMinimizeScreenLock=锁定屏幕时最小化Forge(锁屏以后出现图形故障使用)。
|
||||||
nlOrderGraveyard=确定何时让玩家确定同时进入坟场的牌的顺序(绝不/总是/只对有关卡牌)。
|
nlOrderGraveyard=确定何时让玩家确定同时进入坟场的牌的顺序(绝不/总是/只对有关牌张)。
|
||||||
nlRotateZoomPlanesPhenomena=旋转缩放时空或异象图片。
|
nlRotateZoomPlanesPhenomena=旋转缩放时空或异象图片。
|
||||||
nlRotateZoomSplit=旋转缩放连体牌图片。
|
nlRotateZoomSplit=旋转缩放连体牌图片。
|
||||||
nlShowCardIDOverlays=显示牌张的ID叠加层,否则他们被隐藏。
|
nlShowCardIDOverlays=显示牌张的ID叠加层,否则他们被隐藏。
|
||||||
@@ -946,7 +946,7 @@ nlShowCardOverlays=显示牌张名称,法术力费用,力量/防御和ID叠
|
|||||||
nlShowCardPTOverlays=显示力量/防御/忠诚叠加层,否则他们被隐藏。
|
nlShowCardPTOverlays=显示力量/防御/忠诚叠加层,否则他们被隐藏。
|
||||||
nlShowMatchBackground=在战场显示背景图片,否则显示背景纹理。
|
nlShowMatchBackground=在战场显示背景图片,否则显示背景纹理。
|
||||||
nlTheme=设置显示的组件使用的外观主题。
|
nlTheme=设置显示的组件使用的外观主题。
|
||||||
nlVibrateAfterLongPress=启用长按触发震动,例如长按缩放卡牌图片。
|
nlVibrateAfterLongPress=启用长按触发震动,例如长按缩放牌张图片。
|
||||||
nlVibrateWhenLosingLife=启用当玩家在游戏中失去生命或收到伤害时震动。
|
nlVibrateWhenLosingLife=启用当玩家在游戏中失去生命或收到伤害时震动。
|
||||||
#MatchScreen.java
|
#MatchScreen.java
|
||||||
lblPlayers=玩家列表
|
lblPlayers=玩家列表
|
||||||
@@ -971,7 +971,7 @@ lblChangePreferredArt=改变首选卡图
|
|||||||
lblSelectPreferredArt=选择首选的卡图版本
|
lblSelectPreferredArt=选择首选的卡图版本
|
||||||
lblTo=到
|
lblTo=到
|
||||||
lblAvatar=头像
|
lblAvatar=头像
|
||||||
lblCards=卡牌
|
lblCards=牌张
|
||||||
lblPlanes=时空
|
lblPlanes=时空
|
||||||
lblSchemes=阴谋
|
lblSchemes=阴谋
|
||||||
lblToMainDeck=到主牌
|
lblToMainDeck=到主牌
|
||||||
@@ -982,7 +982,7 @@ lblCommanders=指挥官
|
|||||||
lblOathbreakers=破誓者
|
lblOathbreakers=破誓者
|
||||||
#Forge.java
|
#Forge.java
|
||||||
lblLoadingFonts=加载字体中
|
lblLoadingFonts=加载字体中
|
||||||
lblLoadingCardTranslations=加载卡牌翻译中
|
lblLoadingCardTranslations=加载牌张翻译中
|
||||||
lblFinishingStartup=完成启动
|
lblFinishingStartup=完成启动
|
||||||
#LobbyScreen.java
|
#LobbyScreen.java
|
||||||
lblMore=更多
|
lblMore=更多
|
||||||
@@ -1053,12 +1053,12 @@ lblOldLandCount=%d张地
|
|||||||
lblNewLandCount=添加%d张地
|
lblNewLandCount=添加%d张地
|
||||||
lblNewTotalCount=%d张牌
|
lblNewTotalCount=%d张牌
|
||||||
#FDeckImportDialog.java
|
#FDeckImportDialog.java
|
||||||
lblImportLatestVersionCard=导入卡牌的最新版本
|
lblImportLatestVersionCard=导入牌张的最新版本
|
||||||
lblUseOnlySetsReleasedBefore=只用之前上市系列的版本:
|
lblUseOnlySetsReleasedBefore=只用之前上市系列的版本:
|
||||||
lblUseOnlyCoreAndExpansionSets=只使用核心系列和拓展系列
|
lblUseOnlyCoreAndExpansionSets=只使用核心系列和拓展系列
|
||||||
lblFollowingCardsCannotBeImported=由于拼写错误,系列限制或forge尚未实现,以下卡牌没有被导入:
|
lblFollowingCardsCannotBeImported=由于拼写错误,系列限制或forge尚未实现,以下牌张没有被导入:
|
||||||
lblImportRemainingCards=导入剩余的卡?
|
lblImportRemainingCards=导入剩余的卡?
|
||||||
lblNoKnownCardsOnClipboard=在剪切板找不到已知的卡牌。\n\n将卡组列表复制到剪切板,然后重新打开此对话框。
|
lblNoKnownCardsOnClipboard=在剪切板找不到已知的牌张。\n\n将套牌列表复制到剪切板,然后重新打开此对话框。
|
||||||
#FDeckViewer.java
|
#FDeckViewer.java
|
||||||
lblDeckListCopiedClipboard=套牌列表'%s'已经复制到剪切板
|
lblDeckListCopiedClipboard=套牌列表'%s'已经复制到剪切板
|
||||||
#FSideboardDialog.java
|
#FSideboardDialog.java
|
||||||
@@ -1077,64 +1077,64 @@ lblPaste=粘贴
|
|||||||
#ListChooser.java
|
#ListChooser.java
|
||||||
lblSearch=搜索
|
lblSearch=搜索
|
||||||
#InputBase.java
|
#InputBase.java
|
||||||
lblPriority=Priority
|
lblPriority=优先
|
||||||
lblTurn=Turn
|
lblTurn=让过
|
||||||
lblPhase=Phase
|
lblPhase=阶段
|
||||||
lblEmpty=Empty
|
lblEmpty=空
|
||||||
lbltoResolve=to Resolve.
|
lbltoResolve=结算。
|
||||||
lblStormCount=Storm Count
|
lblStormCount=风暴计数
|
||||||
#PlayerControllerHuman.java
|
#PlayerControllerHuman.java
|
||||||
lblYouHaveWonTheCoinToss=%s, you have won the coin toss.
|
lblYouHaveWonTheCoinToss=%s,你赢得了这次掷硬币。
|
||||||
lblYouLostTheLastGame=%s, you lost the last game.
|
lblYouLostTheLastGame=%s,最后一场比赛你输了。
|
||||||
lblWouldYouLiketoPlayorDraw=Would you like to play or draw?
|
lblWouldYouLiketoPlayorDraw=你想先手还是后手?
|
||||||
lblWhoWouldYouLiketoStartthisGame=Who would you like to start this game? (Click on the portrait.)
|
lblWhoWouldYouLiketoStartthisGame=你想谁先开始游戏?(单击头像)
|
||||||
lblPlay=Play
|
lblPlay=先手
|
||||||
lblDraw=Draw
|
lblDraw=后手
|
||||||
lblTooFewCardsMainDeck=Too few cards in your main deck (minimum %s), please make modifications to your deck again.
|
lblTooFewCardsMainDeck=主牌中牌张数过少(最少为%s),请重新修改套牌。
|
||||||
lblTooManyCardsSideboard=Too many cards in your sideboard (maximum %s), please make modifications to your deck again.
|
lblTooManyCardsSideboard=备牌中牌张数过多(最多为%s),请重新修改套牌。
|
||||||
lblAssignCombatDamageWerentBlocked=Do you want to assign its combat damage as though it weren't blocked?
|
lblAssignCombatDamageWerentBlocked=是否要像没有被阻挡一样分配战斗伤害?
|
||||||
lblChosenCards=Chosen Cards
|
lblChosenCards=选择牌
|
||||||
lblAttacker=Attacker
|
lblAttacker=攻击者
|
||||||
lblTriggeredby=Triggered by
|
lblTriggeredby=触发者
|
||||||
lblChooseWhichCardstoReveal=Choose Which Cards to Reveal
|
lblChooseWhichCardstoReveal=选择要展示的牌
|
||||||
lblChooseCardsActivateOpeningHandandOrder=Choose cards to activate from opening hand and their order
|
lblChooseCardsActivateOpeningHandandOrder=选择要展示的手牌和顺序
|
||||||
lblActivateFirst=Activate first
|
lblActivateFirst=先触发
|
||||||
lblChooseOptionalCosts=Choose optional Costs
|
lblChooseOptionalCosts=选择可选费用
|
||||||
lblOptionalCosts=Optional Costs
|
lblOptionalCosts=可选费用
|
||||||
lblDoYouWanttoScry=Do you want to scry?
|
lblDoYouWanttoScry=你想占卜吗?
|
||||||
lblChooseCardstoSpliceonto=Choose cards to Splice onto
|
lblChooseCardstoSpliceonto=选择要通联的牌。
|
||||||
lblDoNextActioninSequence=Do Next Action in Sequence
|
lblDoNextActioninSequence=按顺序执行下一步操作
|
||||||
lblPleaseDefineanActionSequenceFirst=Please define an action sequence first.
|
lblPleaseDefineanActionSequenceFirst=请先定义一个动作序列。
|
||||||
lblRememberActionSequence=Remember Action Sequence
|
lblRememberActionSequence=记住动作序列
|
||||||
lblYouMustHavePrioritytoUseThisFeature=You must have priority to use this feature.
|
lblYouMustHavePrioritytoUseThisFeature=你必须有使用此功能的优先权。
|
||||||
lblNameTheCard=Name the card
|
lblNameTheCard=命名牌
|
||||||
lblWhichPlayerShouldRoll=Which player should roll?
|
lblWhichPlayerShouldRoll=那个玩家掷骰子?
|
||||||
lblChooseResult=Choose result
|
lblChooseResult=选择结果
|
||||||
lblChosenCardNotPermanentorCantExistIndependentlyontheBattleground=The chosen card is not a permanent or can't exist independently on the battlefield.\nIf you'd like to cast a non-permanent spell, or if you'd like to cast a permanent spell and place it on stack, please use the Cast Spell/Play Land button.
|
lblChosenCardNotPermanentorCantExistIndependentlyontheBattleground=选择的牌不是永久物,也不能在战场单独存在。\n如果你想释放费永久物咒语或者你想释放永久物咒语并将之放于堆叠上,请按"Cast Spell/Play Land"按钮。
|
||||||
lblError=Error
|
lblError=错误
|
||||||
lblWinGame=Win Game
|
lblWinGame=赢得这局游戏
|
||||||
lblSetLifetoWhat=Set life to what?
|
lblSetLifetoWhat=设定生命值为多少?
|
||||||
lblSetLifeforWhichPlayer=Set life for which player
|
lblSetLifeforWhichPlayer=设定哪个牌手的生命值?
|
||||||
lblChoosePermanentstoTap=Choose permanents to tap
|
lblChoosePermanentstoTap=选择要横置的永久物
|
||||||
lblChoosePermanentstoUntap=Choose permanents to untap
|
lblChoosePermanentstoUntap=选择要重置的永久物
|
||||||
lblWhichTypeofCounter=Which type of counter?
|
lblWhichTypeofCounter=那种指示物?
|
||||||
lblHowManyCounters=How many counters?
|
lblHowManyCounters=多少指示物?
|
||||||
lblRemoveCountersFromWhichCard=Remove counters from which card?
|
lblRemoveCountersFromWhichCard=从哪张牌移除指示物?
|
||||||
lblAddCountersToWhichCard=Add counters to which card?
|
lblAddCountersToWhichCard=添加指示物到哪张牌?
|
||||||
lblChooseaCard=Choose a card
|
lblChooseaCard=选择一张牌
|
||||||
lblNoPlayerPriorityDeckCantBeTutoredFrom=No player has priority at the moment, so their deck can't be tutored from.
|
lblNoPlayerPriorityDeckCantBeTutoredFrom=目前没有玩家拥有优先权,因此无法从其套牌导师。
|
||||||
lblNoPlayerPriorityGameStateCannotBeSetup=No player has priority at the moment, so game state cannot be setup.
|
lblNoPlayerPriorityGameStateCannotBeSetup=目前没有玩家拥有优先权,因此无法设置游戏状态。
|
||||||
lblErrorLoadingBattleSetupFile=Error loading battle setup file!
|
lblErrorLoadingBattleSetupFile=加载战场设置文件出错!
|
||||||
lblSelectCardstoAddtoYourDeck=Select cards to add to your deck
|
lblSelectCardstoAddtoYourDeck=选择要添加到套牌的牌张。
|
||||||
lblAddTheseToMyDeck=Add these to my deck
|
lblAddTheseToMyDeck=添加这些到我的套牌
|
||||||
lblChooseaPile=Choose a pile
|
lblChooseaPile=选择一堆
|
||||||
lblSelectOrderForSimultaneousAbilities=Select order for simultaneous abilities
|
lblSelectOrderForSimultaneousAbilities=选择同时触发的异能的结算顺序
|
||||||
lblReorderSimultaneousAbilities=Reorder simultaneous abilities
|
lblReorderSimultaneousAbilities=重新对同时触发异能的结算顺序进行排序
|
||||||
lblResolveFirst=Resolve first
|
lblResolveFirst=先结算
|
||||||
lblMoveCardstoToporBbottomofLibrary=Move cards to top or bottom of library
|
lblMoveCardstoToporBbottomofLibrary=将牌张移动到牌库顶或底
|
||||||
lblSelectCardsToBeOutOnTheBottomOfYourLibrary=Select cards to be put on the bottom of your library
|
lblSelectCardsToBeOutOnTheBottomOfYourLibrary=选择要放到牌库底的牌张
|
||||||
lblCardsToPutOnTheBottom=Cards to put on the bottom
|
lblCardsToPutOnTheBottom=放到底部的牌张
|
||||||
lblArrangeCardsToBePutOnTopOfYourLibrary=Arrange cards to be put on top of your library
|
lblArrangeCardsToBePutOnTopOfYourLibrary=为放于牌库顶的牌张排序
|
||||||
lblTopOfLibrary=Top of Library
|
lblTopOfLibrary=牌库顶
|
||||||
lblSelectCardsToBePutIntoTheGraveyard=Select cards to be put into the graveyard
|
lblSelectCardsToBePutIntoTheGraveyard=选择要放于坟场的牌张
|
||||||
lblCardsToPutInTheGraveyard=Cards to put in the graveyard
|
lblCardsToPutInTheGraveyard=放于坟场的牌张
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 161 KiB After Width: | Height: | Size: 190 KiB |
@@ -309,7 +309,17 @@ public enum FSkinProp {
|
|||||||
IMG_ABILITY_SHROUD (new int[] {330, 330, 80, 80}, PropType.ABILITY),
|
IMG_ABILITY_SHROUD (new int[] {330, 330, 80, 80}, PropType.ABILITY),
|
||||||
IMG_ABILITY_TRAMPLE (new int[] {412, 330, 80, 80}, PropType.ABILITY),
|
IMG_ABILITY_TRAMPLE (new int[] {412, 330, 80, 80}, PropType.ABILITY),
|
||||||
IMG_ABILITY_VIGILANCE (new int[] {2, 412, 80, 80}, PropType.ABILITY),
|
IMG_ABILITY_VIGILANCE (new int[] {2, 412, 80, 80}, PropType.ABILITY),
|
||||||
|
//Hexproof From
|
||||||
|
IMG_ABILITY_HEXPROOF_R (new int[] {2, 494, 80, 80}, PropType.ABILITY),
|
||||||
|
IMG_ABILITY_HEXPROOF_G (new int[] {412, 412, 80, 80}, PropType.ABILITY),
|
||||||
|
IMG_ABILITY_HEXPROOF_B (new int[] {248, 412, 80, 80}, PropType.ABILITY),
|
||||||
|
IMG_ABILITY_HEXPROOF_U (new int[] {84, 494, 80, 80}, PropType.ABILITY),
|
||||||
|
IMG_ABILITY_HEXPROOF_W (new int[] {248, 494, 80, 80}, PropType.ABILITY),
|
||||||
|
IMG_ABILITY_HEXPROOF_C (new int[] {330, 412, 80, 80}, PropType.ABILITY),
|
||||||
|
IMG_ABILITY_HEXPROOF_UB (new int[] {166, 494, 80, 80}, PropType.ABILITY),
|
||||||
|
//token icon
|
||||||
|
IMG_ABILITY_TOKEN (new int[] {330, 494, 80, 80}, PropType.ABILITY),
|
||||||
|
//Protection From
|
||||||
IMG_ABILITY_PROTECT_ALL (new int[] {248, 84, 80, 80}, PropType.ABILITY),
|
IMG_ABILITY_PROTECT_ALL (new int[] {248, 84, 80, 80}, PropType.ABILITY),
|
||||||
IMG_ABILITY_PROTECT_B (new int[] {330, 84, 80, 80}, PropType.ABILITY),
|
IMG_ABILITY_PROTECT_B (new int[] {330, 84, 80, 80}, PropType.ABILITY),
|
||||||
IMG_ABILITY_PROTECT_BU (new int[] {412, 84, 80, 80}, PropType.ABILITY),
|
IMG_ABILITY_PROTECT_BU (new int[] {412, 84, 80, 80}, PropType.ABILITY),
|
||||||
|
|||||||
@@ -357,6 +357,12 @@ public class FControlGameEventHandler extends IGameEventVisitor.Base<Void> {
|
|||||||
return processCards(cards, cardsRefreshDetails);
|
return processCards(cards, cardsRefreshDetails);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Void visit(final GameEventTokenStateUpdate event) {
|
||||||
|
processCards(event.cards, cardsRefreshDetails);
|
||||||
|
return processCards(event.cards, cardsUpdate);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Void visit(final GameEventShuffle event) {
|
public Void visit(final GameEventShuffle event) {
|
||||||
//pfps the change to the library has already been performed by a setCards call
|
//pfps the change to the library has already been performed by a setCards call
|
||||||
|
|||||||
@@ -78,6 +78,7 @@ public class ForgePreferences extends PreferencesStore<ForgePreferences.FPref> {
|
|||||||
UI_OVERLAY_CARD_POWER ("true"),
|
UI_OVERLAY_CARD_POWER ("true"),
|
||||||
UI_OVERLAY_CARD_MANA_COST ("true"),
|
UI_OVERLAY_CARD_MANA_COST ("true"),
|
||||||
UI_OVERLAY_CARD_ID ("true"),
|
UI_OVERLAY_CARD_ID ("true"),
|
||||||
|
UI_OVERLAY_ABILITY_ICONS("true"),
|
||||||
UI_ENABLE_ONLINE_IMAGE_FETCHER ("false"),
|
UI_ENABLE_ONLINE_IMAGE_FETCHER ("false"),
|
||||||
UI_IMAGE_CACHE_MAXIMUM("400"),
|
UI_IMAGE_CACHE_MAXIMUM("400"),
|
||||||
UI_OVERLAY_FOIL_EFFECT ("true"),
|
UI_OVERLAY_FOIL_EFFECT ("true"),
|
||||||
|
|||||||
Reference in New Issue
Block a user