mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 12:18:00 +00:00
Merge branch 'fixnpe' into 'master'
Fix NPE See merge request core-developers/forge!5141
This commit is contained in:
@@ -407,6 +407,7 @@ public class ChangeZoneAi extends SpellAbilityAi {
|
||||
if (num.contains("X") && sa.getSVar("X").equals("Count$xPaid")) {
|
||||
// Set PayX here to maximum value.
|
||||
int xPay = ComputerUtilCost.getMaxXValue(sa, ai);
|
||||
if (xPay == 0) return false;
|
||||
xPay = Math.min(xPay, list.size());
|
||||
sa.setXManaCostPaid(xPay);
|
||||
}
|
||||
|
||||
@@ -759,7 +759,6 @@ public final class CardType implements Comparable<CardType>, CardTypeView {
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
///////// Utility methods
|
||||
public static boolean isACardType(final String cardType) {
|
||||
return CoreType.isValidEnum(cardType);
|
||||
|
||||
@@ -40,7 +40,6 @@ public class PrintSheet {
|
||||
|
||||
private final ItemPool<PaperCard> cardsWithWeights;
|
||||
|
||||
|
||||
private final String name;
|
||||
public PrintSheet(String name0) {
|
||||
this(name0, null);
|
||||
|
||||
@@ -43,9 +43,8 @@ public class DeckGenPool implements IDeckGenPool {
|
||||
Iterable<PaperCard> editionCards=Iterables.filter(cards.values(), filter);
|
||||
if (editionCards.iterator().hasNext()){
|
||||
return editionCards.iterator().next();
|
||||
}else {
|
||||
return getCard(name);
|
||||
}
|
||||
return getCard(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -3,9 +3,6 @@ package forge.item;
|
||||
import com.google.common.base.Predicate;
|
||||
import com.google.common.base.Predicates;
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Filtering conditions for miscellaneous InventoryItems.
|
||||
*/
|
||||
|
||||
@@ -349,4 +349,3 @@ public final class PaperCard implements Comparable<IPaperCard>, InventoryItemFro
|
||||
|| (this.getName().equals("Mountain"));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -366,7 +366,6 @@ public abstract class CardTraitBase extends GameObject implements IHasCardView,
|
||||
if (!Expressions.compare(left, presentCompare, right)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (params.containsKey("IsPresent2")) {
|
||||
|
||||
@@ -1905,7 +1905,6 @@ public class GameAction {
|
||||
game.getTriggerHandler().runTrigger(TriggerType.NewGame, AbilityKey.newMap(), true);
|
||||
//</THIS CODE WILL WORK WITH PHASE = NULL>
|
||||
|
||||
|
||||
game.getPhaseHandler().startFirstTurn(first, startGameHook);
|
||||
//after game ends, ensure Auto-Pass canceled for all players so it doesn't apply to next game
|
||||
for (Player p : game.getRegisteredPlayers()) {
|
||||
@@ -1980,7 +1979,6 @@ public class GameAction {
|
||||
private void runPreOpeningHandActions(final Player first) {
|
||||
Player takesAction = first;
|
||||
do {
|
||||
//
|
||||
List<Card> ploys = CardLists.filter(takesAction.getCardsIn(ZoneType.Command), new Predicate<Card>() {
|
||||
@Override
|
||||
public boolean apply(Card input) {
|
||||
@@ -2054,8 +2052,7 @@ public class GameAction {
|
||||
public void invoke(final Runnable proc) {
|
||||
if (ThreadUtil.isGameThread()) {
|
||||
proc.run();
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
ThreadUtil.invokeInGameThread(proc);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1282,7 +1282,8 @@ public class AbilityUtils {
|
||||
}
|
||||
else if (defined.equals("Opponent")) {
|
||||
players.addAll(player.getOpponents());
|
||||
} else if (defined.startsWith("NextPlayerToYour")) {
|
||||
}
|
||||
else if (defined.startsWith("NextPlayerToYour")) {
|
||||
Direction dir = defined.substring(16).equals("Left") ? Direction.Left : Direction.Right;
|
||||
players.add(game.getNextPlayerAfter(player, dir));
|
||||
}
|
||||
|
||||
@@ -1,21 +1,15 @@
|
||||
package forge.game.ability.effects;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import com.google.common.base.Predicate;
|
||||
import com.google.common.base.Predicates;
|
||||
import com.google.common.collect.Iterables;
|
||||
import com.google.common.collect.Lists;
|
||||
|
||||
import forge.StaticData;
|
||||
import forge.card.CardFacePredicates;
|
||||
import forge.card.CardRules;
|
||||
import forge.card.CardRulesPredicates;
|
||||
import forge.card.CardSplitType;
|
||||
import forge.card.ICardFace;
|
||||
import forge.game.ability.AbilityUtils;
|
||||
@@ -26,9 +20,7 @@ import forge.game.card.CardLists;
|
||||
import forge.game.player.Player;
|
||||
import forge.game.spellability.SpellAbility;
|
||||
import forge.game.spellability.TargetRestrictions;
|
||||
import forge.item.PaperCard;
|
||||
import forge.util.Aggregates;
|
||||
import forge.util.ComparableOp;
|
||||
import forge.util.Localizer;
|
||||
|
||||
public class ChooseCardNameEffect extends SpellAbilityEffect {
|
||||
|
||||
@@ -30,6 +30,7 @@ import com.google.common.collect.Sets;
|
||||
|
||||
import forge.game.Game;
|
||||
import forge.game.GameEntity;
|
||||
import forge.game.GameStage;
|
||||
import forge.game.IHasSVars;
|
||||
import forge.game.TriggerReplacementBase;
|
||||
import forge.game.ability.AbilityFactory;
|
||||
@@ -347,8 +348,9 @@ public abstract class Trigger extends TriggerReplacementBase {
|
||||
}
|
||||
|
||||
// host controller will be null when adding card in a simulation game
|
||||
if (this.getHostCard().getController() == null || !meetsCommonRequirements(this.mapParams))
|
||||
if (this.getHostCard().getController() == null || game.getAge() != GameStage.Play || !meetsCommonRequirements(this.mapParams)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user