Merge remote-tracking branch 'core/master' into AdventureModePort

This commit is contained in:
Anthony Calosa
2022-02-07 20:34:12 +08:00
22 changed files with 203 additions and 38 deletions

View File

@@ -238,49 +238,43 @@ public class AnimateEffect extends AnimateEffectBase {
// if power is -1, we'll assume it's not just setting toughness
if (power != null && toughness != null) {
sb.append("become");
if (tgts.size() == 1) {
sb.append("s ");
}
sb.append(tgts.size() == 1 ? "becomes " : "become ");
sb.append(" ").append(power).append("/").append(toughness);
} else if (power != null) {
sb.append("power becomes ").append(power);
} else if (toughness != null) {
sb.append("toughness becomes ").append(toughness);
} else {
sb.append("become");
if (tgts.size() == 1) {
sb.append("s ");
}
sb.append(tgts.size() == 1 ? "becomes " : "become ");
}
if (colors.size() > 0) {
sb.append(" ");
}
if (colors.contains("ChosenColor")) {
sb.append("color of that player's choice");
} else {
for (int i = 0; i < colors.size(); i++) {
sb.append(colors.get(i));
sb.append(colors.get(i)).append(" ");
if (i < (colors.size() - 1)) {
sb.append("and ");
}
}
}
sb.append(" ");
if (types.contains("ChosenType")) {
sb.append("type of player's choice ");
} else {
for (int i = types.size() - 1; i >= 0; i--) {
sb.append(types.get(i));
sb.append(" ");
for (int i = 0; i < types.size(); i++) {
String type = types.get(i);
if (i == 0 && tgts.size() == 1) {
sb.append(Lang.startsWithVowel(type) ? "an " : "a ");
}
sb.append(CardType.CoreType.isValidEnum(type) ? type.toLowerCase() : type).append(" ");
}
}
if (keywords.size() > 0) {
sb.append("with ");
}
for (int i = 0; i < keywords.size(); i++) {
sb.append(keywords.get(i));
sb.append(keywords.get(i)).append(" ");
if (i < (keywords.size() - 1)) {
sb.append("and ");
}

View File

@@ -43,19 +43,13 @@ public class DamageDealEffect extends DamageBaseEffect {
}
List<GameObject> targets = SpellAbilityEffect.getTargets(spellAbility);
if (targets.isEmpty()) {
final List<Card> definedSources = AbilityUtils.getDefinedCards(spellAbility.getHostCard(), spellAbility.getParam("DamageSource"), spellAbility);
if (targets.isEmpty() || definedSources.isEmpty()) {
return "";
}
final List<Card> definedSources = AbilityUtils.getDefinedCards(spellAbility.getHostCard(), spellAbility.getParam("DamageSource"), spellAbility);
if (!definedSources.isEmpty() && definedSources.get(0) != spellAbility.getHostCard()) {
stringBuilder.append(definedSources.get(0).toString()).append(" deals");
} else {
stringBuilder.append("Deals");
}
stringBuilder.append(" ").append(dmg).append(" damage ");
stringBuilder.append(definedSources.get(0).toString()).append(" deals").append(" ").append(dmg).append(" damage ");
// if use targeting we show all targets and corresponding damage
if (spellAbility.usesTargeting()) {

View File

@@ -6,6 +6,6 @@ SVar:DBChoose:DB$ ChooseCard | Choices$ Creature.YouCtrl | Mandatory$ True | Sub
SVar:DBEffect:DB$ Effect | ReplacementEffects$ DamageEvent | ExileOnMoved$ True | RememberObjects$ ChosenCard | Duration$ UntilYourNextTurn
SVar:DamageEvent:Event$ DamageDone | ActiveZones$ Command | ValidTarget$ Creature.YouCtrl | ReplaceWith$ GideonSac | DamageTarget$ Remembered | Description$ All damage that would be dealt this turn to creatures you control is dealt to the chosen creature instead (if it's still on the battlefield).
SVar:GideonSac:DB$ ReplaceEffect | VarName$ Affected | VarValue$ Remembered | VarType$ Card
SVar:DBChangeZone:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | TgtPrompt$ Choose target creature card in your graveyard | ValidTgts$ Creature.YouOwn | WithCountersType$ Flying | AnimateSubAbility$ Animate | SpellDescription$ Return target creature card from your graveyard to the battlefield with a flying counter on it.
SVar:DBChangeZone:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | TgtPrompt$ Choose target creature card in your graveyard | ValidTgts$ Creature.YouOwn | WithCountersType$ Flying | AnimateSubAbility$ Animate | SpellDescription$ Return target creature card from your graveyard to the battlefield with a flying counter on it. That creature is an Angel Warrior in addition to its other types.
SVar:Animate:DB$ Animate | Defined$ Remembered | Types$ Angel,Warrior | Duration$ Permanent
Oracle:(As this Saga enters and after your draw step, add a lore counter. Sacrifice after III.)\nI, II — Choose a creature you control. Until your next turn, all damage that would be dealt to creatures you control is dealt to that creature instead.\nIII — Return target creature card from your graveyard to the battlefield with a flying counter on it. That creature is an Angel Warrior in addition to its other types.

View File

@@ -0,0 +1,12 @@
Name:Go-Shintai of Hidden Cruelty
ManaCost:3 B
Types:Legendary Enchantment Creature Shrine
PT:2/2
K:Deathtouch
T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigImmediateTrig | TriggerDescription$ At the beginning of your end step, you may pay {1}. When you do, destroy target creature with toughness X or less, where X is the number of Shrines you control.
SVar:TrigImmediateTrig:AB$ ImmediateTrigger | Cost$ 1 | Execute$ TrigDestroy | SpellDescription$ Destroy target creature with toughness X or less, where X is the number of Shrines you control.
SVar:TrigDestroy:DB$ Mill | ValidTgts$ Creature.toughnessLEX | TgtPrompt$ Select target creature with toughness X or less
SVar:X:Count$TypeYouCtrl.Shrine
DeckHas:Ability$Mill
DeckHints:Type$Shrine
Oracle:Deathtouch\nAt the beginning of your end step, you may pay {1}. When you do, destroy target creature with toughness X or less, where X is the number of Shrines you control.

View File

@@ -5,7 +5,7 @@ PT:0/4
K:Flying
T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigImmediateTrig | TriggerDescription$ At the beginning of your end step, you may pay {1}. When you do, target player mills X cards, where X is the number of Shrines you control. (To mill a card, a player puts the top card of their library into their graveyard.)
SVar:TrigImmediateTrig:AB$ ImmediateTrigger | Cost$ 1 | Execute$ TrigMill | SpellDescription$ Target player mills X cards, where X is the number of Shrines you control.
SVar:TrigMill:DB$ Mill | ValidTgts$ Player | NumCards$ X | TgtPrompt$ Select target player | SpellDescription$ Fart knocker!
SVar:TrigMill:DB$ Mill | ValidTgts$ Player | NumCards$ X | TgtPrompt$ Select target player
SVar:X:Count$TypeYouCtrl.Shrine
DeckHas:Ability$Mill
DeckHints:Type$Shrine

View File

@@ -0,0 +1,8 @@
Name:Intercessor's Arrest
ManaCost:2 W
Types:Enchantment Aura
K:Enchant permanent
A:SP$ Attach | ValidTgts$ Permanent | AILogic$ Curse
S:Mode$ Continuous | Affected$ Permanent.EnchantedBy | AddHiddenKeyword$ CARDNAME can't attack or block. & CARDNAME can't crew Vehicles. | Description$ Enchanted permanent can't attack, block, or crew Vehicles. Its activated abilities can't be activated unless they're mana abilities.
S:Mode$ CantBeActivated | ValidCard$ Card.EnchantedBy | ValidSA$ Activated.nonManaAbility
Oracle:Enchant permanent\nEnchanted permanent can't attack, block, or crew Vehicles. Its activated abilities can't be activated unless they're mana abilities.

View File

@@ -0,0 +1,10 @@
Name:Kitsune Ace
ManaCost:1 W
Types:Creature Fox Pilot
PT:2/2
T:Mode$ Attacks | ValidCard$ Vehicle.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigCharm | TriggerDescription$ Whenever a Vehicle you control attacks, ABILITY
SVar:TrigCharm:DB$ Charm | Choices$ DBPump,DBUntap
SVar:DBPump:DB$ Pump | Defined$ TriggeredAttacker | KW$ First strike | SpellDescription$ That Vehicle gains first strike until end of turn
SVar:DBUntap:DB$ Untap | Defined$ Self | SpellDescription$ Untap CARDNAME
DeckNeeds:Type$Vehicle
Oracle:Whenever a Vehicle you control attacks, choose one —\n• That Vehicle gains first strike until end of turn.\n• Untap Kitsune Ace.

View File

@@ -0,0 +1,7 @@
Name:Lucky Offering
ManaCost:W
Types:Sorcery
A:SP$ Destroy | ValidTgts$ Artifact.cmcLE3 | TgtPrompt$ Choose target artifact with mana value 3 or less | SubAbility$ DBGainLife | SpellDescription$ Destroy target artifact with mana value 3 or less. You gain 3 life.
SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 3
DeckHas:Ability$LifeGain
Oracle:Destroy target artifact with mana value 3 or less. You gain 3 life.

View File

@@ -0,0 +1,9 @@
Name:Mech Hangar
ManaCost:no cost
Types:Land
A:AB$ Mana | Cost$ T | Produced$ C | SpellDescription$ Add {C}.
A:AB$ Mana | Cost$ T | Produced$ Any | Amount$ 1 | RestrictValid$ Vehicle,Pilot | SpellDescription$ Add one mana of any color. Spend this mana only to cast a Pilot or Vehicle spell.
A:AB$ Animate | Cost$ 3 T | ValidTgts$ Vehicle | TgtPrompt$ Choose target Vehicle | Types$ Artifact,Creature | SpellDescription$ Target Vehicle becomes an artifact creature until end of turn. | StackDescription$ {c:Targeted} becomes an artifact creature until end of turn.
DeckHints:Type$Pilot
DeckNeeds:Type$Vehicle
Oracle:{T}: Add {C}.\n{T}: Add one mana of any color. Spend this mana only to cast a Pilot or Vehicle spell.\n{3}, {T}: Target Vehicle becomes an artifact creature until end of turn.

View File

@@ -0,0 +1,11 @@
Name:Mobilizer Mech
ManaCost:1 U
Types:Artifact Vehicle
PT:3/4
K:Flying
T:Mode$ Crewed | ValidVehicle$ Card.Self | Execute$ TrigAnimate | TriggerDescription$ Whenever CARDNAME becomes crewed, up to one other target Vehicle you control becomes an artifact creature until end of turn.
SVar:TrigAnimate:DB$ Animate | ValidTgts$ Vehicle.YouCtrl+Other | TgtPrompt$ Select up to one other target Vehicle you control | TargetMin$ 0 | TargetMax$ 1 | Types$ Creature,Artifact
K:Crew:3
Oracle:Flying
DeckHints:Type$Vehicle
Oracle:Whenever Mobilizer Mech becomes crewed, up to one other target Vehicle you control becomes an artifact creature until end of turn.\nCrew 3 (Tap any number of creatures you control with total power 3 or more: This Vehicle becomes an artifact creature until end of turn.)

View File

@@ -0,0 +1,7 @@
Name:Mothrider Patrol
ManaCost:W
Types:Creature Fox Warrior
PT:1/1
K:Flying
A:AB$ Tap | Cost$ 3 W T | ValidTgts$ Creature | TgtPrompt$ Choose target creature | SpellDescription$ Tap target creature.
Oracle:Flying\n{3}{W}, {T}: Tap target creature.

View File

@@ -0,0 +1,8 @@
Name:Nezumi Bladeblesser
ManaCost:2 B
Types:Creature Rat Samurai
PT:3/2
S:Mode$ Continuous | Affected$ Card.Self | AddKeyword$ Deathtouch | IsPresent$ Artifact.YouCtrl | Description$ CARDNAME has deathtouch as long as you control an artifact.
S:Mode$ Continuous | Affected$ Card.Self | AddKeyword$ Menace | IsPresent$ Enchantment.YouCtrl | Description$ CARDNAME has menace as long as you control an enchantment. (It can't be blocked except by two or more creatures.)
DeckHints:Type$Artifact|Enchantment
Oracle:Nezumi Bladeblesser has deathtouch as long as you control an artifact.\nNezumi Bladeblesser has menace as long as you control an enchantment. (It can't be blocked except by two or more creatures.)

View File

@@ -0,0 +1,24 @@
Name:Okiba Reckoner Raid
ManaCost:B
Types:Enchantment Saga
K:Saga:3:DBDrain,DBDrain,DBTransform
SVar:DBDrain:DB$ LoseLife | Defined$ Player.Opponent | LifeAmount$ 1 | SubAbility$ DBGainLife | SpellDescription$ Each opponent loses 1 life and you gain 1 life.
SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 1
SVar:DBTransform:DB$ ChangeZone | Origin$ Battlefield | Destination$ Exile | RememberChanged$ True | SubAbility$ DBReturn | SpellDescription$ Exile this Saga, then return it to the battlefield transformed under your control.
SVar:DBReturn:DB$ ChangeZone | Defined$ Remembered | Origin$ Exile | Destination$ Battlefield | Transformed$ True | GainControl$ True | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
AlternateMode:DoubleFaced
DeckHas:Ability$LifeGain
Oracle:(As this Saga enters and after your draw step, add a lore counter.)\nI, II — Each opponent loses 1 life and you gain 1 life.\nIII — Exile this Saga, then return it to the battlefield transformed under your control.
ALTERNATE
Name:Nezumi Road Captain
ManaCost:no cost
Colors:black
Types:Enchantment Creature Rat Rogue
PT:2/2
K:Menace
S:Mode$ Continuous | Affected$ Vehicle.YouCtrl | AddKeyword$ Menace | Description$ Vehicles you control have menace. (They can't be blocked except by two or more creatures.)
DeckHints:Type$Vehicle
Oracle:Menace\nVehicles you control have menace. (They can't be blocked except by two or more creatures.)

View File

@@ -0,0 +1,10 @@
Name:Oni-Cult Anvil
ManaCost:B R
Types:Artifact
T:Mode$ ChangesZoneAll | ValidCards$ Artifact.YouCtrl | Origin$ Battlefield | TriggerZones$ Battlefield | ActivationLimit$ 1 | Execute$ TrigToken | TriggerDescription$ Whenever one or more artifacts you control leave the battlefield during your turn, create a 1/1 colorless Construct artifact creature token. This ability triggers only once each turn.
SVar:TrigToken:DB$ Token | TokenScript$ c_1_1_a_construct
A:AB$ DealDamage | Cost$ T Sac<1/Artifact> | Defined$ Player.Opponent | NumDmg$ 1 | SubAbility$ DBGainLife | SpellDescription$ CARDNAME deals 1 damage to each opponent.
SVar:DBGainLife:DB$ GainLife | LifeAmount$ 1 | SpellDescription$ You gain 1 life.
DeckHints:Type$Artifact & Ability$Discard
DeckHas:Ability$Sacrifice|Token|LifeGain & Type$Construct
Oracle:Whenever one or more artifacts you control leave the battlefield during your turn, create a 1/1 colorless Construct artifact creature token. This ability triggers only once each turn.\n{T}, Sacrifice an artifact: Oni-Cult Anvil deals 1 damage to each opponent. You gain 1 life.

View File

@@ -0,0 +1,12 @@
Name:Regent's Authority
ManaCost:W
Types:Instant
A:SP$ Pump | ValidTgts$ Creature | TgtPrompt$ Choose target creature | SubAbility$ DBBranch | StackDescription$ SpellDescription | SpellDescription$ Target creature gets +2/+2 until end of turn. If it's an enchantment creature or legendary creature, instead put a +1/+1 counter on it and it gets +1/+1 until end of turn.
SVar:DBBranch:DB$ Branch | BranchConditionSVar$ X | BranchConditionSVarCompare$ EQ1 | TrueSubAbility$ DBPutCounter | FalseSubAbility$ DBPumpTwo
SVar:DBPutCounter:DB$ PutCounter | Defined$ Targeted | CounterType$ P1P1 | CounterNum$ 1 | SubAbility$ DBPumpOne
SVar:DBPumpOne:DB$ Pump | Defined$ Targeted | NumAtt$ 1 | NumDef$ 1
SVar:DBPumpTwo:DB$ Pump | Defined$ Targeted | NumAtt$ 2 | NumDef$ 2
SVar:X:Targeted$Valid Creature.Enchantment,Creature.Legendary
DeckHas:Ability$Counters
DeckHints:Type$Enchantment|Legendary
Oracle:Target creature gets +2/+2 until end of turn. If it's an enchantment creature or legendary creature, instead put a +1/+1 counter on it and it gets +1/+1 until end of turn.

View File

@@ -0,0 +1,7 @@
Name:Repel the Vile
ManaCost:3 W
Types:Instant
A:SP$ Charm | Choices$ DBExileCreature,DBExileEnchantment | Defined$ You
SVar:DBExileCreature:DB$ ChangeZone | ValidTgts$ Creature.powerGE4 | TgtPrompt$ Choose target creature with power 4 or greater | Origin$ Battlefield | Destination$ Exile | SpellDescription$ Exile target creature with power 4 or greater.
SVar:DBExileEnchantment:DB$ ChangeZone | ValidTgts$ Enchantment | TgtPrompt$ Choose target enchantment | Origin$ Battlefield | Destination$ Exile | SpellDescription$ Exile target enchantment.
Oracle:Choose one —\n• Exile target creature with power 4 or greater.\n• Exile target enchantment.

View File

@@ -0,0 +1,8 @@
Name:Roadside Reliquary
ManaCost:no cost
Types:Land
A:AB$ Mana | Cost$ T | Produced$ C | SpellDescription$ Add {C}.
A:AB$ Draw | Cost$ 2 T Sac<1/CARDNAME> | NumCards$ 1 | ConditionPresent$ Artifact.YouCtrl | SubAbility$ DBDraw | SpellDescription$ Draw a card if you control an artifact. Draw a card if you control an enchantment.
SVar:DBDraw:DB$ Draw | NumCards$ 1 | ConditionPresent$ Enchantment.YouCtrl
DeckHints:Type$Artifact|Enchantment
Oracle:{T}: Add {C}.\n{2}, {T}, Sacrifice Roadside Reliquary: Draw a card if you control an artifact. Draw a card if you control an enchantment.

View File

@@ -0,0 +1,9 @@
Name:Selfless Samurai
ManaCost:1 W
Types:Creature Fox Samurai
PT:2/2
T:Mode$ Attacks | ValidCard$ Samurai.YouCtrl,Warrior.YouCtrl | Alone$ True | TriggerZones$ Battlefield | Execute$ TrigPump | TriggerDescription$ Whenever a Samurai or Warrior you control attacks alone, it gains lifelink until end of turn.
SVar:TrigPump:DB$ Pump | Defined$ TriggeredAttacker | KW$ Lifelink
A:AB$ Pump | Cost$ Sac<1/CARDNAME> | ValidTgts$ Creature.Other+YouCtrl | TgtPrompt$ Select target creature you control | KW$ Indestructible | SpellDescription$ Another target creature you control gains indestructible until end of turn.
DeckHints:Type$Samurai|Warrior
Oracle:Whenever a Samurai or Warrior you control attacks alone, it gains lifelink until end of turn.\nSacrifice Selfless Samurai: Another target creature you control gains indestructible until end of turn. (Damage and effects that say "destroy" don't destroy it.)

View File

@@ -0,0 +1,8 @@
Name:Spinning Wheel Kick
ManaCost:X X G G
Types:Sorcery
A:SP$ Pump | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control | SubAbility$ DBDamage | StackDescription$ None | SpellDescription$ Target creature you control
SVar:DBDamage:DB$ DealDamage | ValidTgts$ Creature,Planeswalker | TgtPrompt$ Select X target creatures and/or planeswalkers | TargetMin$ X | TargetMax$ X | DamageSource$ ParentTarget | NumDmg$ Y | SpellDescription$ deals damage equal to its power to each of X target creatures and/or planeswalkers.
SVar:X:Count$xPaid
SVar:Y:ParentTargeted$CardPower
Oracle:Target creature you control deals damage equal to its power to each of X target creatures and/or planeswalkers.

View File

@@ -0,0 +1,12 @@
Name:Spirit-Sister's Call
ManaCost:3 W B
Types:Enchantment
T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigChoose | TriggerDescription$ At the beginning of your end step, choose target permanent card in your graveyard. You may sacrifice a permanent that shares a card type with the chosen card. If you do, return the chosen card from your graveyard to the battlefield and it gains "If this permanent would leave the battlefield, exile it instead of putting it anywhere else."
SVar:TrigChoose:DB$ ChooseCard | ValidTgts$ Permanent.YouOwn | TgtPrompt$ Choose target permanent card in your graveyard | TgtZone$ Graveyard | DefinedCards$ Targeted | SubAbility$ DBSacrifice
SVar:DBSacrifice:DB$ Sacrifice | Optional$ True | SacValid$ Permanent.sharesCardTypeWith Targeted | SacMessage$ permanent that shares a card type with the chosen card | Amount$ 1 | RememberSacrificed$ True | SubAbility$ DBChangeZone
SVar:DBChangeZone:DB$ ChangeZone | ConditionDefined$ Remembered | ConditionPresent$ Card | Defined$ Targeted | Origin$ Graveyard | Destination$ Battlefield | SubAbility$ DBAnimate
SVar:DBAnimate:DB$ Animate | Replacements$ ReplaceLeaves | Defined$ Targeted | Duration$ Permanent
SVar:ReplaceLeaves:Event$ Moved | ActiveZones$ Battlefield | Origin$ Battlefield | ValidCard$ Card.Self | ReplaceWith$ Exile | Description$ If this permanent would leave the battlefield, exile it instead of putting it anywhere else.
SVar:Exile:DB$ ChangeZone | Origin$ Battlefield | Destination$ Exile | Defined$ ReplacedCard
DeckHas:Ability$Graveyard|Sacrifice
Oracle:At the beginning of your end step, choose target permanent card in your graveyard. You may sacrifice a permanent that shares a card type with the chosen card. If you do, return the chosen card from your graveyard to the battlefield and it gains "If this permanent would leave the battlefield, exile it instead of putting it anywhere else."

View File

@@ -0,0 +1,8 @@
Name:Uncharted Haven
ManaCost:no cost
Types:Land
K:CARDNAME enters the battlefield tapped.
K:ETBReplacement:Other:ChooseColor
SVar:ChooseColor:DB$ ChooseColor | Defined$ You | AILogic$ MostProminentInComputerDeck | SpellDescription$ As CARDNAME enters the battlefield, choose a color.
A:AB$ Mana | Cost$ T | Produced$ Chosen | SpellDescription$ Add one mana of the chosen color.
Oracle:Uncharted Haven enters the battlefield tapped.\nAs Uncharted Haven enters the battlefield, choose a color.\n{T}: Add one mana of the chosen color.

View File

@@ -0,0 +1,7 @@
Name:Weaver of Harmony
ManaCost:1 G
Types:Enchantment Creature Snake Druid
PT:2/2
S:Mode$ Continuous | Affected$ Creature.Other+Enchantment+YouCtrl | AddPower$ 1 | AddToughness$ 1 | Description$ Other enchantment creatures you control get +1/+1.
A:AB$ CopySpellAbility | Cost$ G T | TgtPrompt$ Select target activated or triggered ability you control from an enchantment source | TargetType$ Activated.YouCtrl,Triggered.YouCtrl | ValidTgts$ Enchantment | AILogic$ AlwaysCopyActivatedAbilities | MayChooseTarget$ True | SpellDescription$ Copy target activated or triggered ability you control from an enchantment source. You may choose new targets for the copy. (Mana abilities can't be targeted.)
Oracle:Other enchantment creatures you control get +1/+1.\n{G}, {T}: Copy target activated or triggered ability you control from an enchantment source. You may choose new targets for the copy. (Mana abilities can't be targeted.)