mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-15 02:08:00 +00:00
Merge branch 'master' of git.cardforge.org:core-developers/forge
This commit is contained in:
@@ -18,6 +18,7 @@ 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.CardPredicates.Presets;
|
||||
import forge.game.card.CounterType;
|
||||
import forge.game.combat.Combat;
|
||||
@@ -230,6 +231,13 @@ public class ChooseCardAi extends SpellAbilityAi {
|
||||
Collections.reverse(creats);
|
||||
choice = creats.get(0);
|
||||
}
|
||||
} else if ("NegativePowerFirst".equals(logic)) {
|
||||
Card lowest = Aggregates.itemWithMin(options, CardPredicates.Accessors.fnGetNetPower);
|
||||
if (lowest.getNetPower() <= 0) {
|
||||
choice = lowest;
|
||||
} else {
|
||||
choice = ComputerUtilCard.getBestCreatureAI(options);
|
||||
}
|
||||
} else if ("TangleWire".equals(logic)) {
|
||||
CardCollectionView betterList = CardLists.filter(options, new Predicate<Card>() {
|
||||
@Override
|
||||
|
||||
@@ -9,8 +9,10 @@ import forge.game.card.CardCollection;
|
||||
import forge.game.card.CardCollectionView;
|
||||
import forge.game.card.CardFactoryUtil;
|
||||
import forge.game.card.CardLists;
|
||||
import forge.game.card.CardPredicates;
|
||||
import forge.game.card.CardPredicates.Presets;
|
||||
import forge.game.player.Player;
|
||||
import forge.game.player.PlayerActionConfirmMode;
|
||||
import forge.game.spellability.SpellAbility;
|
||||
import forge.game.spellability.TargetRestrictions;
|
||||
import forge.game.zone.ZoneType;
|
||||
@@ -87,6 +89,32 @@ public class ChooseCardEffect extends SpellAbilityEffect {
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (sa.hasParam("WithTotalPower")){
|
||||
final int totP = AbilityUtils.calculateAmount(host, sa.getParam("WithTotalPower"), sa);
|
||||
CardCollection creature = new CardCollection(p.getCreaturesInPlay());
|
||||
CardCollection chosenPool = new CardCollection();
|
||||
int chosenP = 0;
|
||||
while (!creature.isEmpty()) {
|
||||
if (Aggregates.min(creature, CardPredicates.Accessors.fnGetNetPower) + chosenP > totP) {
|
||||
break;
|
||||
}
|
||||
Card c = p.getController().chooseSingleEntityForEffect(creature, sa,
|
||||
"Select a card\r\n(Selected:" + chosenPool + ")\r\n" + "(Total Power: " + chosenP + ")", true);
|
||||
if (c == null) {
|
||||
if (p.getController().confirmAction(sa, PlayerActionConfirmMode.OptionalChoose, "Cancel Choose?")) {
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
chosenP += c.getNetPower();
|
||||
if (chosenP <= totP) {
|
||||
chosenPool.add(c);
|
||||
creature.remove(c);
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
chosen.addAll(chosenPool);
|
||||
} else if ((tgt == null) || p.canBeTargetedBy(sa)) {
|
||||
if (sa.hasParam("AtRandom") && !choices.isEmpty()) {
|
||||
Aggregates.random(choices, validAmount, chosen);
|
||||
|
||||
@@ -12,6 +12,7 @@ public enum PlayerActionConfirmMode {
|
||||
ChangeZoneFromAltSource,
|
||||
ChangeZoneGeneral,
|
||||
BidLife,
|
||||
OptionalChoose,
|
||||
Tribute;
|
||||
// Ripple;
|
||||
|
||||
|
||||
8
forge-gui/res/cardsfolder/upcoming/awakened_amalgam.txt
Normal file
8
forge-gui/res/cardsfolder/upcoming/awakened_amalgam.txt
Normal file
@@ -0,0 +1,8 @@
|
||||
Name:Awakened Amalgam
|
||||
ManaCost:4
|
||||
Types:Artifact Creature Golem
|
||||
PT:*/*
|
||||
S:Mode$ Continuous | EffectZone$ All | CharacteristicDefining$ True | SetPower$ X | SetToughness$ X | Description$ CARDNAME's power and toughness are each equal to the number of differently named lands you control.
|
||||
SVar:X:Count$DifferentCardNames_Land.YouCtrl+inZoneBattlefield
|
||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/awakened_amalgam.jpg
|
||||
Oracle:Awakened Amalgam's power and toughness are each equal to the number of differently named lands you control.
|
||||
10
forge-gui/res/cardsfolder/upcoming/slaughter_the_strong.txt
Normal file
10
forge-gui/res/cardsfolder/upcoming/slaughter_the_strong.txt
Normal file
@@ -0,0 +1,10 @@
|
||||
Name:Slaughter the Strong
|
||||
ManaCost:1 W W
|
||||
Types:Sorcery
|
||||
A:SP$ RepeatEach | Cost$ 1 W W | RepeatPlayers$ Player | RepeatSubAbility$ ChooseCrtr | SubAbility$ SacAllOthers | SpellDescription$ Each player chooses any number of creatures he or she controls with total power 4 or less, then sacrifices all other creatures he or she controls.
|
||||
SVar:ChooseCrtr:DB$ ChooseCard | Defined$ Player.IsRemembered | Choices$ Creature.RememberedPlayerCtrl | WithTotalPower$ 4 | RememberChosen$ True | AILogic$ NegativePowerFirst
|
||||
SVar:SacAllOthers:DB$ SacrificeAll | ValidCards$ Creature.IsNotRemembered | SubAbility$ DBCleanup
|
||||
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
||||
SVar:RemAIDeck:True
|
||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/slaughter_the_strong.jpg
|
||||
Oracle:Each player chooses any number of creatures he or she controls with total power 4 or less, then sacrifices all other creatures he or she controls.
|
||||
Reference in New Issue
Block a user