mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 04:08:01 +00:00
Merge branch 'junk' into 'master'
Junk Winder - Affinity detail/reminder text updates for more complex affinities See merge request core-developers/forge!4787
This commit is contained in:
@@ -3232,8 +3232,17 @@ public class CardFactoryUtil {
|
|||||||
if (keyword.startsWith("Affinity")) {
|
if (keyword.startsWith("Affinity")) {
|
||||||
final String[] k = keyword.split(":");
|
final String[] k = keyword.split(":");
|
||||||
final String t = k[1];
|
final String t = k[1];
|
||||||
|
String d = "";
|
||||||
|
if (k.length > 2) {
|
||||||
|
final StringBuilder s = new StringBuilder();
|
||||||
|
s.append(k[2]).append("s");
|
||||||
|
d = s.toString();
|
||||||
|
}
|
||||||
|
|
||||||
String desc = "Artifact".equals(t) ? "artifacts" : CardType.getPluralType(t);
|
String desc = "Artifact".equals(t) ? "artifacts" : CardType.getPluralType(t);
|
||||||
|
if (!d.isEmpty()) {
|
||||||
|
desc = d;
|
||||||
|
}
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
sb.append("Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ AffinityX | EffectZone$ All");
|
sb.append("Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ AffinityX | EffectZone$ All");
|
||||||
sb.append("| Description$ Affinity for ").append(desc);
|
sb.append("| Description$ Affinity for ").append(desc);
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ public enum Keyword {
|
|||||||
UNDEFINED("", SimpleKeyword.class, false, ""),
|
UNDEFINED("", SimpleKeyword.class, false, ""),
|
||||||
ABSORB("Absorb", KeywordWithAmount.class, false, "If a source would deal damage to this creature, prevent %d of that damage."),
|
ABSORB("Absorb", KeywordWithAmount.class, false, "If a source would deal damage to this creature, prevent %d of that damage."),
|
||||||
ADAPT("Adapt", KeywordWithCostAndAmount.class, false, "If this creature has no +1/+1 counters on it, put {%2$d:+1/+1 counter} on it."),
|
ADAPT("Adapt", KeywordWithCostAndAmount.class, false, "If this creature has no +1/+1 counters on it, put {%2$d:+1/+1 counter} on it."),
|
||||||
AFFINITY("Affinity", KeywordWithType.class, false, "This spell costs you {1} less to cast for each %s you control."),
|
AFFINITY("Affinity", KeywordWithType.class, false, "This spell costs {1} less to cast for each %s you control."),
|
||||||
AFFLICT("Afflict", KeywordWithAmount.class, false, "Whenever this creature becomes blocked, defending player loses %d life."),
|
AFFLICT("Afflict", KeywordWithAmount.class, false, "Whenever this creature becomes blocked, defending player loses %d life."),
|
||||||
AFTERLIFE("Afterlife", KeywordWithAmount.class, false, "When this creature dies, create {%1$d:1/1 white and black Spirit creature token} with flying."),
|
AFTERLIFE("Afterlife", KeywordWithAmount.class, false, "When this creature dies, create {%1$d:1/1 white and black Spirit creature token} with flying."),
|
||||||
AFTERMATH("Aftermath", SimpleKeyword.class, false, "Cast this spell only from your graveyard. Then exile it."),
|
AFTERMATH("Aftermath", SimpleKeyword.class, false, "Cast this spell only from your graveyard. Then exile it."),
|
||||||
|
|||||||
@@ -11,6 +11,9 @@ public class KeywordWithType extends KeywordInstance<KeywordWithType> {
|
|||||||
type = details.toLowerCase();
|
type = details.toLowerCase();
|
||||||
} else if (details.contains(":")) {
|
} else if (details.contains(":")) {
|
||||||
type = details.split(":")[0];
|
type = details.split(":")[0];
|
||||||
|
if (this.toString().startsWith("Affinity")) {
|
||||||
|
type = details.split(":")[1];
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
type = details;
|
type = details;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,9 +2,9 @@ Name:Junk Winder
|
|||||||
ManaCost:5 U U
|
ManaCost:5 U U
|
||||||
Types:Creature Serpent
|
Types:Creature Serpent
|
||||||
PT:5/6
|
PT:5/6
|
||||||
K:Affinity:Permanent.token
|
K:Affinity:Permanent.token:token
|
||||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Permanent.token+YouCtrl | TriggerZones$ Battlefield | Execute$ TrigTap | TriggerDescription$ Whenever a token enters the battlefield under your control, tap target nonland permanent an opponent controls. It doesn't untap during its controller's next untap step.
|
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Permanent.token+YouCtrl | TriggerZones$ Battlefield | Execute$ TrigTap | TriggerDescription$ Whenever a token enters the battlefield under your control, tap target nonland permanent an opponent controls. It doesn't untap during its controller's next untap step.
|
||||||
SVar:TrigTap:DB$ Tap | ValidTgts$ Permanent.nonLand+OppCtrl | TgtPrompt$ Choose target nonland permanent an opponent controls | SubAbility$ DBPump
|
SVar:TrigTap:DB$ Tap | ValidTgts$ Permanent.nonLand+OppCtrl | TgtPrompt$ Choose target nonland permanent an opponent controls | SubAbility$ DBPump
|
||||||
SVar:DBPump:DB$ Pump | Defined$ Targeted | KW$ HIDDEN This card doesn't untap during your next untap step. | Permanent$ True
|
SVar:DBPump:DB$ Pump | Defined$ Targeted | KW$ HIDDEN This card doesn't untap during your next untap step. | Duration$ Permanent
|
||||||
DeckNeeds:Ability$Token
|
DeckNeeds:Ability$Token
|
||||||
Oracle:Affinity for tokens (This spell costs {1} less to cast for each token you control.)\nWhenever a token enters the battlefield under your control, tap target nonland permanent an opponent controls. It doesn't untap during its controller's next untap step.
|
Oracle:Affinity for tokens (This spell costs {1} less to cast for each token you control.)\nWhenever a token enters the battlefield under your control, tap target nonland permanent an opponent controls. It doesn't untap during its controller's next untap step.
|
||||||
|
|||||||
Reference in New Issue
Block a user