mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-17 03:08:02 +00:00
EffectEffect: now does treat emblems different than Effects, also does try to guess the ImageKey from Name for Emblems
shows the PlaneswalkerType for the Emblem but thats only cosmetic.
This commit is contained in:
@@ -81,7 +81,7 @@ public class AbilityUtils {
|
||||
c = sa.getRootAbility().getOriginalHost();
|
||||
}
|
||||
else if (defined.equals("EffectSource")) {
|
||||
if (hostCard.getType().hasSubtype("Effect")) {
|
||||
if (hostCard.isEmblem() || hostCard.getType().hasSubtype("Effect")) {
|
||||
c = AbilityUtils.findEffectRoot(hostCard);
|
||||
}
|
||||
}
|
||||
@@ -296,7 +296,7 @@ public class AbilityUtils {
|
||||
private static Card findEffectRoot(Card startCard) {
|
||||
Card cc = startCard.getEffectSource();
|
||||
if (cc != null) {
|
||||
if (cc.getType().hasSubtype("Effect")) {
|
||||
if (cc.isEmblem() || cc.getType().hasSubtype("Effect")) {
|
||||
return findEffectRoot(cc);
|
||||
}
|
||||
return cc;
|
||||
|
||||
@@ -2,6 +2,7 @@ package forge.game.ability.effects;
|
||||
|
||||
import forge.GameCommand;
|
||||
import forge.ImageKeys;
|
||||
import forge.card.CardType;
|
||||
import forge.game.Game;
|
||||
import forge.game.ability.AbilityFactory;
|
||||
import forge.game.ability.AbilityUtils;
|
||||
@@ -109,10 +110,29 @@ public class EffectEffect extends SpellAbilityEffect {
|
||||
final Player controller = sa.hasParam("EffectOwner") ? ownerEff : sa.getActivatingPlayer();
|
||||
final Card eff = new Card(game.nextCardId(), game);
|
||||
eff.setName(name);
|
||||
eff.addType("Effect"); // Or Emblem
|
||||
// if name includes emplem then it should be one
|
||||
eff.addType(name.endsWith("emblem") ? "Emblem" : "Effect");
|
||||
// add Planeswalker types into Emblem for fun
|
||||
if (name.endsWith("emblem") && hostCard.isPlaneswalker()) {
|
||||
for (final String type : hostCard.getType().getSubtypes()) {
|
||||
if (CardType.isAPlaneswalkerType(type)) {
|
||||
eff.addType(type);
|
||||
}
|
||||
}
|
||||
}
|
||||
eff.setToken(true); // Set token to true, so when leaving play it gets nuked
|
||||
eff.setOwner(controller);
|
||||
eff.setImageKey(sa.hasParam("Image") ? ImageKeys.getTokenKey(sa.getParam("Image")) : hostCard.getImageKey());
|
||||
|
||||
String image;
|
||||
if (sa.hasParam("Image")) {
|
||||
image = ImageKeys.getTokenKey(sa.getParam("Image"));
|
||||
} else if (name.endsWith("emblem")) { // try to get the image from name
|
||||
image = ImageKeys.getTokenKey(name.replace(",", "").replace(" ", "_").toLowerCase());
|
||||
} else { // use host image
|
||||
image = hostCard.getImageKey();
|
||||
}
|
||||
|
||||
eff.setImageKey(image);
|
||||
eff.setColor(hostCard.determineColor().getColor());
|
||||
eff.setImmutable(true);
|
||||
eff.setEffectSource(hostCard);
|
||||
|
||||
@@ -253,7 +253,7 @@ public class CardPanel extends SkinnedPanel implements CardContainer, IDisposabl
|
||||
final CardStateView state = getCard().getCurrentState();
|
||||
final CardEdition ed = FModel.getMagicDb().getEditions().get(state.getSetCode());
|
||||
boolean colorIsSet = false;
|
||||
if (state.getType().hasStringType("Effect")) {
|
||||
if (state.getType().isEmblem() || state.getType().hasStringType("Effect")) {
|
||||
// Effects are drawn with orange border
|
||||
g2d.setColor(Color.ORANGE);
|
||||
colorIsSet = true;
|
||||
|
||||
@@ -205,7 +205,7 @@ public class CardDetailUtil {
|
||||
String curColors = "";
|
||||
|
||||
// do not show current colors for temp effect cards, emblems and the like
|
||||
if (state.getType().hasSubtype("Effect")) {
|
||||
if (state.getType().isEmblem() || state.getType().hasSubtype("Effect")) {
|
||||
return "";
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user