Draft matters with a vengeance (#5400)

* Next few Draft cards

* Whispergear Sneak

* Whispergear Sneak

* Code review fixes

* Fix index mapping

* Don't try to log if Draft doesnt have one
This commit is contained in:
Chris H
2024-06-12 02:18:12 -04:00
committed by GitHub
parent 5c02a580c3
commit 50746d9a72
17 changed files with 319 additions and 53 deletions

View File

@@ -50,7 +50,6 @@ import forge.util.Aggregates;
import forge.util.MyRandom;
import forge.util.Visitor;
import forge.util.collect.FCollection;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.tuple.Pair;
@@ -327,7 +326,9 @@ public class Game {
int plId = 0;
for (RegisteredPlayer psc : players0) {
IGameEntitiesFactory factory = (IGameEntitiesFactory)psc.getPlayer();
Player pl = factory.createIngamePlayer(this, plId++);
// If the Registered Player already has a pre-assigned ID, use that. Otherwise, assign a new one.
Integer id = psc.getId();
Player pl = factory.createIngamePlayer(this, id == null ? plId++ : id);
allPlayers.add(pl);
ingamePlayers.add(pl);

View File

@@ -2120,6 +2120,14 @@ public class CardProperty {
}
List<String> nameList = Lists.newArrayList(names.split(";"));
return nameList.contains(card.getName());
} else if (property.equals("NotedNameAetherSearcher")) {
String names = sourceController.getDraftNotes().get("Aether Searcher");
if (names == null || names.isEmpty()) {
return false;
}
List<String> nameList = Lists.newArrayList(names.split(";"));
return nameList.contains(card.getName());
} else if (property.equals("NotedTypes")) {
// Should Paliano Vanguard be hardcoded here or part of the property?

View File

@@ -2,7 +2,6 @@ package forge.game.player;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import forge.game.CardTraitBase;
import forge.game.Game;
import forge.game.ability.AbilityUtils;
@@ -15,6 +14,7 @@ import forge.util.Expressions;
import forge.util.TextUtil;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.regex.Matcher;
@@ -264,6 +264,10 @@ public class PlayerProperty {
if (source.getChosenPlayer() == null || !source.getChosenPlayer().equals(player)) {
return false;
}
} else if (property.equals("NotedDefender")) {
String tracker = player.getDraftNotes().getOrDefault("Cogwork Tracker", "");
return Iterables.contains(Arrays.asList(tracker.split(",")), String.valueOf(player));
} else if (property.startsWith("life")) {
int life = player.getLife();
int amount = AbilityUtils.calculateAmount(source, property.substring(6), spellAbility);

View File

@@ -1,13 +1,7 @@
package forge.game.player;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Set;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import forge.LobbyPlayer;
import forge.deck.CardPool;
import forge.deck.Deck;
@@ -16,6 +10,11 @@ import forge.game.GameType;
import forge.item.IPaperCard;
import forge.item.PaperCard;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Set;
public class RegisteredPlayer {
private final Deck originalDeck; // never return or modify this instance (it's a reference to game resources)
private Deck currentDeck;
@@ -37,6 +36,7 @@ public class RegisteredPlayer {
private List<PaperCard> vanguardAvatars = null;
private PaperCard planeswalker = null;
private int teamNumber = -1; // members of teams with negative id will play FFA.
private Integer id = null;
private boolean randomFoil = false;
private boolean enableETBCountersEffect = false;
@@ -45,6 +45,14 @@ public class RegisteredPlayer {
restoreDeck();
}
public final Integer getId() {
return id;
}
public final void setId(Integer id0) {
id = id0;
}
public final Deck getDeck() {
return currentDeck;
}