mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-15 18:28:00 +00:00
Merge remote-tracking branch 'upstream/master'
This commit is contained in:
@@ -6,7 +6,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>forge</artifactId>
|
<artifactId>forge</artifactId>
|
||||||
<groupId>forge</groupId>
|
<groupId>forge</groupId>
|
||||||
<version>1.6.35-SNAPSHOT</version>
|
<version>1.6.36-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<artifactId>forge-ai</artifactId>
|
<artifactId>forge-ai</artifactId>
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import java.util.List;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.base.Predicate;
|
import com.google.common.base.Predicate;
|
||||||
|
import com.google.common.base.Predicates;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
|
|
||||||
import forge.card.CardType;
|
import forge.card.CardType;
|
||||||
@@ -23,6 +24,7 @@ import forge.game.player.Player;
|
|||||||
import forge.game.spellability.SpellAbility;
|
import forge.game.spellability.SpellAbility;
|
||||||
import forge.game.spellability.SpellAbilityStackInstance;
|
import forge.game.spellability.SpellAbilityStackInstance;
|
||||||
import forge.game.zone.ZoneType;
|
import forge.game.zone.ZoneType;
|
||||||
|
import forge.util.Aggregates;
|
||||||
import forge.util.TextUtil;
|
import forge.util.TextUtil;
|
||||||
import forge.util.collect.FCollectionView;
|
import forge.util.collect.FCollectionView;
|
||||||
|
|
||||||
@@ -105,6 +107,24 @@ public class AiCostDecision extends CostDecisionMakerBase {
|
|||||||
}
|
}
|
||||||
return PaymentDecision.card(randomSubset);
|
return PaymentDecision.card(randomSubset);
|
||||||
}
|
}
|
||||||
|
else if (type.equals("DifferentNames")) {
|
||||||
|
CardCollection differentNames = new CardCollection();
|
||||||
|
CardCollection discardMe = CardLists.filter(hand, CardPredicates.hasSVar("DiscardMe"));
|
||||||
|
while (c > 0) {
|
||||||
|
Card chosen;
|
||||||
|
if (!discardMe.isEmpty()) {
|
||||||
|
chosen = Aggregates.random(discardMe);
|
||||||
|
discardMe = CardLists.filter(discardMe, Predicates.not(CardPredicates.sharesNameWith(chosen)));
|
||||||
|
} else {
|
||||||
|
final Card worst = ComputerUtilCard.getWorstAI(hand);
|
||||||
|
chosen = worst != null ? worst : Aggregates.random(hand);
|
||||||
|
}
|
||||||
|
differentNames.add(chosen);
|
||||||
|
hand = CardLists.filter(hand, Predicates.not(CardPredicates.sharesNameWith(chosen)));
|
||||||
|
c--;
|
||||||
|
}
|
||||||
|
return PaymentDecision.card(differentNames);
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
final AiController aic = ((PlayerControllerAi)player.getController()).getAi();
|
final AiController aic = ((PlayerControllerAi)player.getController()).getAi();
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>forge</artifactId>
|
<artifactId>forge</artifactId>
|
||||||
<groupId>forge</groupId>
|
<groupId>forge</groupId>
|
||||||
<version>1.6.35-SNAPSHOT</version>
|
<version>1.6.36-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<artifactId>forge-core</artifactId>
|
<artifactId>forge-core</artifactId>
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>forge</artifactId>
|
<artifactId>forge</artifactId>
|
||||||
<groupId>forge</groupId>
|
<groupId>forge</groupId>
|
||||||
<version>1.6.35-SNAPSHOT</version>
|
<version>1.6.36-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<artifactId>forge-game</artifactId>
|
<artifactId>forge-game</artifactId>
|
||||||
|
|||||||
@@ -18,6 +18,9 @@
|
|||||||
package forge.game.cost;
|
package forge.game.cost;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import com.google.common.collect.Sets;
|
||||||
|
|
||||||
import forge.game.ability.AbilityKey;
|
import forge.game.ability.AbilityKey;
|
||||||
import forge.game.card.Card;
|
import forge.game.card.Card;
|
||||||
@@ -83,6 +86,9 @@ public class CostDiscard extends CostPartWithList {
|
|||||||
else if (this.getType().equals("LastDrawn")) {
|
else if (this.getType().equals("LastDrawn")) {
|
||||||
sb.append("the last card you drew this turn");
|
sb.append("the last card you drew this turn");
|
||||||
}
|
}
|
||||||
|
else if (this.getType().equals("DifferentNames")) {
|
||||||
|
sb.append(Cost.convertAmountTypeToWords(i, this.getAmount(), "Card")).append(" with different names");
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
final StringBuilder desc = new StringBuilder();
|
final StringBuilder desc = new StringBuilder();
|
||||||
|
|
||||||
@@ -129,6 +135,13 @@ public class CostDiscard extends CostPartWithList {
|
|||||||
final Card c = payer.getLastDrawnCard();
|
final Card c = payer.getLastDrawnCard();
|
||||||
return handList.contains(c);
|
return handList.contains(c);
|
||||||
}
|
}
|
||||||
|
else if (type.equals("DifferentNames")) {
|
||||||
|
Set<String> cardNames = Sets.newHashSet();
|
||||||
|
for (Card c : handList) {
|
||||||
|
cardNames.add(c.getName());
|
||||||
|
}
|
||||||
|
return amount != null && cardNames.size() >= amount;
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
boolean sameName = false;
|
boolean sameName = false;
|
||||||
if (type.contains("+WithSameName")) {
|
if (type.contains("+WithSameName")) {
|
||||||
|
|||||||
@@ -3009,9 +3009,12 @@ public class Player extends GameEntity implements Comparable<Player> {
|
|||||||
final String name = Lang.getPossesive(companion.getName()) + " Companion Effect";
|
final String name = Lang.getPossesive(companion.getName()) + " Companion Effect";
|
||||||
DetachedCardEffect eff = new DetachedCardEffect(companion, name);
|
DetachedCardEffect eff = new DetachedCardEffect(companion, name);
|
||||||
|
|
||||||
String mayBePlayedAbility = "Mode$ Continuous | EffectZone$ Command | MayPlay$ True | Affected$ Card.YouOwn+EffectSource | AffectedZone$ Command";
|
String addToHandAbility = "Mode$ Continuous | EffectZone$ Command | Affected$ Card.YouOwn+EffectSource | AffectedZone$ Command | AddAbility$ MoveToHand";
|
||||||
eff.addStaticAbility(mayBePlayedAbility);
|
String moveToHand = "ST$ ChangeZone | Cost$ 3 | Defined$ Self | Origin$ Command | Destination$ Hand | ActivationZone$ Command | SpellDescription$ Companion - Put CARDNAME in to your hand";
|
||||||
// Probably remove this effect when the spell is cast via a static trigger
|
eff.setSVar("MoveToHand", moveToHand);
|
||||||
|
eff.addStaticAbility(addToHandAbility);
|
||||||
|
|
||||||
|
// TODO Probably remove this effect when the moved to hand
|
||||||
return eff;
|
return eff;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>forge</artifactId>
|
<artifactId>forge</artifactId>
|
||||||
<groupId>forge</groupId>
|
<groupId>forge</groupId>
|
||||||
<version>1.6.35-SNAPSHOT</version>
|
<version>1.6.36-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<artifactId>forge-gui-android</artifactId>
|
<artifactId>forge-gui-android</artifactId>
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>forge</artifactId>
|
<artifactId>forge</artifactId>
|
||||||
<groupId>forge</groupId>
|
<groupId>forge</groupId>
|
||||||
<version>1.6.35-SNAPSHOT</version>
|
<version>1.6.36-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<artifactId>forge-gui-desktop</artifactId>
|
<artifactId>forge-gui-desktop</artifactId>
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>forge</artifactId>
|
<artifactId>forge</artifactId>
|
||||||
<groupId>forge</groupId>
|
<groupId>forge</groupId>
|
||||||
<version>1.6.35-SNAPSHOT</version>
|
<version>1.6.36-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<artifactId>forge-gui-ios</artifactId>
|
<artifactId>forge-gui-ios</artifactId>
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>forge</artifactId>
|
<artifactId>forge</artifactId>
|
||||||
<groupId>forge</groupId>
|
<groupId>forge</groupId>
|
||||||
<version>1.6.35-SNAPSHOT</version>
|
<version>1.6.36-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<artifactId>forge-gui-mobile-dev</artifactId>
|
<artifactId>forge-gui-mobile-dev</artifactId>
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>forge</artifactId>
|
<artifactId>forge</artifactId>
|
||||||
<groupId>forge</groupId>
|
<groupId>forge</groupId>
|
||||||
<version>1.6.35-SNAPSHOT</version>
|
<version>1.6.36-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<artifactId>forge-gui-mobile</artifactId>
|
<artifactId>forge-gui-mobile</artifactId>
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>forge</artifactId>
|
<artifactId>forge</artifactId>
|
||||||
<groupId>forge</groupId>
|
<groupId>forge</groupId>
|
||||||
<version>1.6.35-SNAPSHOT</version>
|
<version>1.6.36-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<artifactId>forge-gui</artifactId>
|
<artifactId>forge-gui</artifactId>
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
#Add one announcement per line
|
#Add one announcement per line
|
||||||
IKO Release. Sorry Companions and Mutate will take some more time. They are still very much on the radar.
|
M21 Pre-release.
|
||||||
We believe the issue with 1.8.0_211 or greater have been resolved. Let us know if you are still on the latest version and things are better now.
|
Mutate is NOT finished yet. Please be patient.
|
||||||
|
Companion is in, but unfortunately Wizards changed the rules on us. We'll get the new rules in when we can.
|
||||||
[b]Forge now requires Java 8 (or newer). You will not be able to start the game if you are not yet running Java 8.[/b]
|
[b]Forge now requires Java 8 (or newer). You will not be able to start the game if you are not yet running Java 8.[/b]
|
||||||
We have a Discord server for hanging out with Forge devs and other Forge fans. Feel free to [url=https://discord.gg/3v9JCVr]jump on in and say hi[/url]!
|
We have a Discord server for hanging out with Forge devs and other Forge fans. Feel free to [url=https://discord.gg/3v9JCVr]jump on in and say hi[/url]!
|
||||||
@@ -3,6 +3,7 @@ apantel
|
|||||||
Austinio7116
|
Austinio7116
|
||||||
Churrufli
|
Churrufli
|
||||||
DrDev
|
DrDev
|
||||||
|
Elwin
|
||||||
excessum
|
excessum
|
||||||
Flair
|
Flair
|
||||||
Gos
|
Gos
|
||||||
|
|||||||
@@ -86,3 +86,4 @@ Throne of Eldraine, 3/6/ELD, ELD
|
|||||||
Theros: Beyond Death, 3/6/THB, THB
|
Theros: Beyond Death, 3/6/THB, THB
|
||||||
Mystery Booster, 3/6/THB, MB1
|
Mystery Booster, 3/6/THB, MB1
|
||||||
Ikoria: Lair of Behemoths, 3/6/IKO, IKO
|
Ikoria: Lair of Behemoths, 3/6/IKO, IKO
|
||||||
|
Core Set 2021, 3/6/M21, M21
|
||||||
@@ -113,3 +113,4 @@ ELD: 36 Boosters
|
|||||||
THB: 36 Boosters
|
THB: 36 Boosters
|
||||||
MB1: 24 Boosters
|
MB1: 24 Boosters
|
||||||
IKO: 36 Boosters
|
IKO: 36 Boosters
|
||||||
|
M21: 36 Boosters
|
||||||
@@ -78,3 +78,5 @@ THB: 10 Boosters, 40 BasicLands
|
|||||||
#needs to be 20 BasicLands, 20 Foil BasicLands, 1 Arasta of the Endless Web+|THB|3
|
#needs to be 20 BasicLands, 20 Foil BasicLands, 1 Arasta of the Endless Web+|THB|3
|
||||||
IKO: 10 Boosters, 40 BasicLands
|
IKO: 10 Boosters, 40 BasicLands
|
||||||
#needs to be 20 BasicLands, 20 Foil BasicLands, 1 Colossification+|IKO|3
|
#needs to be 20 BasicLands, 20 Foil BasicLands, 1 Colossification+|IKO|3
|
||||||
|
M21: 10 Boosters, 40 BasicLands
|
||||||
|
#needs to be 20 BasicLands, 20 Foil BasicLands, 1 Pack Leader+|M21|3
|
||||||
5
forge-gui/res/cardsfolder/e/eliminate.txt
Normal file
5
forge-gui/res/cardsfolder/e/eliminate.txt
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
Name:Eliminate
|
||||||
|
ManaCost:1 B
|
||||||
|
Types:Instant
|
||||||
|
A:SP$ Destroy | Cost$ 1 B | ValidTgts$ Creature+cmcLE3,Planeswalker+cmcLE3 | TgtPrompt$ Select target creature or planeswalker with converted mana cost 3 or less | SpellDescription$ Destroy target creature or planeswalker with converted mana cost 3 or less.
|
||||||
|
Oracle:Destroy target creature or planeswalker with converted mana cost 3 or less.
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user