Update Venture Effect

This commit is contained in:
Anthony Calosa
2021-08-29 21:11:42 +08:00
parent ad88a0223f
commit d19f30e9ab
4 changed files with 17 additions and 7 deletions

View File

@@ -1291,6 +1291,13 @@ public class PlayerControllerAi extends PlayerController {
return SpellApiToAi.Converter.get(api).chooseCardName(player, sa, faces); return SpellApiToAi.Converter.get(api).chooseCardName(player, sa, faces);
} }
@Override
public Card chooseDungeon(Player player, List<PaperCard> dungeonCards, String message) {
//todo AI
int i = MyRandom.getRandom().nextInt(dungeonCards.size());
return Card.fromPaperCard(dungeonCards.get(i), player);
}
@Override @Override
public List<Card> chooseCardsForSplice(SpellAbility sa, List<Card> cards) { public List<Card> chooseCardsForSplice(SpellAbility sa, List<Card> cards) {
// sort from best to worst // sort from best to worst

View File

@@ -8,7 +8,6 @@ import com.google.common.base.Predicates;
import forge.StaticData; import forge.StaticData;
import forge.card.CardRulesPredicates; import forge.card.CardRulesPredicates;
import forge.card.ICardFace;
import forge.game.Game; import forge.game.Game;
import forge.game.ability.AbilityKey; import forge.game.ability.AbilityKey;
import forge.game.ability.SpellAbilityEffect; import forge.game.ability.SpellAbilityEffect;
@@ -45,13 +44,9 @@ public class VentureEffect extends SpellAbilityEffect {
// Create a new dungeon card chosen by player in command zone. // Create a new dungeon card chosen by player in command zone.
List<PaperCard> dungeonCards = StaticData.instance().getVariantCards().getAllCards( List<PaperCard> dungeonCards = StaticData.instance().getVariantCards().getAllCards(
Predicates.compose(CardRulesPredicates.Presets.IS_DUNGEON, PaperCard.FN_GET_RULES)); Predicates.compose(CardRulesPredicates.Presets.IS_DUNGEON, PaperCard.FN_GET_RULES));
List<ICardFace> faces = new ArrayList<>();
for (PaperCard pc : dungeonCards) {
faces.add(pc.getRules().getMainPart());
}
String message = Localizer.getInstance().getMessage("lblChooseDungeon"); String message = Localizer.getInstance().getMessage("lblChooseDungeon");
String chosen = player.getController().chooseCardName(sa, faces, message); Card dungeon = player.getController().chooseDungeon(player, dungeonCards, message);
Card dungeon = Card.fromPaperCard(StaticData.instance().getVariantCards().getUniqueByName(chosen), player);
game.getTriggerHandler().suppressMode(TriggerType.ChangesZone); game.getTriggerHandler().suppressMode(TriggerType.ChangesZone);
game.getAction().moveTo(ZoneType.Command, dungeon, sa); game.getAction().moveTo(ZoneType.Command, dungeon, sa);

View File

@@ -261,6 +261,8 @@ public abstract class PlayerController {
public abstract String chooseCardName(SpellAbility sa, Predicate<ICardFace> cpp, String valid, String message); public abstract String chooseCardName(SpellAbility sa, Predicate<ICardFace> cpp, String valid, String message);
public abstract String chooseCardName(SpellAbility sa, List<ICardFace> faces, String message); public abstract String chooseCardName(SpellAbility sa, List<ICardFace> faces, String message);
public abstract Card chooseDungeon(Player player, List<PaperCard> dungeonCards, String message);
// better to have this odd method than those if playerType comparison in ChangeZone // better to have this odd method than those if playerType comparison in ChangeZone
public abstract Card chooseSingleCardForZoneChange(ZoneType destination, List<ZoneType> origin, SpellAbility sa, CardCollection fetchList, DelayedReveal delayedReveal, String selectPrompt, boolean isOptional, Player decider); public abstract Card chooseSingleCardForZoneChange(ZoneType destination, List<ZoneType> origin, SpellAbility sa, CardCollection fetchList, DelayedReveal delayedReveal, String selectPrompt, boolean isOptional, Player decider);

View File

@@ -3235,6 +3235,12 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont
return face == null ? "" : face.getName(); return face == null ? "" : face.getName();
} }
@Override
public Card chooseDungeon(Player player, List<PaperCard> dungeonCards, String message) {
PaperCard dungeon = getGui().one(message, dungeonCards);
return Card.fromPaperCard(dungeon, player);
}
@Override @Override
public List<Card> chooseCardsForSplice(SpellAbility sa, List<Card> cards) { public List<Card> chooseCardsForSplice(SpellAbility sa, List<Card> cards) {
GameEntityViewMap<Card, CardView> gameCacheSplice = GameEntityView.getMap(cards); GameEntityViewMap<Card, CardView> gameCacheSplice = GameEntityView.getMap(cards);