mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 04:08:01 +00:00
Merge branch 'comm_plate' into 'master'
StaticAbility mass keyword building updates for CMR (incl Commander's Plate and Rebbec) See merge request core-developers/forge!3409
This commit is contained in:
@@ -1109,12 +1109,7 @@ public class CardFactoryUtil {
|
||||
}
|
||||
|
||||
if (sq[0].equals("ColorsColorIdentity")) {
|
||||
byte ci = 0;
|
||||
List<Card> commanders = c.getController().getCommanders();
|
||||
for (final Card comm : commanders) {
|
||||
ci |= comm.getRules().getColorIdentity().getColor();
|
||||
}
|
||||
return doXMath(ColorSet.fromMask(ci).countColors(), m, c);
|
||||
return doXMath(c.getController().getCommanderColorID().countColors(), m, c);
|
||||
}
|
||||
|
||||
if (sq[0].contains("CreatureType")) {
|
||||
|
||||
@@ -24,6 +24,7 @@ import forge.ImageKeys;
|
||||
import forge.LobbyPlayer;
|
||||
import forge.card.CardStateName;
|
||||
import forge.card.CardType;
|
||||
import forge.card.ColorSet;
|
||||
import forge.card.MagicColor;
|
||||
import forge.card.mana.ManaCost;
|
||||
import forge.card.mana.ManaCostShard;
|
||||
@@ -2760,6 +2761,26 @@ public class Player extends GameEntity implements Comparable<Player> {
|
||||
return damage == null ? 0 : damage.intValue();
|
||||
}
|
||||
|
||||
public ColorSet getCommanderColorID() {
|
||||
if (commanders.isEmpty()) {
|
||||
return null;
|
||||
}
|
||||
byte ci = 0;
|
||||
for (final Card c : commanders) {
|
||||
ci |= c.getRules().getColorIdentity().getColor();
|
||||
}
|
||||
ColorSet identity = ColorSet.fromMask(ci);
|
||||
return identity;
|
||||
}
|
||||
|
||||
public ColorSet getNotCommanderColorID() {
|
||||
if (commanders.isEmpty()) {
|
||||
return null;
|
||||
}
|
||||
ColorSet identity = getCommanderColorID();
|
||||
return identity.inverse();
|
||||
}
|
||||
|
||||
public int getCommanderCast(Card commander) {
|
||||
Integer cast = commanderCast.get(commander);
|
||||
return cast == null ? 0 : cast.intValue();
|
||||
|
||||
@@ -615,14 +615,8 @@ public class AbilityManaPart implements java.io.Serializable {
|
||||
if (commanders.isEmpty()) {
|
||||
return "";
|
||||
}
|
||||
|
||||
byte ci = 0;
|
||||
for (final Card c : commanders) {
|
||||
ci |= c.getRules().getColorIdentity().getColor();
|
||||
}
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
ColorSet identity = ColorSet.fromMask(ci);
|
||||
ColorSet identity = getSourceCard().getController().getCommanderColorID();
|
||||
if (identity.hasWhite()) { sb.append("W "); }
|
||||
if (identity.hasBlue()) { sb.append("U "); }
|
||||
if (identity.hasBlack()) { sb.append("B "); }
|
||||
|
||||
@@ -232,7 +232,20 @@ public final class StaticAbilityContinuous {
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
if (input.contains("CommanderColorID")) {
|
||||
if (!hostCard.getController().getCommanders().isEmpty()) {
|
||||
if (input.contains("NotCommanderColorID")) {
|
||||
for (Byte color : hostCard.getController().getNotCommanderColorID()) {
|
||||
newKeywords.add(input.replace("NotCommanderColorID", MagicColor.toLongString(color)));
|
||||
}
|
||||
return true;
|
||||
} else for (Byte color : hostCard.getController().getCommanderColorID()) {
|
||||
newKeywords.add(input.replace("CommanderColorID", MagicColor.toLongString(color)));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
// two variants for Red vs. red in keyword
|
||||
if (input.contains("ColorsYouCtrl") || input.contains("colorsYouCtrl")) {
|
||||
for (byte color : colorsYouCtrl) {
|
||||
@@ -243,6 +256,21 @@ public final class StaticAbilityContinuous {
|
||||
}
|
||||
return true;
|
||||
}
|
||||
if (input.contains("EachCMCAmongDefined")) {
|
||||
String keywordDefined = params.get("KeywordDefined");
|
||||
CardCollectionView definedCards = game.getCardsIn(ZoneType.Battlefield);
|
||||
definedCards = CardLists.getValidCards(definedCards, keywordDefined, hostCard.getController(),
|
||||
hostCard, null);
|
||||
for (Card c : definedCards) {
|
||||
final int cmc = c.getCMC();
|
||||
String y = (input.replace(" from EachCMCAmongDefined", ":Card.cmcEQ"
|
||||
+ (cmc) + ":Protection from converted mana cost " + (cmc)));
|
||||
if (!newKeywords.contains(y)) {
|
||||
newKeywords.add(y);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
@@ -638,6 +666,7 @@ public final class StaticAbilityContinuous {
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
7
forge-gui/res/cardsfolder/upcoming/commanders_plate.txt
Normal file
7
forge-gui/res/cardsfolder/upcoming/commanders_plate.txt
Normal file
@@ -0,0 +1,7 @@
|
||||
Name:Commander's Plate
|
||||
ManaCost:1
|
||||
Types:Artifact Equipment
|
||||
S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddPower$ 3 | AddToughness$ 3 | AddKeyword$ Protection from NotCommanderColorID | Description$ Equipped creature gets +3/+3 and has protection from each color that's not in your commander's color identity.
|
||||
K:Equip:3:Creature.IsCommander+YouCtrl:commander
|
||||
K:Equip:5
|
||||
Oracle:Equipped creature gets +3/+3 and has protection from each color that's not in your commander's color identity.\nEquip commander {3}\nEquip {5}
|
||||
@@ -0,0 +1,8 @@
|
||||
Name:Rebbec, Architect of Ascension
|
||||
ManaCost:3 W
|
||||
Types:Legendary Creature Human Artificer
|
||||
PT:3/4
|
||||
S:Mode$ Continuous | Affected$ Artifact.YouCtrl | AddKeyword$ Protection from EachCMCAmongDefined | KeywordDefined$ Artifact.YouCtrl | Description$ Artifacts you control have protection from each converted mana cost among artifacts you control.
|
||||
DeckNeeds:Type$Artifact
|
||||
K:Partner
|
||||
Oracle:Artifacts you control have protection from each converted mana cost among artifacts you control.\nPartner (You can have two commanders if both have partner.)
|
||||
Reference in New Issue
Block a user