Merge branch 'cleanup' into 'master'

Remove some redundancy

See merge request core-developers/forge!5945
This commit is contained in:
Michael Kamensky
2021-12-16 06:38:21 +00:00
22 changed files with 37 additions and 95 deletions

View File

@@ -955,7 +955,6 @@ public class Game {
Multimap<Player, Card> anteed = ArrayListMultimap.create(); Multimap<Player, Card> anteed = ArrayListMultimap.create();
if (matchRarity) { if (matchRarity) {
boolean onePlayerHasTimeShifted = false; boolean onePlayerHasTimeShifted = false;
List<CardRarity> validRarities = new ArrayList<>(Arrays.asList(CardRarity.values())); List<CardRarity> validRarities = new ArrayList<>(Arrays.asList(CardRarity.values()));
@@ -1018,7 +1017,6 @@ public class Game {
} else { } else {
chooseRandomCardsForAnte(player, anteed); chooseRandomCardsForAnte(player, anteed);
} }
} }
} }
else { else {

View File

@@ -43,7 +43,6 @@ public class GameView extends TrackableObject {
set(TrackableProperty.GameLog, game.getGameLog()); set(TrackableProperty.GameLog, game.getGameLog());
set(TrackableProperty.NumPlayedGamesInMatch, game.getMatch().getOutcomes().size()); set(TrackableProperty.NumPlayedGamesInMatch, game.getMatch().getOutcomes().size());
} }
public Match getMatch() { public Match getMatch() {

View File

@@ -176,16 +176,12 @@ public class AnimateEffect extends AnimateEffectBase {
// give Remembered // give Remembered
if (animateRemembered != null) { if (animateRemembered != null) {
for (final Object o : AbilityUtils.getDefinedObjects(source, animateRemembered, sa)) { c.addRemembered(AbilityUtils.getDefinedObjects(source, animateRemembered, sa));
c.addRemembered(o);
}
} }
// give Imprinted // give Imprinted
if (animateImprinted != null) { if (animateImprinted != null) {
for (final Card imprintedCard : AbilityUtils.getDefinedCards(source, animateImprinted, sa)) { c.addImprintedCards(AbilityUtils.getDefinedCards(source, animateImprinted, sa));
c.addImprintedCard(imprintedCard);
}
} }
game.fireEvent(new GameEventCardStatsChanged(c)); game.fireEvent(new GameEventCardStatsChanged(c));

View File

@@ -212,19 +212,13 @@ public class ChooseCardEffect extends SpellAbilityEffect {
} }
host.setChosenCards(chosen); host.setChosenCards(chosen);
if (sa.hasParam("RememberChosen")) { if (sa.hasParam("RememberChosen")) {
for (final Card rem : chosen) { host.addRemembered(chosen);
host.addRemembered(rem);
}
} }
if (sa.hasParam("ForgetChosen")) { if (sa.hasParam("ForgetChosen")) {
for (final Card rem : chosen) { host.removeRemembered(chosen);
host.removeRemembered(rem);
}
} }
if (sa.hasParam("ImprintChosen")) { if (sa.hasParam("ImprintChosen")) {
for (final Card imp : chosen) { host.addImprintedCards(chosen);
host.addImprintedCard(imp);
}
} }
} }
} }

View File

@@ -56,9 +56,7 @@ public class DelayedTriggerEffect extends SpellAbilityEffect {
if (sa.hasParam("RememberObjects")) { if (sa.hasParam("RememberObjects")) {
for (final String rem : sa.getParam("RememberObjects").split(",")) { for (final String rem : sa.getParam("RememberObjects").split(",")) {
for (final Object o : AbilityUtils.getDefinedEntities(sa.getHostCard(), rem, sa)) { delTrig.addRemembered(AbilityUtils.getDefinedEntities(sa.getHostCard(), rem, sa));
delTrig.addRemembered(o);
}
} }
} }

View File

@@ -177,14 +177,10 @@ public class DigEffect extends SpellAbilityEffect {
} }
if (sa.hasParam("RememberRevealed") && !sa.hasParam("RevealValid") && hasRevealed) { if (sa.hasParam("RememberRevealed") && !sa.hasParam("RevealValid") && hasRevealed) {
for (final Card one : top) { host.addRemembered(top);
host.addRemembered(one);
}
} }
if (sa.hasParam("ImprintRevealed") && hasRevealed) { if (sa.hasParam("ImprintRevealed") && hasRevealed) {
for (final Card one : top) { host.addImprintedCards(top);
host.addImprintedCard(one);
}
} }
if (sa.hasParam("Choser")) { if (sa.hasParam("Choser")) {
final FCollectionView<Player> choosers = AbilityUtils.getDefinedPlayers(host, sa.getParam("Choser"), sa); final FCollectionView<Player> choosers = AbilityUtils.getDefinedPlayers(host, sa.getParam("Choser"), sa);

View File

@@ -204,14 +204,10 @@ public class DigUntilEffect extends SpellAbilityEffect {
} }
if (sa.hasParam("RememberRevealed")) { if (sa.hasParam("RememberRevealed")) {
for (final Card c : revealed) { host.addRemembered(revealed);
host.addRemembered(c);
}
} }
if (sa.hasParam("ImprintRevealed")) { if (sa.hasParam("ImprintRevealed")) {
for (final Card c : revealed) { host.addImprintedCards(revealed);
host.addImprintedCard(c);
}
} }
if (sa.hasParam("RevealRandomOrder")) { if (sa.hasParam("RevealRandomOrder")) {
Collections.shuffle(revealed, MyRandom.getRandom()); Collections.shuffle(revealed, MyRandom.getRandom());

View File

@@ -127,9 +127,6 @@ public class DiscardEffect extends SpellAbilityEffect {
for (final Player p : discarders) { for (final Player p : discarders) {
CardCollectionView toBeDiscarded = new CardCollection(); CardCollectionView toBeDiscarded = new CardCollection();
if ((mode.equals("RevealTgtChoose") && firstTarget != null) || !sa.usesTargeting() || p.canBeTargetedBy(sa)) { if ((mode.equals("RevealTgtChoose") && firstTarget != null) || !sa.usesTargeting() || p.canBeTargetedBy(sa)) {
if (sa.hasParam("RememberDiscarder") && p.canDiscardBy(sa, true)) {
source.addRemembered(p);
}
final int numCardsInHand = p.getCardsIn(ZoneType.Hand).size(); final int numCardsInHand = p.getCardsIn(ZoneType.Hand).size();
if (mode.equals("Defined")) { if (mode.equals("Defined")) {
if (!p.canDiscardBy(sa, true)) { if (!p.canDiscardBy(sa, true)) {

View File

@@ -79,9 +79,7 @@ public class DrawEffect extends SpellAbilityEffect {
} }
} }
if (sa.hasParam("RememberDrawn")) { if (sa.hasParam("RememberDrawn")) {
for (final Card c : drawn) { source.addRemembered(drawn);
source.addRemembered(c);
}
} }
sa.setSVar("AFNotDrawnNum_" + p.getId(), "Number$" + drawn.size()); sa.setSVar("AFNotDrawnNum_" + p.getId(), "Number$" + drawn.size());
} }

View File

@@ -53,10 +53,7 @@ public class FightEffect extends DamageBaseEffect {
} }
if (sa.hasParam("RememberObjects")) { if (sa.hasParam("RememberObjects")) {
final String remembered = sa.getParam("RememberObjects"); host.addRemembered(AbilityUtils.getDefinedObjects(host, sa.getParam("RememberObjects"), sa));
for (final Object o : AbilityUtils.getDefinedObjects(host, remembered, sa)) {
host.addRemembered(o);
}
} }
Player controller = host.getController(); Player controller = host.getController();

View File

@@ -59,9 +59,7 @@ public class ImmediateTriggerEffect extends SpellAbilityEffect {
if (sa.hasParam("RememberObjects")) { if (sa.hasParam("RememberObjects")) {
for (final String rem : sa.getParam("RememberObjects").split(",")) { for (final String rem : sa.getParam("RememberObjects").split(",")) {
for (final Object o : AbilityUtils.getDefinedEntities(sa.getHostCard(), rem, sa)) { immediateTrig.addRemembered(AbilityUtils.getDefinedEntities(sa.getHostCard(), rem, sa));
immediateTrig.addRemembered(o);
}
} }
} }

View File

@@ -68,14 +68,10 @@ public class MillEffect extends SpellAbilityEffect {
} }
} }
if (sa.hasParam("RememberMilled")) { if (sa.hasParam("RememberMilled")) {
for (final Card c : milled) { source.addRemembered(milled);
source.addRemembered(c);
}
} }
if (sa.hasParam("Imprint")) { if (sa.hasParam("Imprint")) {
for (final Card c : milled) { source.addImprintedCards(milled);
source.addImprintedCard(c);
}
} }
} }
} }

View File

@@ -86,7 +86,6 @@ public class MustAttackEffect extends SpellAbilityEffect {
} }
} }
} }
} // mustAttackResolve() } // mustAttackResolve()
} }

View File

@@ -324,9 +324,7 @@ public class PumpEffect extends SpellAbilityEffect {
} }
if (sa.hasParam("RememberObjects")) { if (sa.hasParam("RememberObjects")) {
for (final Object o : AbilityUtils.getDefinedObjects(host, sa.getParam("RememberObjects"), sa)) { host.addRemembered(AbilityUtils.getDefinedObjects(host, sa.getParam("RememberObjects"), sa));
host.addRemembered(o);
}
} }
if (sa.hasParam("NoteCardsFor")) { if (sa.hasParam("NoteCardsFor")) {
@@ -338,21 +336,15 @@ public class PumpEffect extends SpellAbilityEffect {
} }
if (sa.hasParam("ForgetObjects")) { if (sa.hasParam("ForgetObjects")) {
for (final Object o : AbilityUtils.getDefinedObjects(host, sa.getParam("ForgetObjects"), sa)) { host.removeRemembered(AbilityUtils.getDefinedObjects(host, sa.getParam("ForgetObjects"), sa));
host.removeRemembered(o);
}
} }
if (sa.hasParam("ImprintCards")) { if (sa.hasParam("ImprintCards")) {
for (final Card c : AbilityUtils.getDefinedCards(host, sa.getParam("ImprintCards"), sa)) { host.addImprintedCards(AbilityUtils.getDefinedCards(host, sa.getParam("ImprintCards"), sa));
host.addImprintedCard(c);
}
} }
if (sa.hasParam("ForgetImprinted")) { if (sa.hasParam("ForgetImprinted")) {
for (final Card c : AbilityUtils.getDefinedCards(host, sa.getParam("ForgetImprinted"), sa)) { host.removeImprintedCards(AbilityUtils.getDefinedCards(host, sa.getParam("ForgetImprinted"), sa));
host.removeImprintedCard(c);
}
} }
final ZoneType pumpZone = sa.hasParam("PumpZone") ? ZoneType.smartValueOf(sa.getParam("PumpZone")) final ZoneType pumpZone = sa.hasParam("PumpZone") ? ZoneType.smartValueOf(sa.getParam("PumpZone"))

View File

@@ -50,14 +50,10 @@ public class RevealHandEffect extends SpellAbilityEffect {
} }
sa.getActivatingPlayer().getController().reveal(hand, ZoneType.Hand, p); sa.getActivatingPlayer().getController().reveal(hand, ZoneType.Hand, p);
if (sa.hasParam("RememberRevealed")) { if (sa.hasParam("RememberRevealed")) {
for (final Card c : hand) { host.addRemembered(hand);
host.addRemembered(c);
}
} }
if (sa.hasParam("ImprintRevealed")) { if (sa.hasParam("ImprintRevealed")) {
for (final Card c : hand) { host.addImprintedCards(hand);
host.addImprintedCard(c);
}
} }
if (sa.hasParam("RememberRevealedPlayer")) { if (sa.hasParam("RememberRevealedPlayer")) {
host.addRemembered(p); host.addRemembered(p);

View File

@@ -203,10 +203,7 @@ public abstract class TokenEffectBase extends SpellAbilityEffect {
moved.addRemembered(host); moved.addRemembered(host);
} }
if (sa.hasParam("TokenRemembered")) { if (sa.hasParam("TokenRemembered")) {
final String remembered = sa.getParam("TokenRemembered"); moved.addRemembered(AbilityUtils.getDefinedObjects(host, sa.getParam("TokenRemembered"), sa));
for (final Object o : AbilityUtils.getDefinedObjects(host, remembered, sa)) {
moved.addRemembered(o);
}
} }
allTokens.add(moved); allTokens.add(moved);
} }

View File

@@ -142,9 +142,7 @@ public class TwoPilesEffect extends SpellAbilityEffect {
// take action on the chosen pile // take action on the chosen pile
if (sa.hasParam("ChosenPile")) { if (sa.hasParam("ChosenPile")) {
for (final Card z : chosenPile) { card.addRemembered(chosenPile);
card.addRemembered(z);
}
SpellAbility sub = sa.getAdditionalAbility("ChosenPile"); SpellAbility sub = sa.getAdditionalAbility("ChosenPile");
if (sub != null) { if (sub != null) {
@@ -155,9 +153,7 @@ public class TwoPilesEffect extends SpellAbilityEffect {
// take action on the unchosen pile // take action on the unchosen pile
if (sa.hasParam("UnchosenPile")) { if (sa.hasParam("UnchosenPile")) {
card.clearRemembered(); card.clearRemembered();
for (final Card z : unchosenPile) { card.addRemembered(unchosenPile);
card.addRemembered(z);
}
SpellAbility sub = sa.getAdditionalAbility("UnchosenPile"); SpellAbility sub = sa.getAdditionalAbility("UnchosenPile");
if (sub != null) { if (sub != null) {

View File

@@ -333,7 +333,6 @@ public class Player extends GameEntity implements Comparable<Player> {
game.getTriggerHandler().runTrigger(TriggerType.SetInMotion, runParams, false); game.getTriggerHandler().runTrigger(TriggerType.SetInMotion, runParams, false);
} }
/** /**
* returns all opponents. * returns all opponents.
* Should keep player relations somewhere in the match structure * Should keep player relations somewhere in the match structure
@@ -533,8 +532,7 @@ public class Player extends GameEntity implements Comparable<Player> {
game.getTriggerHandler().runTrigger(TriggerType.LifeGained, runParams, false); game.getTriggerHandler().runTrigger(TriggerType.LifeGained, runParams, false);
game.fireEvent(new GameEventPlayerLivesChanged(this, oldLife, life)); game.fireEvent(new GameEventPlayerLivesChanged(this, oldLife, life));
} } else {
else {
System.out.println("Player - trying to gain negative or 0 life"); System.out.println("Player - trying to gain negative or 0 life");
} }
return newLifeSet; return newLifeSet;
@@ -616,7 +614,7 @@ public class Player extends GameEntity implements Comparable<Player> {
if (lifePayment > 0 && life < lifePayment) { if (lifePayment > 0 && life < lifePayment) {
return false; return false;
} }
return (lifePayment <= 0) || !StaticAbilityCantGainLosePayLife.anyCantPayLife(this, effect, cause); return lifePayment <= 0 || !StaticAbilityCantGainLosePayLife.anyCantPayLife(this, effect, cause);
} }
public final boolean payLife(final int lifePayment, final SpellAbility cause, final boolean effect) { public final boolean payLife(final int lifePayment, final SpellAbility cause, final boolean effect) {
@@ -2019,7 +2017,7 @@ public class Player extends GameEntity implements Comparable<Player> {
} }
public final boolean cantLoseForZeroOrLessLife() { public final boolean cantLoseForZeroOrLessLife() {
return (hasKeyword("You don't lose the game for having 0 or less life.")); return hasKeyword("You don't lose the game for having 0 or less life.");
} }
public final boolean cantWin() { public final boolean cantWin() {

View File

@@ -107,7 +107,7 @@ public class TriggerSpellAbilityCastOrCopy extends Trigger {
} }
if (hasParam("ActivatorThisTurnCast")) { if (hasParam("ActivatorThisTurnCast")) {
final String compare = getParam("ActivatorThisTurnCast"); final String compare = getParam("ActivatorThisTurnCast");
final String valid = hasParam("ValidCard") ? getParam("ValidCard") : "Card"; final String valid = getParamOrDefault("ValidCard", "Card");
List<Card> thisTurnCast = CardUtil.getThisTurnCast(valid, getHostCard(), this); List<Card> thisTurnCast = CardUtil.getThisTurnCast(valid, getHostCard(), this);
thisTurnCast = CardLists.filterControlledBy(thisTurnCast, si.getSpellAbility(true).getActivatingPlayer()); thisTurnCast = CardLists.filterControlledBy(thisTurnCast, si.getSpellAbility(true).getActivatingPlayer());
int left = thisTurnCast.size(); int left = thisTurnCast.size();

View File

@@ -51,11 +51,12 @@ public enum VSubmenuOnlineLobby implements IVSubmenu<CSubmenuOnlineLobby>, IOnli
} }
public void reset() { public void reset() {
onClosing(null); if (onClosing(null)) {
this.client = null; this.client = null;
this.lobby = null; this.lobby = null;
populate(); populate();
} }
}
public void setClient(final FGameClient client) { public void setClient(final FGameClient client) {
this.client = client; this.client = client;

View File

@@ -2,8 +2,8 @@ Name:Tsabo's Decree
ManaCost:5 B ManaCost:5 B
Types:Instant Types:Instant
A:SP$ ChooseType | Cost$ 5 B | Defined$ You | Type$ Creature | SubAbility$ TsabosDiscard | StackDescription$ None | SpellDescription$ Choose a creature type. Target player reveals their hand and discards all creature cards of that type. Then destroy all creatures of that type that player controls. They can't be regenerated. A:SP$ ChooseType | Cost$ 5 B | Defined$ You | Type$ Creature | SubAbility$ TsabosDiscard | StackDescription$ None | SpellDescription$ Choose a creature type. Target player reveals their hand and discards all creature cards of that type. Then destroy all creatures of that type that player controls. They can't be regenerated.
SVar:TsabosDiscard:DB$ Discard | ValidTgts$ Player | ForgetOtherTargets$ True | RememberTargets$ True | RememberDiscarder$ True | Mode$ RevealDiscardAll | DiscardValid$ Creature.ChosenType | SubAbility$ TsabosDestroy SVar:TsabosDiscard:DB$ Discard | ValidTgts$ Player | Mode$ RevealDiscardAll | DiscardValid$ Creature.ChosenType | SubAbility$ TsabosDestroy
SVar:TsabosDestroy:DB$ DestroyAll | ValidCards$ Creature.ChosenType+RememberedPlayerCtrl | NoRegen$ True SVar:TsabosDestroy:DB$ DestroyAll | ValidCards$ Creature.ChosenType+TargetedPlayerCtrl | NoRegen$ True
AI:RemoveDeck:All AI:RemoveDeck:All
SVar:Picture:http://www.wizards.com/global/images/magic/general/tsabos_decree.jpg SVar:Picture:http://www.wizards.com/global/images/magic/general/tsabos_decree.jpg
Oracle:Choose a creature type. Target player reveals their hand and discards all creature cards of that type. Then destroy all creatures of that type that player controls. They can't be regenerated. Oracle:Choose a creature type. Target player reveals their hand and discards all creature cards of that type. Then destroy all creatures of that type that player controls. They can't be regenerated.