mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 20:58:03 +00:00
Merge branch 'fix+gonti' into 'master'
Fixing Mana types being inappropriately referenced in relation to Matrices See merge request core-developers/forge!883
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package forge.match.input;
|
||||
|
||||
import forge.game.card.Card;
|
||||
import forge.game.mana.ManaConversionMatrix;
|
||||
import forge.game.mana.ManaCostBeingPaid;
|
||||
import forge.game.player.Player;
|
||||
import forge.game.spellability.SpellAbility;
|
||||
@@ -10,13 +11,16 @@ import forge.properties.ForgePreferences;
|
||||
import forge.util.ITriggerEvent;
|
||||
|
||||
public class InputPayManaOfCostPayment extends InputPayMana {
|
||||
public InputPayManaOfCostPayment(final PlayerControllerHuman controller, ManaCostBeingPaid cost, SpellAbility spellAbility, Player payer) {
|
||||
public InputPayManaOfCostPayment(final PlayerControllerHuman controller, ManaCostBeingPaid cost, SpellAbility spellAbility, Player payer, ManaConversionMatrix matrix) {
|
||||
super(controller, spellAbility, payer);
|
||||
manaCost = cost;
|
||||
extraMatrix = matrix;
|
||||
applyMatrix();
|
||||
}
|
||||
|
||||
private static final long serialVersionUID = 3467312982164195091L;
|
||||
private int phyLifeToLose = 0;
|
||||
private ManaConversionMatrix extraMatrix;
|
||||
|
||||
@Override
|
||||
protected final void onPlayerSelected(Player selected, final ITriggerEvent triggerEvent) {
|
||||
@@ -47,6 +51,8 @@ public class InputPayManaOfCostPayment extends InputPayMana {
|
||||
final String displayMana = manaCost.toString(false, player.getManaPool());
|
||||
final StringBuilder msg = new StringBuilder();
|
||||
|
||||
applyMatrix();
|
||||
|
||||
if (messagePrefix != null) {
|
||||
msg.append(messagePrefix).append("\n");
|
||||
}
|
||||
@@ -71,4 +77,12 @@ public class InputPayManaOfCostPayment extends InputPayMana {
|
||||
|
||||
return msg.toString();
|
||||
}
|
||||
|
||||
private void applyMatrix() {
|
||||
if (extraMatrix == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
player.getManaPool().applyCardMatrix(extraMatrix);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,21 +1,8 @@
|
||||
package forge.player;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import forge.game.cost.*;
|
||||
import forge.game.spellability.LandAbility;
|
||||
import forge.game.spellability.OptionalCostValue;
|
||||
import forge.game.spellability.Spell;
|
||||
import forge.util.TextUtil;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import com.google.common.base.Predicate;
|
||||
import com.google.common.collect.Iterables;
|
||||
import com.google.common.collect.Maps;
|
||||
|
||||
import forge.FThreads;
|
||||
import forge.card.mana.ManaCost;
|
||||
import forge.game.Game;
|
||||
@@ -25,30 +12,31 @@ import forge.game.ability.AbilityUtils;
|
||||
import forge.game.ability.ApiType;
|
||||
import forge.game.ability.effects.CharmEffect;
|
||||
import forge.game.ability.effects.FlipCoinEffect;
|
||||
import forge.game.card.Card;
|
||||
import forge.game.card.CardCollection;
|
||||
import forge.game.card.CardCollectionView;
|
||||
import forge.game.card.CardDamageMap;
|
||||
import forge.game.card.CardLists;
|
||||
import forge.game.card.CardPredicates;
|
||||
import forge.game.card.*;
|
||||
import forge.game.card.CardPredicates.Presets;
|
||||
import forge.game.card.CardView;
|
||||
import forge.game.card.CounterType;
|
||||
import forge.game.cost.*;
|
||||
import forge.game.mana.ManaConversionMatrix;
|
||||
import forge.game.mana.ManaCostBeingPaid;
|
||||
import forge.game.player.Player;
|
||||
import forge.game.player.PlayerController;
|
||||
import forge.game.player.PlayerView;
|
||||
import forge.game.spellability.SpellAbility;
|
||||
import forge.game.spellability.TargetRestrictions;
|
||||
import forge.game.spellability.*;
|
||||
import forge.game.trigger.TriggerType;
|
||||
import forge.game.zone.ZoneType;
|
||||
import forge.match.input.InputPayMana;
|
||||
import forge.match.input.InputPayManaOfCostPayment;
|
||||
import forge.match.input.InputPayManaSimple;
|
||||
import forge.match.input.InputSelectCardsFromList;
|
||||
import forge.util.collect.FCollectionView;
|
||||
import forge.util.Lang;
|
||||
import forge.util.TextUtil;
|
||||
import forge.util.collect.FCollectionView;
|
||||
import forge.util.gui.SGuiChoose;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
|
||||
public class HumanPlay {
|
||||
@@ -814,7 +802,7 @@ public class HumanPlay {
|
||||
return !manaInputCancelled;
|
||||
}
|
||||
|
||||
public static boolean payManaCost(final PlayerControllerHuman controller, final ManaCost realCost, final CostPartMana mc, final SpellAbility ability, final Player activator, String prompt, boolean isActivatedSa) {
|
||||
public static boolean payManaCost(final PlayerControllerHuman controller, final ManaCost realCost, final CostPartMana mc, final SpellAbility ability, final Player activator, String prompt, ManaConversionMatrix matrix, boolean isActivatedSa) {
|
||||
final Card source = ability.getHostCard();
|
||||
ManaCostBeingPaid toPay = new ManaCostBeingPaid(realCost, mc.getRestiction());
|
||||
|
||||
@@ -879,7 +867,7 @@ public class HumanPlay {
|
||||
}
|
||||
if (!toPay.isPaid()) {
|
||||
// Input is somehow clearing out the offering card?
|
||||
inpPayment = new InputPayManaOfCostPayment(controller, toPay, ability, activator);
|
||||
inpPayment = new InputPayManaOfCostPayment(controller, toPay, ability, activator, matrix);
|
||||
inpPayment.setMessagePrefix(prompt);
|
||||
inpPayment.showAndWait();
|
||||
if (!inpPayment.isPaid()) {
|
||||
|
||||
@@ -17,14 +17,8 @@
|
||||
*/
|
||||
package forge.player;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import com.google.common.collect.Iterables;
|
||||
import com.google.common.collect.Maps;
|
||||
|
||||
import forge.card.CardStateName;
|
||||
import forge.card.CardType;
|
||||
import forge.card.MagicColor;
|
||||
@@ -41,13 +35,13 @@ import forge.game.keyword.KeywordInterface;
|
||||
import forge.game.mana.ManaPool;
|
||||
import forge.game.player.Player;
|
||||
import forge.game.player.PlayerController;
|
||||
import forge.game.spellability.AbilityActivated;
|
||||
import forge.game.spellability.AbilitySub;
|
||||
import forge.game.spellability.Spell;
|
||||
import forge.game.spellability.SpellAbility;
|
||||
import forge.game.spellability.TargetRestrictions;
|
||||
import forge.game.spellability.*;
|
||||
import forge.game.zone.Zone;
|
||||
import forge.util.collect.FCollection;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
@@ -122,13 +116,15 @@ public class HumanPlaySpellAbility {
|
||||
ability.resetPaidHash();
|
||||
}
|
||||
|
||||
// TODO Apply this to the SAStackInstance instead of the Player
|
||||
if (manaTypeConversion) {
|
||||
AbilityUtils.applyManaColorConversion(human, MagicColor.Constant.ANY_TYPE_CONVERSION);
|
||||
AbilityUtils.applyManaColorConversion(payment, MagicColor.Constant.ANY_TYPE_CONVERSION);
|
||||
} else if (manaColorConversion) {
|
||||
AbilityUtils.applyManaColorConversion(human, MagicColor.Constant.ANY_COLOR_CONVERSION);
|
||||
AbilityUtils.applyManaColorConversion(payment, MagicColor.Constant.ANY_COLOR_CONVERSION);
|
||||
}
|
||||
|
||||
if (playerManaConversion) {
|
||||
AbilityUtils.applyManaColorConversion(human, MagicColor.Constant.ANY_COLOR_CONVERSION);
|
||||
AbilityUtils.applyManaColorConversion(manapool, MagicColor.Constant.ANY_COLOR_CONVERSION);
|
||||
human.incNumManaConversion();
|
||||
}
|
||||
|
||||
@@ -146,7 +142,7 @@ public class HumanPlaySpellAbility {
|
||||
}
|
||||
|
||||
if (keywordColor) {
|
||||
AbilityUtils.applyManaColorConversion(human, params);
|
||||
AbilityUtils.applyManaColorConversion(payment, params);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -169,6 +165,7 @@ public class HumanPlaySpellAbility {
|
||||
ability.getHostCard().unanimateBestow();
|
||||
}
|
||||
}
|
||||
|
||||
if (manaTypeConversion || manaColorConversion || keywordColor) {
|
||||
manapool.restoreColorReplacements();
|
||||
}
|
||||
|
||||
@@ -31,6 +31,7 @@ import forge.game.cost.CostPart;
|
||||
import forge.game.cost.CostPartMana;
|
||||
import forge.game.keyword.Keyword;
|
||||
import forge.game.mana.Mana;
|
||||
import forge.game.mana.ManaConversionMatrix;
|
||||
import forge.game.player.*;
|
||||
import forge.game.replacement.ReplacementEffect;
|
||||
import forge.game.replacement.ReplacementLayer;
|
||||
@@ -1745,8 +1746,8 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont
|
||||
|
||||
@Override
|
||||
public boolean payManaCost(final ManaCost toPay, final CostPartMana costPartMana, final SpellAbility sa,
|
||||
final String prompt, final boolean isActivatedSa) {
|
||||
return HumanPlay.payManaCost(this, toPay, costPartMana, sa, player, prompt, isActivatedSa);
|
||||
final String prompt, ManaConversionMatrix matrix, final boolean isActivatedSa) {
|
||||
return HumanPlay.payManaCost(this, toPay, costPartMana, sa, player, prompt, matrix, isActivatedSa);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user