diff --git a/forge-game/src/main/java/forge/game/card/CardView.java b/forge-game/src/main/java/forge/game/card/CardView.java index 139a5ff7aa4..1957ef88909 100644 --- a/forge-game/src/main/java/forge/game/card/CardView.java +++ b/forge-game/src/main/java/forge/game/card/CardView.java @@ -1378,6 +1378,7 @@ public class CardView extends GameEntityView { public String getProtectionKey() { return get(TrackableProperty.ProtectionKey); } public String getHexproofKey() { return get(TrackableProperty.HexproofKey); } public boolean hasDeathtouch() { return get(TrackableProperty.HasDeathtouch); } + public boolean hasToxic() { return get(TrackableProperty.HasToxic); } public boolean hasDevoid() { return get(TrackableProperty.HasDevoid); } public boolean hasDefender() { return get(TrackableProperty.HasDefender); } public boolean hasDivideDamage() { return get(TrackableProperty.HasDivideDamage); } @@ -1451,6 +1452,7 @@ public class CardView extends GameEntityView { void updateKeywords(Card c, CardState state) { c.updateKeywordsCache(state); set(TrackableProperty.HasDeathtouch, c.hasKeyword(Keyword.DEATHTOUCH, state)); + set(TrackableProperty.HasToxic, c.hasKeyword(Keyword.TOXIC, state)); set(TrackableProperty.HasDevoid, c.hasKeyword(Keyword.DEVOID, state)); set(TrackableProperty.HasDefender, c.hasKeyword(Keyword.DEFENDER, state)); set(TrackableProperty.HasDivideDamage, c.hasKeyword("You may assign CARDNAME's combat damage divided as " + diff --git a/forge-game/src/main/java/forge/trackable/TrackableProperty.java b/forge-game/src/main/java/forge/trackable/TrackableProperty.java index cc32600350f..96d9b42fa00 100644 --- a/forge-game/src/main/java/forge/trackable/TrackableProperty.java +++ b/forge-game/src/main/java/forge/trackable/TrackableProperty.java @@ -138,6 +138,7 @@ public enum TrackableProperty { KeywordKey(TrackableTypes.StringType), HasDeathtouch(TrackableTypes.BooleanType), + HasToxic(TrackableTypes.BooleanType), HasDevoid(TrackableTypes.BooleanType), HasDefender(TrackableTypes.BooleanType), HasDivideDamage(TrackableTypes.BooleanType), diff --git a/forge-gui-desktop/src/main/java/forge/toolbox/CardFaceSymbols.java b/forge-gui-desktop/src/main/java/forge/toolbox/CardFaceSymbols.java index 4edf3ffc80a..50247ffceb3 100644 --- a/forge-gui-desktop/src/main/java/forge/toolbox/CardFaceSymbols.java +++ b/forge-gui-desktop/src/main/java/forge/toolbox/CardFaceSymbols.java @@ -152,6 +152,7 @@ public class CardFaceSymbols { //ability icons MANA_IMAGES.put("commander", FSkin.getImage(FSkinProp.IMG_ABILITY_COMMANDER)); + MANA_IMAGES.put("toxic", FSkin.getImage(FSkinProp.IMG_ABILITY_TOXIC)); MANA_IMAGES.put("deathtouch", FSkin.getImage(FSkinProp.IMG_ABILITY_DEATHTOUCH)); MANA_IMAGES.put("defender", FSkin.getImage(FSkinProp.IMG_ABILITY_DEFENDER)); MANA_IMAGES.put("doublestrike", FSkin.getImage(FSkinProp.IMG_ABILITY_DOUBLE_STRIKE)); diff --git a/forge-gui-desktop/src/main/java/forge/view/arcane/CardPanel.java b/forge-gui-desktop/src/main/java/forge/view/arcane/CardPanel.java index e7c0f5a7372..f20b4da3b7e 100644 --- a/forge-gui-desktop/src/main/java/forge/view/arcane/CardPanel.java +++ b/forge-gui-desktop/src/main/java/forge/view/arcane/CardPanel.java @@ -574,6 +574,10 @@ public class CardPanel extends SkinnedPanel implements CardContainer, IDisposabl CardFaceSymbols.drawAbilitySymbol("deathtouch", g, abiX, abiY, abiScale, abiScale); abiY += abiSpace; } + if (card.getCurrentState().hasToxic()) { + CardFaceSymbols.drawAbilitySymbol("toxic", g, abiX, abiY, abiScale, abiScale); + abiY += abiSpace; + } if (card.getCurrentState().hasIndestructible()) { CardFaceSymbols.drawAbilitySymbol("indestructible", g, abiX, abiY, abiScale, abiScale); abiY += abiSpace; diff --git a/forge-gui-mobile/src/forge/assets/FSkinImage.java b/forge-gui-mobile/src/forge/assets/FSkinImage.java index b51c736928f..2b1d83a4dc5 100644 --- a/forge-gui-mobile/src/forge/assets/FSkinImage.java +++ b/forge-gui-mobile/src/forge/assets/FSkinImage.java @@ -416,7 +416,10 @@ public enum FSkinImage implements FImage { FOIL_20 (FSkinProp.FOIL_20, SourceFile.OLD_FOILS), //COMMANDER - IMG_ABILITY_COMMANDER (FSkinProp.IMG_ABILITY_COMMANDER, SourceFile.ABILITIES), + IMG_ABILITY_COMMANDER (FSkinProp.IMG_ABILITY_COMMANDER, SourceFile.ABILITIES), + + //TOXIC + IMG_ABILITY_TOXIC (FSkinProp.IMG_ABILITY_TOXIC, SourceFile.ICONS), //ABILITY ICONS IMG_ABILITY_DEATHTOUCH (FSkinProp.IMG_ABILITY_DEATHTOUCH, SourceFile.ABILITIES), IMG_ABILITY_DEFENDER (FSkinProp.IMG_ABILITY_DEFENDER, SourceFile.ABILITIES), diff --git a/forge-gui-mobile/src/forge/card/CardFaceSymbols.java b/forge-gui-mobile/src/forge/card/CardFaceSymbols.java index 1151c76e5b3..8c31f792614 100644 --- a/forge-gui-mobile/src/forge/card/CardFaceSymbols.java +++ b/forge-gui-mobile/src/forge/card/CardFaceSymbols.java @@ -129,7 +129,7 @@ public class CardFaceSymbols { Forge.getAssets().manaImages().put("foil20", FSkinImage.FOIL_20); Forge.getAssets().manaImages().put("commander", FSkinImage.IMG_ABILITY_COMMANDER); - + Forge.getAssets().manaImages().put("toxic", FSkinImage.IMG_ABILITY_TOXIC); Forge.getAssets().manaImages().put("deathtouch", FSkinImage.IMG_ABILITY_DEATHTOUCH); Forge.getAssets().manaImages().put("defender", FSkinImage.IMG_ABILITY_DEFENDER); Forge.getAssets().manaImages().put("doublestrike", FSkinImage.IMG_ABILITY_DOUBLE_STRIKE); diff --git a/forge-gui-mobile/src/forge/card/CardRenderer.java b/forge-gui-mobile/src/forge/card/CardRenderer.java index 3be0823cad2..6e1473c33ed 100644 --- a/forge-gui-mobile/src/forge/card/CardRenderer.java +++ b/forge-gui-mobile/src/forge/card/CardRenderer.java @@ -880,6 +880,15 @@ public class CardRenderer { abiY += abiSpace; abiCount += 1; } + if (card.getCurrentState().hasToxic()) { + if (abiCount > 5) { + abiY = cy + (abiSpace * (abiCount - 6)); + abiX = cx + ((cw * 2) / 1.92f); + } + CardFaceSymbols.drawSymbol("toxic", g, abiX, abiY, abiScale, abiScale); + abiY += abiSpace; + abiCount += 1; + } if (card.getCurrentState().hasIndestructible()) { if (abiCount > 5) { abiY = cy + (abiSpace * (abiCount - 6)); diff --git a/forge-gui/res/skins/default/sprite_icons.png b/forge-gui/res/skins/default/sprite_icons.png index 7572122d905..7ac2835df59 100644 Binary files a/forge-gui/res/skins/default/sprite_icons.png and b/forge-gui/res/skins/default/sprite_icons.png differ diff --git a/forge-gui/src/main/java/forge/localinstance/skin/FSkinProp.java b/forge-gui/src/main/java/forge/localinstance/skin/FSkinProp.java index 5585fa2f71d..4fdec22c6c7 100644 --- a/forge-gui/src/main/java/forge/localinstance/skin/FSkinProp.java +++ b/forge-gui/src/main/java/forge/localinstance/skin/FSkinProp.java @@ -484,7 +484,9 @@ public enum FSkinProp { IMG_QUEST_DRAFT_DECK (new int[] {0, 0, 680, 475}, PropType.IMAGE), //COMMANDER - IMG_ABILITY_COMMANDER (new int[] {330, 576, 80, 80}, PropType.ABILITY), + IMG_ABILITY_COMMANDER (new int[] {330, 576, 80, 80}, PropType.ABILITY), + //TOXIC + IMG_ABILITY_TOXIC (new int[] {630, 1536, 46, 46}, PropType.ICON), //Ability Icons IMG_ABILITY_DEATHTOUCH (new int[] {2, 2, 80, 80}, PropType.ABILITY), IMG_ABILITY_DEFENDER (new int[] {84, 2, 80, 80}, PropType.ABILITY),