Merge remote-tracking branch 'upstream/master' into MAGETOWER-UPDATE

This commit is contained in:
Simisays
2023-03-29 14:47:48 +02:00
29 changed files with 129 additions and 123 deletions

View File

@@ -48,7 +48,7 @@
<property name="waypoints" value="68,69,70"/>
</properties>
</object>
<object id="54" template="../obj/enemy.tx" x="303.907" y="143.112">
<object id="54" template="../obj/enemy.tx" x="273" y="145.112">
<properties>
<property name="enemy" value="Gitaxian Underling"/>
<property name="threatRange" value="20"/>
@@ -109,13 +109,13 @@
</object>
</objectgroup>
<objectgroup id="7" name="Waypoints">
<object id="64" template="../obj/waypoint.tx" x="272.667" y="143.333"/>
<object id="65" template="../obj/waypoint.tx" x="367.667" y="143.667"/>
<object id="66" template="../obj/waypoint.tx" x="367.333" y="160.667"/>
<object id="67" template="../obj/waypoint.tx" x="272.667" y="159"/>
<object id="68" template="../obj/waypoint.tx" x="162" y="62"/>
<object id="69" template="../obj/waypoint.tx" x="192" y="62"/>
<object id="70" template="../obj/waypoint.tx" x="192" y="33"/>
<object id="64" template="../obj/waypoint.tx" x="273" y="145"/>
<object id="65" template="../obj/waypoint.tx" x="367.667" y="145"/>
<object id="66" template="../obj/waypoint.tx" x="367.333" y="157"/>
<object id="67" template="../obj/waypoint.tx" x="272.667" y="157"/>
<object id="68" template="../obj/waypoint.tx" x="163" y="61"/>
<object id="69" template="../obj/waypoint.tx" x="192" y="61"/>
<object id="70" template="../obj/waypoint.tx" x="192" y="34"/>
<object id="73" template="../obj/gate.tx" x="208.25" y="96.5">
<properties>
<property name="dialog">[{

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@@ -4,5 +4,5 @@ Types:Artifact Equipment
K:Equip:2
S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddPower$ 2 | AddToughness$ 1 | Description$ Equipped creature gets +2/+1.
S:Mode$ Continuous | Affected$ Card.EquippedBy+Legendary | AddKeyword$ Trample & Haste | Description$ As long as equipped creature is legendary, it has trample and haste.
DeckNeeds:Type$Creature.Legendary
DeckNeeds:Type$Legendary & Type$Creature
Oracle:Equipped creature gets +2/+1.\nAs long as equipped creature is legendary, it has trample and haste.\nEquip {2}

View File

@@ -1,7 +1,7 @@
Name:Phyrexian Purge
ManaCost:2 B R
Types:Sorcery
A:SP$ Destroy | Cost$ 2 B R PayLife<X> | ValidTgts$ Creature | TargetMin$ 0 | TargetMax$ MaxPayLifeLimit | SpellDescription$ This spell costs 3 life more to cast for each target. Destroy any number of target creatures.
A:SP$ Destroy | Cost$ 2 B R PayLife<X> | ValidTgts$ Creature | TargetMin$ 0 | TargetMax$ MaxPayLifeLimit | CostDesc$ This spell costs 3 life more to cast for each target. | SpellDescription$ Destroy any number of target creatures.
SVar:MaxPayLifeLimit:Count$YourLifeTotal/DivideEvenlyDown.3
SVar:X:SVar$Y/Times.3
SVar:Y:Targeted$Amount

View File

@@ -5,5 +5,5 @@ A:AB$ Mana | Cost$ T PayLife<1> | Produced$ Combo B R | SpellDescription$ Add {B
A:AB$ DealDamage | Cost$ 1 B R T | Defined$ Opponent | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to each opponent.
A:AB$ ChooseCard | Cost$ 5 B R T Sac<1/CARDNAME> Sac<1/Artifact.Legendary/legendary artifact> | Defined$ You | Amount$ 2 | Choices$ Creature | ChoiceTitle$ Choose up to two creatures | SorcerySpeed$ True | AILogic$ Duneblast | SubAbility$ DBDestroyAll | StackDescription$ {p:You} chooses up to two creatures. Destroy the rest. | SpellDescription$ Choose up to two creatures, then destroy the rest. Activate only as a sorcery.
SVar:DBDestroyAll:DB$ DestroyAll | ValidCards$ Creature.nonChosenCard | StackDescription$ None
DeckNeeds:Type$Legendary.Artifact
DeckNeeds:Type$Legendary & Type$Artifact
Oracle:{T}, Pay 1 life: Add {B} or {R}.\n{1}{B}{R}, {T}: Mount Doom deals 1 damage to each opponent.\n{5}{B}{R}, {T}, Sacrifice Mount Doom and a legendary artifact: Choose up to two creatures, then destroy the rest. Activate only as a sorcery.

View File

@@ -2,5 +2,5 @@ Name:You Cannot Pass!
ManaCost:W
Types:Instant
A:SP$ Destroy | ValidTgts$ Creature.blockedValidThisTurn Creature.Legendary,Creature.blockedByValidThisTurn Creature.Legendary | TgtPrompt$ Select target creature that blocked or was blocked by a legendary creature this turn | SpellDescription$ Destroy target creature that blocked or was blocked by a legendary creature this turn.
DeckNeeds:Type$Legendary.Creature
DeckNeeds:Type$Legendary & Type$Creature
Oracle:Destroy target creature that blocked or was blocked by a legendary creature this turn.

View File

@@ -4,7 +4,7 @@ Types:Legendary Creature Human Warlock
PT:1/1
S:Mode$ Continuous | Affected$ You | AddKeyword$ If you would roll one or more dice, instead roll that many dice plus one and ignore the lowest roll. | Description$ If you would roll one or more dice, instead roll that many dice plus one and ignore the lowest roll.
T:Mode$ RolledDieOnce | TriggerZones$ Battlefield | ValidPlayer$ You | Execute$ TrigPut | TriggerDescription$ Whenever you roll one or more dice, put a +1/+1 counter on CARDNAME.
SVar:TrigPut:DB$ PutCounter | CounterType$ P1P1
SVar:TrigPut:DB$ PutCounter | CounterType$ P1P1
K:Choose a Background
AI:RemoveDeck:Random
DeckHas:Ability$Counters

View File

@@ -6,8 +6,17 @@ Type=Commander
ScryfallCode=MOC
[cards]
1 M Bright-Palm, Soul Awakener @Mila Pesic
2 M Brimaz, Blight of Oreskos @Uriah Voth
3 M Gimbal, Gremlin Prodigy @Fajareka Setiawan
4 M Kasla, the Broken Halo @Martina Fackova
5 M Sidar Jabari of Zhalfir @Simon Dominic
49 C Esper @Bruce Brenneise
61 C Nyx @Piotr Dura
67 C Towashi @Kamila Szutenberg
147 C Isle of Vesuva @Zoltan Boros & Gabor Szikszai
148 C Jund @Aleksi Briclot
153 C Panopticon @John Avon
158 C Spatial Merging @Gabor Szikszai
445 M Goro-Goro and Satoru @Johannes Voss
446 M Katilda and Lier @Justyna Dura

View File

@@ -6,15 +6,25 @@ Type=Expansion
ScryfallCode=MOM
[cards]
9 R Boon-Bringer Valkyrie @Heonhwa Choe
17 R Heliod, the Radiant Dawn @Victor Adame Minguez
58 R Faerie Mastermind @Joshua Raphael
65 M Jin-Gitaxias @Ekaterina Burmak
67 C Moment of Truth @Rovina Cai
89 R Archpriest of Shadows @Fariba Khamseh
94 R Breach the Multiverse @Liiga Smilshkalne
114 R Invasion of Fiora @Joshua Raphael
117 U Merciless Repurposing @Artur Nakhodkin
134 M Chandra, Hope's Beacon @Kieran Yanner
190 R Invasion of Ikoria @Antonio José Manzanedo
191 R Invasion of Ixalan @Viktor Titov
194 U Invasion of Zendikar @Diego Gisbert
217 M Wrenn and Realmbreaker @Cristi Balanescu
222 R Drana and Linvala @Raluca Marinescu
225 R Ghalta and Mavren @Zezhou Chen
227 U Halo Forager @Kevin Sidharta
233 U Invasion of Ergamon @Manuel Castañón
239 M Invasion of New Phyrexia @Chris Rallis
249 R Omnath, Locus of All @Bryan Sola
255 M Thalia and The Gitrog Monster @Howard Lyon
256 R Yargle and Multani @Slawomir Maniak
@@ -40,5 +50,9 @@ ScryfallCode=MOM
339 M Jin-Gitaxias @Julian Kok Joon Wen
352 R Faerie Mastermind @Joshua Raphael
358 R Breach the Multiverse @Liiga Smilshkalne
381 U Norn's Inquisitor @Denis Zhbankov
382 U Scrappy Bruiser @David Auden Nash
383 U Kami of Whispered Hopes @Filipe Pagliuso
384 U Botanical Brawler @Jesper Ejsing
386 R Ghalta and Mavren @Betty Jiang
387 R Omnath, Locus of All @Helge C. Balzer

View File

@@ -6,5 +6,16 @@ Type=Collector_Edition
ScryfallCode=MUL
[cards]
3 M Elesh Norn, Grand Cenobite @Flavio Girón
9 R Emry, Lurker of the Loch @Wylie Beckert
11 M Jin-Gitaxias, Core Augur @Kekai Kotaki
16 M Sheoldred, Whispering One @Flavio Girón
17 M Skithiryx, the Blight Dragon @Kekai Kotaki
19 U Yargle, Glutton of Urborg @Serena Malyon
21 M Ragavan, Nimble Pilferer @Magali Villeneuve
23 M Urabrask the Hidden @Flavio Girón
25 U Zada, Hedron Grinder @Dominik Mayer
29 M Vorinclex, Voice of Hunger @JungShan
33 M Atraxa, Praetors' Voice @Justin Hernandez & Alexis Hernandez
49 M Kroxa, Titan of Death's Hunger @Jason A. Engle
53 M Niv-Mizzet Reborn @Illustranesia

View File

@@ -18,7 +18,6 @@ import forge.card.CardEdition;
import forge.card.CardRules;
import forge.card.CardRulesPredicates;
import forge.card.ColorSet;
import forge.card.DeckHints;
import forge.card.MagicColor;
import forge.card.mana.ManaCost;
import forge.card.mana.ManaCostShard;
@@ -591,12 +590,10 @@ public class LimitedDeckBuilder extends DeckGeneratorBase {
if (ai.getRemRandomDecks()) {
final List<PaperCard> comboCards = new ArrayList<>();
if (ai.getDeckNeeds() != null && ai.getDeckNeeds().isValid()) {
final DeckHints needs = ai.getDeckNeeds();
comboCards.addAll(needs.filter(deckList));
Iterables.addAll(comboCards, ai.getDeckNeeds().filter(deckList));
}
if (ai.getDeckHints() != null && ai.getDeckHints().isValid()) {
final DeckHints hints = ai.getDeckHints();
comboCards.addAll(hints.filter(deckList));
Iterables.addAll(comboCards, ai.getDeckHints().filter(deckList));
}
if (comboCards.isEmpty()) {
if (logToConsole) {

View File

@@ -26,6 +26,7 @@ import forge.game.card.Card;
import forge.game.card.CardView;
import forge.game.spellability.SpellAbility;
import forge.gui.GuiBase;
import forge.item.IPaperCard;
import forge.localinstance.properties.ForgePreferences;
import forge.model.FModel;
import forge.player.PlayerControllerHuman;
@@ -78,8 +79,12 @@ public class InputConfirm extends InputSyncronizedBase {
return controller.getGui().confirm(null, message, defaultIsYes, options);
if (sa.getTargets() != null && sa.getTargets().isTargetingAnyCard() && sa.getTargets().size() == 1)
return controller.getGui().confirm((sa.getTargetCard()==null)?null:CardView.get(sa.getTargetCard()), message, defaultIsYes, options);
if (ApiType.Play.equals(sa.getApi()) && sa.getPlayEffectCard() != null)
if (ApiType.Play.equals(sa.getApi()) && sa.getPlayEffectCard() != null) {
IPaperCard iPaperCard = sa.getPlayEffectCard().getPaperCard();
if (iPaperCard != null) //getcardforUI regardless of zone if it's hidden or not...
return controller.getGui().confirm(CardView.getCardForUi(iPaperCard), message, defaultIsYes, options);
return controller.getGui().confirm(CardView.get(sa.getPlayEffectCard()), message, defaultIsYes, options);
}
return controller.getGui().confirm(CardView.get(sa.getHostCard()), message, defaultIsYes, options);
} else {
InputConfirm inp;

View File

@@ -236,7 +236,7 @@ public class HumanPlay {
}
// 0 mana costs were slipping through because CostPart.getAmount returns 1
else if (costPart instanceof CostPartMana && parts.size() < 2) {
if (((CostPartMana) costPart).getManaToPay().isZero()) {
if (((CostPartMana) costPart).getMana().isZero()) {
return p.getController().confirmPayment(costPart, Localizer.getInstance().getMessage("lblDoYouWantPay") + " {0}?" + orString, sourceAbility);
}
}
@@ -438,7 +438,7 @@ public class HumanPlay {
if (!hasPaid) { return false; }
}
else if (part instanceof CostPartMana) {
if (!((CostPartMana) part).getManaToPay().isZero()) { // non-zero costs require input
if (!((CostPartMana) part).getMana().isZero()) { // non-zero costs require input
mayRemovePart = false;
}
}