mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-17 11:18:01 +00:00
- Converted Drop of Honey and Porphyry Nodes to script
This commit is contained in:
@@ -1,7 +1,9 @@
|
|||||||
Name:Drop of Honey
|
Name:Drop of Honey
|
||||||
ManaCost:G
|
ManaCost:G
|
||||||
Types:Enchantment
|
Types:Enchantment
|
||||||
Text:At the beginning of your upkeep, destroy the creature with the least power. It can't be regenerated. If two or more creatures are tied for least power, you choose one of them.
|
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigChooseOneToDestroy | TriggerDescription$ At the beginning of your upkeep, destroy the creature with the least power. It can't be regenerated. If two or more creatures are tied for least power, you choose one of them.
|
||||||
|
SVar:TrigChooseOneToDestroy:AB$ ChooseCard | Cost$ 0 | Choices$ Creature.leastPower+withoutIndestructible | Mandatory$ True | SubAbility$ DBDestroy
|
||||||
|
SVar:DBDestroy:DB$ Destroy | Defined$ ChosenCard | NoRegen$ True
|
||||||
T:Mode$ Always | TriggerZones$ Battlefield | IsPresent$ Creature | PresentCompare$ EQ0 | Execute$ TrigSac | TriggerDescription$ When there are no creatures on the battlefield, sacrifice CARDNAME.
|
T:Mode$ Always | TriggerZones$ Battlefield | IsPresent$ Creature | PresentCompare$ EQ0 | Execute$ TrigSac | TriggerDescription$ When there are no creatures on the battlefield, sacrifice CARDNAME.
|
||||||
SVar:TrigSac:AB$Sacrifice | Cost$ 0 | Defined$ Self
|
SVar:TrigSac:AB$Sacrifice | Cost$ 0 | Defined$ Self
|
||||||
SVar:NeedsToPlay:Creature.YouDontCtrl+leastPower
|
SVar:NeedsToPlay:Creature.YouDontCtrl+leastPower
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
Name:Porphyry Nodes
|
Name:Porphyry Nodes
|
||||||
ManaCost:W
|
ManaCost:W
|
||||||
Types:Enchantment
|
Types:Enchantment
|
||||||
Text:At the beginning of your upkeep, destroy the creature with the least power. It can't be regenerated. If two or more creatures are tied for least power, you choose one of them.
|
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigChooseOneToDestroy | TriggerDescription$ At the beginning of your upkeep, destroy the creature with the least power. It can't be regenerated. If two or more creatures are tied for least power, you choose one of them.
|
||||||
|
SVar:TrigChooseOneToDestroy:AB$ ChooseCard | Cost$ 0 | Choices$ Creature.leastPower+withoutIndestructible | Mandatory$ True | SubAbility$ DBDestroy
|
||||||
|
SVar:DBDestroy:DB$ Destroy | Defined$ ChosenCard | NoRegen$ True
|
||||||
T:Mode$ Always | TriggerZones$ Battlefield | IsPresent$ Creature | PresentCompare$ EQ0 | Execute$ TrigSac | TriggerDescription$ When there are no creatures on the battlefield, sacrifice CARDNAME.
|
T:Mode$ Always | TriggerZones$ Battlefield | IsPresent$ Creature | PresentCompare$ EQ0 | Execute$ TrigSac | TriggerDescription$ When there are no creatures on the battlefield, sacrifice CARDNAME.
|
||||||
SVar:TrigSac:AB$Sacrifice | Cost$ 0 | Defined$ Self
|
SVar:TrigSac:AB$Sacrifice | Cost$ 0 | Defined$ Self
|
||||||
SVar:NeedsToPlay:Creature.YouDontCtrl+leastPower
|
SVar:NeedsToPlay:Creature.YouDontCtrl+leastPower
|
||||||
|
|||||||
@@ -649,7 +649,7 @@ public class AiController {
|
|||||||
// Abilities without api may also use this routine, However they should provide a unique mode value
|
// Abilities without api may also use this routine, However they should provide a unique mode value
|
||||||
if ( null == api ) {
|
if ( null == api ) {
|
||||||
if( mode != null ) switch (mode) {
|
if( mode != null ) switch (mode) {
|
||||||
case BraidOfFire: return true;
|
// case BraidOfFire: return true;
|
||||||
// case Ripple: return true;
|
// case Ripple: return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -20,27 +20,23 @@ package forge.game.phase;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
|
||||||
import com.google.common.base.Predicate;
|
import com.google.common.base.Predicate;
|
||||||
|
|
||||||
import forge.Card;
|
import forge.Card;
|
||||||
import forge.CardLists;
|
import forge.CardLists;
|
||||||
import forge.CardPredicates;
|
import forge.CardPredicates;
|
||||||
import forge.Singletons;
|
import forge.Singletons;
|
||||||
import forge.CardPredicates.Presets;
|
|
||||||
import forge.CounterType;
|
import forge.CounterType;
|
||||||
import forge.card.ability.AbilityFactory;
|
import forge.card.ability.AbilityFactory;
|
||||||
import forge.card.cardfactory.CardFactoryUtil;
|
import forge.card.cardfactory.CardFactoryUtil;
|
||||||
import forge.card.cost.Cost;
|
import forge.card.cost.Cost;
|
||||||
import forge.card.mana.ManaCost;
|
import forge.card.mana.ManaCost;
|
||||||
import forge.card.spellability.Ability;
|
import forge.card.spellability.Ability;
|
||||||
import forge.card.spellability.AbilityManaPart;
|
|
||||||
import forge.card.spellability.SpellAbility;
|
import forge.card.spellability.SpellAbility;
|
||||||
import forge.card.trigger.TriggerType;
|
import forge.card.trigger.TriggerType;
|
||||||
import forge.game.Game;
|
import forge.game.Game;
|
||||||
import forge.game.ai.ComputerUtilCard;
|
import forge.game.ai.ComputerUtilCard;
|
||||||
import forge.game.player.Player;
|
import forge.game.player.Player;
|
||||||
import forge.game.player.PlayerActionConfirmMode;
|
|
||||||
import forge.game.player.PlayerController.ManaPaymentPurpose;
|
import forge.game.player.PlayerController.ManaPaymentPurpose;
|
||||||
import forge.game.zone.ZoneType;
|
import forge.game.zone.ZoneType;
|
||||||
import forge.gui.input.InputSelectCards;
|
import forge.gui.input.InputSelectCards;
|
||||||
@@ -83,7 +79,6 @@ public class Upkeep extends Phase {
|
|||||||
Upkeep.upkeepUpkeepCost(game); // sacrifice unless upkeep cost is paid
|
Upkeep.upkeepUpkeepCost(game); // sacrifice unless upkeep cost is paid
|
||||||
Upkeep.upkeepEcho(game);
|
Upkeep.upkeepEcho(game);
|
||||||
|
|
||||||
Upkeep.upkeepDropOfHoney(game);
|
|
||||||
Upkeep.upkeepTangleWire(game);
|
Upkeep.upkeepTangleWire(game);
|
||||||
|
|
||||||
game.getStack().unfreezeStack();
|
game.getStack().unfreezeStack();
|
||||||
@@ -194,55 +189,6 @@ public class Upkeep extends Phase {
|
|||||||
} // for
|
} // for
|
||||||
} // upkeepCost
|
} // upkeepCost
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>
|
|
||||||
* upkeepDropOfHoney.
|
|
||||||
* </p>
|
|
||||||
*/
|
|
||||||
private static void upkeepDropOfHoney(final Game game) {
|
|
||||||
/*
|
|
||||||
* At the beginning of your upkeep, destroy the creature with the least
|
|
||||||
* power. It can't be regenerated. If two or more creatures are tied for
|
|
||||||
* least power, you choose one of them.
|
|
||||||
*/
|
|
||||||
final Player player = game.getPhaseHandler().getPlayerTurn();
|
|
||||||
final List<Card> drops = player.getCardsIn(ZoneType.Battlefield, "Drop of Honey");
|
|
||||||
drops.addAll(player.getCardsIn(ZoneType.Battlefield, "Porphyry Nodes"));
|
|
||||||
final List<Card> cards = drops;
|
|
||||||
|
|
||||||
for (int i = 0; i < cards.size(); i++) {
|
|
||||||
final Card c = cards.get(i);
|
|
||||||
|
|
||||||
final Ability ability = new Ability(c, ManaCost.NO_COST) {
|
|
||||||
@Override
|
|
||||||
public void resolve() {
|
|
||||||
final List<Card> creatures = CardLists.filter(game.getCardsIn(ZoneType.Battlefield), Presets.CREATURES);
|
|
||||||
if (creatures.size() > 0) {
|
|
||||||
CardLists.sortByPowerAsc(creatures);
|
|
||||||
final List<Card> lowest = new ArrayList<Card>();
|
|
||||||
final int power = creatures.get(0).getNetAttack();
|
|
||||||
for(Card c : creatures) {
|
|
||||||
if (c.getNetAttack() > power) break;
|
|
||||||
lowest.add(c);
|
|
||||||
}
|
|
||||||
|
|
||||||
List<Card> toSac = player.getController().choosePermanentsToDestroy(this, 1, 1, lowest, "Select creature with power: " + power + " to destroy.");
|
|
||||||
game.getAction().destroyNoRegeneration(toSac.get(0), this);
|
|
||||||
}
|
|
||||||
} // resolve
|
|
||||||
}; // Ability
|
|
||||||
|
|
||||||
final StringBuilder sb = new StringBuilder();
|
|
||||||
sb.append(c.getName()).append(" - destroy 1 creature with lowest power.");
|
|
||||||
ability.setActivatingPlayer(c.getController());
|
|
||||||
ability.setStackDescription(sb.toString());
|
|
||||||
ability.setDescription(sb.toString());
|
|
||||||
|
|
||||||
game.getStack().addSimultaneousStackEntry(ability);
|
|
||||||
|
|
||||||
} // end for
|
|
||||||
} // upkeepDropOfHoney()
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
* upkeepTangleWire.
|
* upkeepTangleWire.
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ package forge.game.player;
|
|||||||
*/
|
*/
|
||||||
public enum PlayerActionConfirmMode {
|
public enum PlayerActionConfirmMode {
|
||||||
Random,
|
Random,
|
||||||
BraidOfFire,
|
// BraidOfFire,
|
||||||
FromOpeningHand;
|
FromOpeningHand;
|
||||||
// Ripple;
|
// Ripple;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user