mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 12:48:00 +00:00
MOC: Ichor Elixir + support
This commit is contained in:
@@ -1,20 +1,11 @@
|
||||
package forge.ai;
|
||||
|
||||
import java.security.InvalidParameterException;
|
||||
import java.util.*;
|
||||
|
||||
import forge.game.keyword.Keyword;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.commons.lang3.tuple.ImmutablePair;
|
||||
import org.apache.commons.lang3.tuple.Pair;
|
||||
|
||||
import com.google.common.base.Predicate;
|
||||
import com.google.common.base.Predicates;
|
||||
import com.google.common.collect.Iterables;
|
||||
import com.google.common.collect.ListMultimap;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Multimap;
|
||||
|
||||
import forge.LobbyPlayer;
|
||||
import forge.ai.ability.ProtectAi;
|
||||
import forge.card.CardStateName;
|
||||
@@ -25,48 +16,26 @@ import forge.card.mana.ManaCost;
|
||||
import forge.card.mana.ManaCostShard;
|
||||
import forge.deck.Deck;
|
||||
import forge.deck.DeckSection;
|
||||
import forge.game.Game;
|
||||
import forge.game.GameEntity;
|
||||
import forge.game.GameObject;
|
||||
import forge.game.GameType;
|
||||
import forge.game.*;
|
||||
import forge.game.ability.AbilityUtils;
|
||||
import forge.game.ability.ApiType;
|
||||
import forge.game.ability.effects.CharmEffect;
|
||||
import forge.game.card.Card;
|
||||
import forge.game.card.CardCollection;
|
||||
import forge.game.card.CardCollectionView;
|
||||
import forge.game.card.CardLists;
|
||||
import forge.game.card.CardPredicates;
|
||||
import forge.game.card.*;
|
||||
import forge.game.card.CardPredicates.Presets;
|
||||
import forge.game.card.CardUtil;
|
||||
import forge.game.card.CardView;
|
||||
import forge.game.card.CounterType;
|
||||
import forge.game.combat.Combat;
|
||||
import forge.game.cost.Cost;
|
||||
import forge.game.cost.CostEnlist;
|
||||
import forge.game.cost.CostPart;
|
||||
import forge.game.cost.CostPartMana;
|
||||
import forge.game.keyword.Keyword;
|
||||
import forge.game.keyword.KeywordInterface;
|
||||
import forge.game.mana.Mana;
|
||||
import forge.game.mana.ManaConversionMatrix;
|
||||
import forge.game.phase.PhaseHandler;
|
||||
import forge.game.phase.PhaseType;
|
||||
import forge.game.player.DelayedReveal;
|
||||
import forge.game.player.Player;
|
||||
import forge.game.player.PlayerActionConfirmMode;
|
||||
import forge.game.player.PlayerController;
|
||||
import forge.game.player.PlayerView;
|
||||
import forge.game.player.*;
|
||||
import forge.game.replacement.ReplacementEffect;
|
||||
import forge.game.spellability.Ability;
|
||||
import forge.game.spellability.AbilityStatic;
|
||||
import forge.game.spellability.AbilitySub;
|
||||
import forge.game.spellability.LandAbility;
|
||||
import forge.game.spellability.OptionalCost;
|
||||
import forge.game.spellability.OptionalCostValue;
|
||||
import forge.game.spellability.Spell;
|
||||
import forge.game.spellability.SpellAbility;
|
||||
import forge.game.spellability.SpellAbilityStackInstance;
|
||||
import forge.game.spellability.TargetChoices;
|
||||
import forge.game.spellability.*;
|
||||
import forge.game.trigger.WrappedAbility;
|
||||
import forge.game.zone.ZoneType;
|
||||
import forge.item.PaperCard;
|
||||
@@ -75,6 +44,12 @@ import forge.util.ITriggerEvent;
|
||||
import forge.util.MyRandom;
|
||||
import forge.util.collect.FCollection;
|
||||
import forge.util.collect.FCollectionView;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.commons.lang3.tuple.ImmutablePair;
|
||||
import org.apache.commons.lang3.tuple.Pair;
|
||||
|
||||
import java.security.InvalidParameterException;
|
||||
import java.util.*;
|
||||
|
||||
|
||||
/**
|
||||
@@ -606,6 +581,12 @@ public class PlayerControllerAi extends PlayerController {
|
||||
return Aggregates.random(sectors);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlanarDice choosePDRollToIgnore(List<PlanarDice> rolls) {
|
||||
//TODO create AI logic for this
|
||||
return Aggregates.random(rolls);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean mulliganKeepHand(Player firstPlayer, int cardsToReturn) {
|
||||
return !ComputerUtil.wantMulligan(player, cardsToReturn);
|
||||
|
||||
@@ -1,15 +1,16 @@
|
||||
package forge.game;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Map;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import forge.game.ability.AbilityKey;
|
||||
import forge.game.event.GameEventRollDie;
|
||||
import forge.game.player.Player;
|
||||
import forge.game.replacement.ReplacementType;
|
||||
import forge.game.trigger.TriggerType;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* Represents the planar dice for Planechase games.
|
||||
*
|
||||
@@ -20,36 +21,61 @@ public enum PlanarDice {
|
||||
Blank;
|
||||
|
||||
public static PlanarDice roll(Player roller, PlanarDice riggedResult) {
|
||||
PlanarDice res = Blank;
|
||||
int i = forge.util.MyRandom.getRandom().nextInt(6);
|
||||
// Play the die roll sound
|
||||
roller.getGame().fireEvent(new GameEventRollDie());
|
||||
roller.roll();
|
||||
if (riggedResult != null)
|
||||
res = riggedResult;
|
||||
else if (i == 0)
|
||||
res = Planeswalk;
|
||||
else if (i == 1)
|
||||
res = Chaos;
|
||||
final Game game = roller.getGame();
|
||||
int rolls = 1;
|
||||
int ignore = 0;
|
||||
|
||||
final Map<AbilityKey, Object> repParams = AbilityKey.mapFromAffected(roller);
|
||||
repParams.put(AbilityKey.Number, rolls);
|
||||
repParams.put(AbilityKey.Ignore, ignore);
|
||||
|
||||
switch (game.getReplacementHandler().run(ReplacementType.RollPlanarDice, repParams)) {
|
||||
case NotReplaced:
|
||||
break;
|
||||
case Updated: {
|
||||
rolls = (int) repParams.get(AbilityKey.Number);
|
||||
ignore = (int) repParams.get(AbilityKey.Ignore);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
List<PlanarDice> results = Lists.newArrayList();
|
||||
for (int r = 0; r < rolls; r++) {
|
||||
PlanarDice thisRoll = Blank;
|
||||
int i = forge.util.MyRandom.getRandom().nextInt(6);
|
||||
roller.roll();
|
||||
if (riggedResult != null)
|
||||
thisRoll = riggedResult;
|
||||
else if (i == 0)
|
||||
thisRoll = Planeswalk;
|
||||
else if (i == 1)
|
||||
thisRoll = Chaos;
|
||||
results.add(thisRoll);
|
||||
}
|
||||
|
||||
for (int ig = 0; ig < ignore; ig++) {
|
||||
results.remove(roller.getController().choosePDRollToIgnore(results));
|
||||
}
|
||||
PlanarDice res = results.get(0);
|
||||
|
||||
PlanarDice trigRes = res;
|
||||
|
||||
if(roller.getGame().getStaticEffects().getGlobalRuleChange(GlobalRuleChange.blankIsChaos)
|
||||
&& res == Blank)
|
||||
{
|
||||
if (game.getStaticEffects().getGlobalRuleChange(GlobalRuleChange.blankIsChaos)
|
||||
&& res == Blank) {
|
||||
trigRes = Chaos;
|
||||
}
|
||||
|
||||
Map<AbilityKey, Object> runParams = AbilityKey.mapFromPlayer(roller);
|
||||
runParams.put(AbilityKey.Result, trigRes);
|
||||
roller.getGame().getTriggerHandler().runTrigger(TriggerType.PlanarDice, runParams,false);
|
||||
game.getTriggerHandler().runTrigger(TriggerType.PlanarDice, runParams,false);
|
||||
|
||||
// Also run normal RolledDie and RolledDieOnce triggers
|
||||
runParams = AbilityKey.mapFromPlayer(roller);
|
||||
runParams.put(AbilityKey.Sides, 6);
|
||||
runParams.put(AbilityKey.Result, 0);
|
||||
roller.getGame().getTriggerHandler().runTrigger(TriggerType.RolledDie, runParams, false);
|
||||
for (int r = 0; r < rolls; r++) {
|
||||
runParams = AbilityKey.mapFromPlayer(roller);
|
||||
runParams.put(AbilityKey.Sides, 6);
|
||||
runParams.put(AbilityKey.Result, 0);
|
||||
roller.getGame().getTriggerHandler().runTrigger(TriggerType.RolledDie, runParams, false);
|
||||
}
|
||||
|
||||
runParams = AbilityKey.mapFromPlayer(roller);
|
||||
runParams.put(AbilityKey.Sides, 6);
|
||||
|
||||
@@ -74,6 +74,7 @@ public enum AbilityKey {
|
||||
FirstTime("FirstTime"),
|
||||
Fizzle("Fizzle"),
|
||||
FoundSearchingLibrary("FoundSearchingLibrary"),
|
||||
Ignore("Ignore"),
|
||||
IsCombat("IsCombat"), // TODO confirm that this and IsCombatDamage can be merged
|
||||
IsCombatDamage("IsCombatDamage"),
|
||||
IsDamage("IsDamage"),
|
||||
|
||||
@@ -19,17 +19,19 @@ public class RollPlanarDiceEffect extends SpellAbilityEffect {
|
||||
*/
|
||||
@Override
|
||||
public void resolve(SpellAbility sa) {
|
||||
boolean countedTowardsCost = !sa.hasParam("NotCountedTowardsCost");
|
||||
final Player activator = sa.getActivatingPlayer();
|
||||
final Game game = activator.getGame();
|
||||
|
||||
if(countedTowardsCost) {
|
||||
if (game.getActivePlanes() == null) { // not a planechase game, nothing happens
|
||||
return;
|
||||
}
|
||||
if (!sa.hasParam("NotCountedForPDCost")) {
|
||||
game.getPhaseHandler().incPlanarDiceRolledthisTurn();
|
||||
}
|
||||
PlanarDice result = PlanarDice.roll(activator, null);
|
||||
// Play the die roll sound
|
||||
activator.getGame().fireEvent(new GameEventRollDie());
|
||||
String message = Localizer.getInstance().getMessage("lblPlayerRolledResult", activator.getName(), result.toString());
|
||||
game.fireEvent(new GameEventRollDie());
|
||||
PlanarDice result = PlanarDice.roll(activator, null);
|
||||
String message = Localizer.getInstance().getMessage("lblPlanarDiceResult", result.toString());
|
||||
game.getAction().notifyOfValue(sa, activator, message, null);
|
||||
|
||||
}
|
||||
|
||||
@@ -353,7 +353,7 @@ public class CardFactory {
|
||||
card.addTrigger(planesWalkTrigger);
|
||||
|
||||
StringBuilder saSB = new StringBuilder();
|
||||
saSB.append("AB$ RollPlanarDice | Cost$ X | SorcerySpeed$ True | Activator$ Player | ActivationZone$ Command | ");
|
||||
saSB.append("ST$ RollPlanarDice | Cost$ X | SorcerySpeed$ True | Activator$ Player | ActivationZone$ Command | ");
|
||||
saSB.append("SpellDescription$ Roll the planar dice. X is equal to the amount of times the planar die has been rolled this turn.");
|
||||
|
||||
SpellAbility planarRoll = AbilityFactory.getAbility(saSB.toString(), card);
|
||||
|
||||
@@ -5,6 +5,7 @@ import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import forge.game.*;
|
||||
import org.apache.commons.lang3.tuple.ImmutablePair;
|
||||
import org.apache.commons.lang3.tuple.Pair;
|
||||
|
||||
@@ -19,13 +20,7 @@ import forge.card.mana.ManaCost;
|
||||
import forge.card.mana.ManaCostShard;
|
||||
import forge.deck.Deck;
|
||||
import forge.deck.DeckSection;
|
||||
import forge.game.Game;
|
||||
import forge.game.GameEntity;
|
||||
import forge.game.GameObject;
|
||||
import forge.game.GameOutcome.AnteResult;
|
||||
import forge.game.GameType;
|
||||
import forge.game.GameView;
|
||||
import forge.game.Match;
|
||||
import forge.game.card.Card;
|
||||
import forge.game.card.CardCollection;
|
||||
import forge.game.card.CardCollectionView;
|
||||
@@ -192,6 +187,8 @@ public abstract class PlayerController {
|
||||
return chooseSector(assignee, ai, sectors);
|
||||
}
|
||||
|
||||
public abstract PlanarDice choosePDRollToIgnore(List<PlanarDice> rolls);
|
||||
|
||||
public abstract Object vote(SpellAbility sa, String prompt, List<Object> options, ListMultimap<Object, Player> votes, Player forPlayer);
|
||||
|
||||
public abstract CardCollectionView getCardsToMulligan(Player firstPlayer);
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
/*
|
||||
* Forge: Play Magic: the Gathering.
|
||||
* Copyright (C) 2011 Forge Team
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package forge.game.replacement;
|
||||
|
||||
import forge.game.ability.AbilityKey;
|
||||
import forge.game.card.Card;
|
||||
import forge.game.spellability.SpellAbility;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public class ReplaceRollPlanarDice extends ReplacementEffect {
|
||||
|
||||
/**
|
||||
* Instantiates a new replace roll planar dice.
|
||||
*
|
||||
* @param params the params
|
||||
* @param host the host
|
||||
*/
|
||||
public ReplaceRollPlanarDice(final Map<String, String> params, final Card host, final boolean intrinsic) {
|
||||
super(params, host, intrinsic);
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.card.replacement.ReplacementEffect#canReplace(java.util.HashMap)
|
||||
*/
|
||||
@Override
|
||||
public boolean canReplace(Map<AbilityKey, Object> runParams) {
|
||||
if (!matchesValidParam("ValidPlayer", runParams.get(AbilityKey.Affected))) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.card.replacement.ReplacementEffect#setReplacingObjects(java.util.Map, forge.card.spellability.SpellAbility)
|
||||
*/
|
||||
@Override
|
||||
public void setReplacingObjects(Map<AbilityKey, Object> runParams, SpellAbility sa) {
|
||||
sa.setReplacingObject(AbilityKey.Number, runParams.get(AbilityKey.Number));
|
||||
sa.setReplacingObject(AbilityKey.Ignore, runParams.get(AbilityKey.Ignore));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -35,6 +35,7 @@ public enum ReplacementType {
|
||||
Moved(ReplaceMoved.class),
|
||||
ProduceMana(ReplaceProduceMana.class),
|
||||
Proliferate(ReplaceProliferate.class),
|
||||
RollPlanarDice(ReplaceRollPlanarDice.class),
|
||||
Scry(ReplaceScry.class),
|
||||
SetInMotion(ReplaceSetInMotion.class),
|
||||
Surveil(ReplaceSurveil.class),
|
||||
|
||||
@@ -68,6 +68,7 @@ public class MessageUtil {
|
||||
case Protection:
|
||||
return Localizer.getInstance().getMessage("lblPlayerChooseValue", choser, value);
|
||||
case RollDice:
|
||||
case RollPlanarDice:
|
||||
case PutCounter:// For Clay Golem cost text
|
||||
return value;
|
||||
case Vote:
|
||||
|
||||
@@ -20,10 +20,7 @@ import forge.card.mana.ManaCost;
|
||||
import forge.card.mana.ManaCostShard;
|
||||
import forge.deck.Deck;
|
||||
import forge.deck.DeckSection;
|
||||
import forge.game.Game;
|
||||
import forge.game.GameEntity;
|
||||
import forge.game.GameObject;
|
||||
import forge.game.GameType;
|
||||
import forge.game.*;
|
||||
import forge.game.ability.AbilityUtils;
|
||||
import forge.game.card.*;
|
||||
import forge.game.combat.Combat;
|
||||
@@ -503,6 +500,11 @@ public class PlayerControllerForTests extends PlayerController {
|
||||
return chooseItem(sectors);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlanarDice choosePDRollToIgnore(List<PlanarDice> rolls) {
|
||||
return Aggregates.random(rolls);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object vote(SpellAbility sa, String prompt, List<Object> options, ListMultimap<Object, Player> votes, Player forPlayer) {
|
||||
return chooseItem(options);
|
||||
|
||||
@@ -2,6 +2,6 @@ Name:Fractured Powerstone
|
||||
ManaCost:2
|
||||
Types:Artifact
|
||||
A:AB$ Mana | Cost$ T | Produced$ C | SpellDescription$ Add {C}.
|
||||
A:AB$ RollPlanarDice | Cost$ T | SorcerySpeed$ True | SpellDescription$ Roll the planar die. Activate only as a sorcery.
|
||||
A:AB$ RollPlanarDice | Cost$ T | SorcerySpeed$ True | NotCountedForPDCost$ True | SpellDescription$ Roll the planar die. Activate only as a sorcery.
|
||||
AI:RemoveDeck:Random
|
||||
Oracle:{T}: Add {C}.\n{T}: Roll the planar die. Activate only as a sorcery.
|
||||
|
||||
8
forge-gui/res/cardsfolder/upcoming/ichor_elixir.txt
Normal file
8
forge-gui/res/cardsfolder/upcoming/ichor_elixir.txt
Normal file
@@ -0,0 +1,8 @@
|
||||
Name:Ichor Elixir
|
||||
ManaCost:4
|
||||
Types:Artifact
|
||||
R:Event$ RollPlanarDice | ValidPlayer$ You | ReplaceWith$ PlusRoll | Description$ If you would roll one or more planar dice, instead roll that many planar dice plus one and ignore one.
|
||||
SVar:PlusRoll:DB$ ReplaceEffect | VarName$ Number | VarValue$ ReplaceCount$Number/Plus.1 | SubAbility$ IgnoreRoll
|
||||
SVar:IgnoreRoll:DB$ ReplaceEffect | VarName$ Ignore | VarValue$ ReplaceCount$Ignore/Plus.1
|
||||
A:AB$ Mana | Cost$ T | Produced$ C | Amount$ 2 | SpellDescription$ Add {C}{C}.
|
||||
Oracle:If you would roll one or more planar dice, instead roll that many planar dice plus one and ignore one.\n{T}: Add {C}{C}.
|
||||
@@ -1351,6 +1351,7 @@ lblLibrary=Bibliothek
|
||||
lblGraveyard=Friedhof
|
||||
lblAssignSectorCreature=Weise {0} einem Bereich zu
|
||||
lblChooseSectorEffect=Wähle Bereich
|
||||
lblChooseRollIgnore=Choose a roll to ignore
|
||||
lblTop=Oben drauf
|
||||
lblBottom=Unten drunter
|
||||
lblNColorManaFromCard={0} {1} Mana von {2}
|
||||
@@ -2042,8 +2043,10 @@ lblDoyouWantShuffleTheLibrary=Möchtest du deine Bibliothek mischen?
|
||||
lblDoYouWantRepeatProcessAgain=Möchtest du den Vorgang wiederholen?
|
||||
#RevealHandEffect.java
|
||||
lblDoYouWantRevealYourHand=Möchtest du deine Handkarten offen vorzeigen?
|
||||
#RollDiceEffect.java
|
||||
lblPlayerRolledResult={0} würfelt {1}
|
||||
#RollPlanarDiceEffect.java
|
||||
lblPlayerRolledResult={0} würfelte {1}?
|
||||
lblPlanarDiceResult=Planar dice result: {0}
|
||||
#SacrificeEffect.java
|
||||
lblDoYouWantPayEcho=Möchtest du die Echokosten zahlen
|
||||
lblPayEcho=Zahle Echokosten
|
||||
@@ -2962,4 +2965,4 @@ lblStartArena=Willst du in die Arena gehen?
|
||||
lblWouldYouLikeDestroy=Möchten Sie {0} zerstören?
|
||||
lblAdventureDescription=Im Abenteuermodus erkunden Sie die sich ständig ändernde Landschaft von Shandalar und Duell-Kreaturen; um Gold, Scherben, Ausrüstung und neue Karten zu gewinnen, sie alle zu sammeln und der Beste zu werden!
|
||||
lblEmptyDeck=Leeres Kartendeck
|
||||
lblNoAvailableSlots=Keine verf<EFBFBD>gbaren Slots
|
||||
lblNoAvailableSlots=Keine verfügbaren Slots
|
||||
|
||||
@@ -1357,6 +1357,7 @@ lblLibrary=Library
|
||||
lblGraveyard=Graveyard
|
||||
lblAssignSectorCreature=Assign {0} to a sector
|
||||
lblChooseSectorEffect=Choose a sector
|
||||
lblChooseRollIgnore=Choose a roll to ignore
|
||||
lblTop=Top
|
||||
lblBottom=Bottom
|
||||
lblNColorManaFromCard={0} {1} mana from {2}
|
||||
@@ -2048,8 +2049,10 @@ lblDoyouWantShuffleTheLibrary=Do you want to shuffle the library?
|
||||
lblDoYouWantRepeatProcessAgain=Do you want to repeat this process again?
|
||||
#RevealHandEffect.java
|
||||
lblDoYouWantRevealYourHand=Do you want to reveal your hand?
|
||||
#RollPlanarDiceEffect.java
|
||||
#RollDiceEffect.java
|
||||
lblPlayerRolledResult={0} rolled {1}
|
||||
#RollPlanarDiceEffect.java
|
||||
lblPlanarDiceResult=Planar dice result: {0}
|
||||
#SacrificeEffect.java
|
||||
lblDoYouWantPayEcho=Do you want to pay Echo
|
||||
lblPayEcho=Pay Echo
|
||||
|
||||
@@ -1352,6 +1352,7 @@ lblLibrary=Biblioteca
|
||||
lblGraveyard=Cementerio
|
||||
lblAssignSectorCreature=Assign {0} to a sector
|
||||
lblChooseSectorEffect=Choose a sector
|
||||
lblChooseRollIgnore=Choose a roll to ignore
|
||||
lblTop=Superior
|
||||
lblBottom=Fondo
|
||||
lblNColorManaFromCard={0} {1} maná de {2}
|
||||
@@ -2043,8 +2044,10 @@ lblDoyouWantShuffleTheLibrary=¿Quieres barajar la biblioteca?
|
||||
lblDoYouWantRepeatProcessAgain=¿Quiere repetir este proceso de nuevo?
|
||||
#RevealHandEffect.java
|
||||
lblDoYouWantRevealYourHand=¿Quieres descubrir tu mano?
|
||||
#RollPlanarDiceEffect.java
|
||||
#RollDiceEffect.java
|
||||
lblPlayerRolledResult={0} lanzó {1}
|
||||
#RollPlanarDiceEffect.java
|
||||
lblPlanarDiceResult=Planar dice result: {0}
|
||||
#SacrificeEffect.java
|
||||
lblDoYouWantPayEcho=¿Quieres pagar Eco
|
||||
lblPayEcho=Pagar Eco
|
||||
@@ -2963,6 +2966,6 @@ lblBoon=Boon
|
||||
lblExitToWoldMap=Salir al mapa del mundo?
|
||||
lblStartArena=¿Quieres ir a la arena?
|
||||
lblWouldYouLikeDestroy=¿Le gustaría destruir {0}?
|
||||
lblAdventureDescription=<EFBFBD>El modo de aventura es donde exploras el paisaje siempre cambiante de Shandalar, y criaturas de duelo para ganar oro, fragmentos, equipos y nuevas tarjetas para convertirte en el mejor y recogerlas a todos!
|
||||
lblEmptyDeck=Baraja de cartas vac<EFBFBD>a
|
||||
lblAdventureDescription=¡El modo de aventura es donde exploras el paisaje siempre cambiante de Shandalar, y criaturas de duelo para ganar oro, fragmentos, equipos y nuevas tarjetas para convertirte en el mejor y recogerlas a todos!
|
||||
lblEmptyDeck=Baraja de cartas vacía
|
||||
lblNoAvailableSlots=No hay ranuras disponibles
|
||||
|
||||
@@ -1294,7 +1294,7 @@ lblError=Erreur
|
||||
lblWinGame=Gagner la partie
|
||||
lblSetLifetoWhat=Mettre la vie à quoi ?
|
||||
lblSetLifeforWhichPlayer=Définir la vie pour quel joueur
|
||||
kglChoosePermanentstoTap=Choisir les permanents à engager
|
||||
lblChoosePermanentstoTap=Choisir les permanents à engager
|
||||
lblChoosePermanentstoUntap=Choisir les permanents à dégager
|
||||
lblWhichTypeofCounter=Quel type de marqueur ?
|
||||
lblHowManyCounters=Combien de marqueurs ?
|
||||
@@ -1311,7 +1311,7 @@ lblSelectOrderForSimultaneousAbilities=Sélectionner l''ordre pour les capacité
|
||||
lblReorderSimultaneousAbilities=Réorganiser les capacités simultanées
|
||||
lblResolveFirst=Résoudre en premier
|
||||
lblMoveCardstoToporBbottomofLibrary=Déplacer les cartes en haut ou en bas de la bibliothèque
|
||||
lblSelectCardsToBeOutOnTheBottomOfYourLibrary=S\u00e9lectionnez les cartes \u00e0 mettre en bas de votre biblioth\u00e8que
|
||||
lblSelectCardsToBeOutOnTheBottomOfYourLibrary=Sélectionnez les cartes à mettre en bas de votre bibliothèque
|
||||
lblCardsToPutOnTheBottom=Cartes à mettre en bas
|
||||
lblArrangeCardsToBePutOnTopOfYourLibrary=Disposer les cartes à mettre au-dessus de votre bibliothèque
|
||||
lblTopOfLibrary=Haut de la bibliothèque
|
||||
@@ -1353,18 +1353,20 @@ lblThereNoCardInPlayerZone=Il n''y a pas de cartes dans {0} {1}
|
||||
lblPutCardsOnTheTopLibraryOrGraveyard=Placer {0} au-dessus de la bibliothèque ou du cimetière ?
|
||||
lblLibrary=Bibliothèque
|
||||
lblGraveyard=Cimetière
|
||||
lblHaut=Haut
|
||||
lblBas=Bas
|
||||
lblAssignSectorCreature=Assign {0} to a sectorlblChooseSectorEffect=Choose a sector
|
||||
lblChooseRollIgnore=Choose a roll to ignore
|
||||
lblTop=Haut
|
||||
lblBottom=Bas
|
||||
lblNColorManaFromCard={0} {1} mana de {2}
|
||||
lblPayManaFromManaPool=Payer le mana du pool de mana
|
||||
lblChooseATargetType=Choisir un type {0}
|
||||
lblUntap=Dégager
|
||||
lblOdds=Cote
|
||||
lblPairs=Pairs
|
||||
lblEvens=Pairs
|
||||
lblLeaveTapped=Laisser tapé
|
||||
lblUntapAndSkipThisTurn=Dégager (et sauter ce tour)
|
||||
lblGauche=Gauche
|
||||
lblDroite=Droite
|
||||
lblLeft=Gauche
|
||||
lblRight=Droite
|
||||
lblAddCounter=Ajouter un marqueur
|
||||
lblRemoveCounter=Supprimer le marqueur
|
||||
lblWinTheFlip=gagner le flip
|
||||
@@ -2045,8 +2047,10 @@ lblDoyouWantShuffleTheLibrary=Voulez-vous mélanger la bibliothèque ?
|
||||
lblDoYouWantRepeatProcessAgain=Voulez-vous répéter ce processus à nouveau ?
|
||||
#RevealHandEffect.java
|
||||
lblDoYouWantRevealYourHand=Voulez-vous révéler votre main ?
|
||||
#RollPlanarDiceEffect.java
|
||||
#RollDiceEffect.java
|
||||
lblPlayerRolledResult={0} a lancé {1}
|
||||
#RollPlanarDiceEffect.java
|
||||
lblPlanarDiceResult=Planar dice result: {0}
|
||||
#SacrificeEffect.java
|
||||
lblDoYouWantPayEcho=Voulez-vous payer Echo
|
||||
lblPayEcho=Écho de paiement
|
||||
|
||||
@@ -1352,6 +1352,7 @@ lblLibrary=Grimorio
|
||||
lblGraveyard=Cimitero
|
||||
lblAssignSectorCreature=Assign {0} to a sector
|
||||
lblChooseSectorEffect=Choose a sector
|
||||
lblChooseRollIgnore=Choose a roll to ignore
|
||||
lblTop=Cima
|
||||
lblBottom=Fondo
|
||||
lblNColorManaFromCard={0} {1} mana da {2}
|
||||
@@ -2042,8 +2043,10 @@ lblDoyouWantShuffleTheLibrary=Vuoi mescolare il grimorio?
|
||||
lblDoYouWantRepeatProcessAgain=Vuoi ripetere nuovamente questo procedimento?
|
||||
#RevealHandEffect.java
|
||||
lblDoYouWantRevealYourHand=Vuoi rivelare la tua mano?
|
||||
#RollPlanarDiceEffect.java
|
||||
#RollDiceEffect.java
|
||||
lblPlayerRolledResult={0} ha ottenuto {1} col dado
|
||||
#RollPlanarDiceEffect.java
|
||||
lblPlanarDiceResult=Planar dice result: {0}
|
||||
#SacrificeEffect.java
|
||||
lblDoYouWantPayEcho=Vuoi pagare Eco
|
||||
lblPayEcho=Paga Eco
|
||||
|
||||
@@ -1353,6 +1353,7 @@ lblLibrary=ライブラリー
|
||||
lblGraveyard=墓地
|
||||
lblAssignSectorCreature=Assign {0} to a sector
|
||||
lblChooseSectorEffect=Choose a sector
|
||||
lblChooseRollIgnore=Choose a roll to ignore
|
||||
lblTop=タップ
|
||||
lblBottom=ボトム
|
||||
lblNColorManaFromCard={2}から {0} {1} のマナ
|
||||
@@ -2042,8 +2043,10 @@ lblDoyouWantShuffleTheLibrary=ライブラリーをシャッフルしますか
|
||||
lblDoYouWantRepeatProcessAgain=この手順をもう一度しますか?
|
||||
#RevealHandEffect.java
|
||||
lblDoYouWantRevealYourHand=手札を公開しますか?
|
||||
#RollPlanarDiceEffect.java
|
||||
#RollDiceEffect.java
|
||||
lblPlayerRolledResult={0}が {1}をロールしました
|
||||
#RollPlanarDiceEffect.java
|
||||
lblPlanarDiceResult=Planar dice result: {0}
|
||||
#SacrificeEffect.java
|
||||
lblDoYouWantPayEcho=エコーコストを支払いますか:
|
||||
lblPayEcho=エコーコストを支払います
|
||||
|
||||
@@ -1383,6 +1383,7 @@ lblLibrary=Grimório
|
||||
lblGraveyard=Cemitério
|
||||
lblAssignSectorCreature=Assign {0} to a sector
|
||||
lblChooseSectorEffect=Choose a sector
|
||||
lblChooseRollIgnore=Choose a roll to ignore
|
||||
lblTop=Topo
|
||||
lblBottom=Fundo
|
||||
lblNColorManaFromCard={0} {1} mana de {2}
|
||||
@@ -2104,8 +2105,10 @@ lblDoyouWantShuffleTheLibrary=Quer embaralhar o grimório?
|
||||
lblDoYouWantRepeatProcessAgain=Quer repetir este processo novamente?
|
||||
#RevealHandEffect.java
|
||||
lblDoYouWantRevealYourHand=Você quer revelar sua mão?
|
||||
#RollPlanarDiceEffect.java
|
||||
#RollDiceEffect.java
|
||||
lblPlayerRolledResult={0} tirou {1}
|
||||
#RollPlanarDiceEffect.java
|
||||
lblPlanarDiceResult=Planar dice result: {0}
|
||||
#SacrificeEffect.java
|
||||
lblDoYouWantPayEcho=Quer pagar pelo Eco
|
||||
lblPayEcho=Pagar Eco
|
||||
@@ -3054,5 +3057,5 @@ lblStartArena=Você quer entrar na arena?
|
||||
lblWouldYouLikeDestroy=Você gostaria de destruir {0}?
|
||||
lblAdventureDescription=O modo de aventura é onde você explora a paisagem em constante mudança de Shandalar, e duelo para ganhar ouro, fragmentos, equipamentos e novos cartões para se tornarem os melhores e colecioná-los!
|
||||
lblEmptyDeck=Baralho de cartas vazio
|
||||
lblNoAvailableSlots=N<EFBFBD>o h<EFBFBD> slots dispon<EFBFBD>veis
|
||||
lblNoAvailableSlots=Não há slots disponíveis
|
||||
|
||||
|
||||
@@ -1354,6 +1354,7 @@ lblLibrary=牌库
|
||||
lblGraveyard=坟场
|
||||
lblAssignSectorCreature=将{0}分配给一部分
|
||||
lblChooseSectorEffect=选择一部分
|
||||
lblChooseRollIgnore=Choose a roll to ignore
|
||||
lblTop=顶
|
||||
lblBottom=底
|
||||
lblNColorManaFromCard={2}产{0}个{1}法术力
|
||||
@@ -2046,8 +2047,10 @@ lblDoyouWantShuffleTheLibrary=你想要洗这个牌库吗?
|
||||
lblDoYouWantRepeatProcessAgain=你是否想再次重复这个过程?
|
||||
#RevealHandEffect.java
|
||||
lblDoYouWantRevealYourHand=你想展示你的手牌吗?
|
||||
#RollPlanarDiceEffect.java
|
||||
#RollDiceEffect.java
|
||||
lblPlayerRolledResult={0}掷骰结果为{1}
|
||||
#RollPlanarDiceEffect.java
|
||||
lblPlanarDiceResult=Planar dice result: {0}
|
||||
#SacrificeEffect.java
|
||||
lblDoYouWantPayEcho=你想支付返响费用
|
||||
lblPayEcho=支付返响费用
|
||||
@@ -2946,5 +2949,5 @@ lblExitToWoldMap=退出世界地图?
|
||||
lblStartArena=您想进入竞技场吗?
|
||||
lblWouldYouLikeDestroy=您想销毁{0}吗?
|
||||
lblAdventureDescription=冒险模式是您探索山达尔(Shandalar)不断变化的景观,以及决斗生物获得黄金,碎片,设备和新卡片,使其成为最好的,并收集所有这些!
|
||||
lblEmptyDeck=空牌<EFBFBD> <20> - 空牌<EFBFBD> <20>
|
||||
lblNoAvailableSlots=没有可用的槽位<EFBFBD>
|
||||
lblEmptyDeck=蝛箇<EFBFBD><EFBFBD> <20> - 蝛箇<EFBFBD><EFBFBD> <20>
|
||||
lblNoAvailableSlots=瘝⊥<EFBFBD><EFBFBD>舐<EFBFBD>局雿
|
||||
|
||||
@@ -1391,6 +1391,11 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont
|
||||
return getGui().one(prompt, sectors);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlanarDice choosePDRollToIgnore(List<PlanarDice> rolls) {
|
||||
return getGui().one(Localizer.getInstance().getMessage("lblChooseRollIgnore"), rolls);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object vote(final SpellAbility sa, final String prompt, final List<Object> options,
|
||||
final ListMultimap<Object, Player> votes, Player forPlayer) {
|
||||
|
||||
Reference in New Issue
Block a user