mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 12:18:00 +00:00
- Added Leonin Arbiter
This commit is contained in:
1
.gitattributes
vendored
1
.gitattributes
vendored
@@ -7123,6 +7123,7 @@ forge-gui/res/cardsfolder/l/legion_loyalist.txt -text
|
|||||||
forge-gui/res/cardsfolder/l/legions_initiative.txt -text
|
forge-gui/res/cardsfolder/l/legions_initiative.txt -text
|
||||||
forge-gui/res/cardsfolder/l/legions_of_lim_dul.txt svneol=native#text/plain
|
forge-gui/res/cardsfolder/l/legions_of_lim_dul.txt svneol=native#text/plain
|
||||||
forge-gui/res/cardsfolder/l/leonin_abunas.txt svneol=native#text/plain
|
forge-gui/res/cardsfolder/l/leonin_abunas.txt svneol=native#text/plain
|
||||||
|
forge-gui/res/cardsfolder/l/leonin_arbiter.txt -text
|
||||||
forge-gui/res/cardsfolder/l/leonin_armorguard.txt svneol=native#text/plain
|
forge-gui/res/cardsfolder/l/leonin_armorguard.txt svneol=native#text/plain
|
||||||
forge-gui/res/cardsfolder/l/leonin_battlemage.txt svneol=native#text/plain
|
forge-gui/res/cardsfolder/l/leonin_battlemage.txt svneol=native#text/plain
|
||||||
forge-gui/res/cardsfolder/l/leonin_bladetrap.txt svneol=native#text/plain
|
forge-gui/res/cardsfolder/l/leonin_bladetrap.txt svneol=native#text/plain
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ import forge.game.card.Card;
|
|||||||
import forge.game.card.CardUtil;
|
import forge.game.card.CardUtil;
|
||||||
import forge.game.player.Player;
|
import forge.game.player.Player;
|
||||||
import forge.game.replacement.ReplacementEffect;
|
import forge.game.replacement.ReplacementEffect;
|
||||||
|
import forge.game.spellability.AbilityStatic;
|
||||||
import forge.game.spellability.SpellAbility;
|
import forge.game.spellability.SpellAbility;
|
||||||
import forge.game.staticability.StaticAbility;
|
import forge.game.staticability.StaticAbility;
|
||||||
|
|
||||||
@@ -150,6 +151,14 @@ public class StaticEffects {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (params.containsKey("IgnoreEffectCost")) {
|
||||||
|
for (final SpellAbility s : se.getSource().getSpellAbilities()) {
|
||||||
|
if (s instanceof AbilityStatic && s.isTemporary()) {
|
||||||
|
se.getSource().removeSpellAbility(s);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// modify players
|
// modify players
|
||||||
for (final Player p : affectedPlayers) {
|
for (final Player p : affectedPlayers) {
|
||||||
p.setUnlimitedHandSize(false);
|
p.setUnlimitedHandSize(false);
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ import forge.game.spellability.SpellAbility;
|
|||||||
import forge.game.zone.ZoneType;
|
import forge.game.zone.ZoneType;
|
||||||
import forge.util.Expressions;
|
import forge.util.Expressions;
|
||||||
|
|
||||||
|
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 java.util.Map;
|
||||||
@@ -40,6 +41,8 @@ import java.util.Map;
|
|||||||
public class StaticAbility extends CardTraitBase {
|
public class StaticAbility extends CardTraitBase {
|
||||||
|
|
||||||
private int layer = 0;
|
private int layer = 0;
|
||||||
|
private List<Card> ignoreEffectCards = new ArrayList<Card>();
|
||||||
|
private List<Player> ignoreEffectPlayers = new ArrayList<Player>();
|
||||||
|
|
||||||
// *******************************************************
|
// *******************************************************
|
||||||
|
|
||||||
@@ -568,6 +571,38 @@ public class StaticAbility extends CardTraitBase {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the ignoreEffectCards
|
||||||
|
*/
|
||||||
|
public List<Card> getIgnoreEffectCards() {
|
||||||
|
return ignoreEffectCards;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param c the ignoreEffectCards to set
|
||||||
|
*/
|
||||||
|
public void setIgnoreEffectCards(List<Card> cards) {
|
||||||
|
this.ignoreEffectCards = cards;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the ignoreEffectPlayers
|
||||||
|
*/
|
||||||
|
public List<Player> getIgnoreEffectPlayers() {
|
||||||
|
return ignoreEffectPlayers;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param p the ignoreEffectPlayers to add
|
||||||
|
*/
|
||||||
|
public void addIgnoreEffectPlayers(Player p) {
|
||||||
|
this.ignoreEffectPlayers.add(p);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void clearIgnoreEffects() {
|
||||||
|
this.ignoreEffectPlayers.clear();
|
||||||
|
this.ignoreEffectCards.clear();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the layer
|
* @return the layer
|
||||||
|
|||||||
@@ -18,6 +18,8 @@
|
|||||||
package forge.game.staticability;
|
package forge.game.staticability;
|
||||||
|
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
|
|
||||||
|
import forge.GameCommand;
|
||||||
import forge.card.CardType;
|
import forge.card.CardType;
|
||||||
import forge.card.ColorSet;
|
import forge.card.ColorSet;
|
||||||
import forge.card.mana.ManaCostShard;
|
import forge.card.mana.ManaCostShard;
|
||||||
@@ -28,10 +30,12 @@ import forge.game.card.Card;
|
|||||||
import forge.game.card.CardFactoryUtil;
|
import forge.game.card.CardFactoryUtil;
|
||||||
import forge.game.card.CardLists;
|
import forge.game.card.CardLists;
|
||||||
import forge.game.card.CardUtil;
|
import forge.game.card.CardUtil;
|
||||||
|
import forge.game.cost.Cost;
|
||||||
import forge.game.player.Player;
|
import forge.game.player.Player;
|
||||||
import forge.game.replacement.ReplacementEffect;
|
import forge.game.replacement.ReplacementEffect;
|
||||||
import forge.game.replacement.ReplacementHandler;
|
import forge.game.replacement.ReplacementHandler;
|
||||||
import forge.game.spellability.AbilityActivated;
|
import forge.game.spellability.AbilityActivated;
|
||||||
|
import forge.game.spellability.AbilityStatic;
|
||||||
import forge.game.spellability.SpellAbility;
|
import forge.game.spellability.SpellAbility;
|
||||||
import forge.game.trigger.Trigger;
|
import forge.game.trigger.Trigger;
|
||||||
import forge.game.trigger.TriggerHandler;
|
import forge.game.trigger.TriggerHandler;
|
||||||
@@ -308,6 +312,11 @@ public class StaticAbilityContinuous {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (params.containsKey("IgnoreEffectCost")) {
|
||||||
|
String cost = params.get("IgnoreEffectCost");
|
||||||
|
buildIgnorEffectAbility(stAb, cost, affectedPlayers, affectedCards);
|
||||||
|
}
|
||||||
|
|
||||||
// modify players
|
// modify players
|
||||||
for (final Player p : affectedPlayers) {
|
for (final Player p : affectedPlayers) {
|
||||||
|
|
||||||
@@ -516,6 +525,44 @@ public class StaticAbilityContinuous {
|
|||||||
return affectedCards;
|
return affectedCards;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void buildIgnorEffectAbility(final StaticAbility stAb, final String costString, final List<Player> players, final List<Card> cards) {
|
||||||
|
final List<Player> validActivator = new ArrayList<Player>(players);
|
||||||
|
for (final Card c : cards) {
|
||||||
|
validActivator.add(c.getController());
|
||||||
|
}
|
||||||
|
final Card sourceCard = stAb.getHostCard();
|
||||||
|
Cost cost = new Cost(costString, true);
|
||||||
|
final AbilityStatic addIgnore = new AbilityStatic(sourceCard, cost, null) {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void resolve() {
|
||||||
|
stAb.addIgnoreEffectPlayers(this.getActivatingPlayer());
|
||||||
|
stAb.setIgnoreEffectCards(cards);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canPlay() {
|
||||||
|
return validActivator.contains(this.getActivatingPlayer())
|
||||||
|
&& sourceCard.isInPlay();
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
addIgnore.setTemporary(true);
|
||||||
|
addIgnore.setIntrinsic(false);
|
||||||
|
addIgnore.setDescription(cost + " Ignore the effect until end of turn.");
|
||||||
|
sourceCard.addSpellAbility(addIgnore);
|
||||||
|
|
||||||
|
final GameCommand removeIgnore = new GameCommand() {
|
||||||
|
private static final long serialVersionUID = -5415775215053216360L;
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
stAb.clearIgnoreEffects();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
sourceCard.getGame().getEndOfTurn().addUntil(removeIgnore);
|
||||||
|
sourceCard.addLeavesPlayCommand(removeIgnore);
|
||||||
|
}
|
||||||
|
|
||||||
private static ArrayList<Player> getAffectedPlayers(final StaticAbility stAb) {
|
private static ArrayList<Player> getAffectedPlayers(final StaticAbility stAb) {
|
||||||
final Map<String, String> params = stAb.getMapParams();
|
final Map<String, String> params = stAb.getMapParams();
|
||||||
final Card hostCard = stAb.getHostCard();
|
final Card hostCard = stAb.getHostCard();
|
||||||
@@ -534,6 +581,7 @@ public class StaticAbilityContinuous {
|
|||||||
players.add(p);
|
players.add(p);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
players.removeAll(stAb.getIgnoreEffectPlayers());
|
||||||
|
|
||||||
return players;
|
return players;
|
||||||
}
|
}
|
||||||
@@ -573,7 +621,7 @@ public class StaticAbilityContinuous {
|
|||||||
if (params.containsKey("Affected")) {
|
if (params.containsKey("Affected")) {
|
||||||
affectedCards = CardLists.getValidCards(affectedCards, params.get("Affected").split(","), controller, hostCard);
|
affectedCards = CardLists.getValidCards(affectedCards, params.get("Affected").split(","), controller, hostCard);
|
||||||
}
|
}
|
||||||
|
affectedCards.removeAll(stAb.getIgnoreEffectCards());
|
||||||
return affectedCards;
|
return affectedCards;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
9
forge-gui/res/cardsfolder/l/leonin_arbiter.txt
Normal file
9
forge-gui/res/cardsfolder/l/leonin_arbiter.txt
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
Name:Leonin Arbiter
|
||||||
|
ManaCost:1 W
|
||||||
|
Types:Creature Cat Cleric
|
||||||
|
PT:2/2
|
||||||
|
S:Mode$ Continuous | Affected$ Player | AddKeyword$ CantSearchLibrary | IgnoreEffectCost$ 2 | Description$ Players can't search libraries. Any player may pay {2} for that player to ignore this effect until end of turn.
|
||||||
|
SVar:RemAIDeck:True
|
||||||
|
SVar:RemRandomDeck:True
|
||||||
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/leonin_arbiter.jpg
|
||||||
|
Oracle:Players can't search libraries. Any player may pay {2} for that player to ignore this effect until end of turn.
|
||||||
Reference in New Issue
Block a user