- Adding Arboria (Card remembers which players can be attacked, instead of looking things up through the engine)

This commit is contained in:
Sol
2015-09-05 17:34:20 +00:00
parent cee7a106af
commit 87692b9a84
7 changed files with 57 additions and 0 deletions

2
.gitattributes vendored
View File

@@ -705,6 +705,7 @@ forge-game/src/main/java/forge/game/trigger/TriggerSpellAbilityCast.java svneol=
forge-game/src/main/java/forge/game/trigger/TriggerTaps.java svneol=native#text/plain
forge-game/src/main/java/forge/game/trigger/TriggerTapsForMana.java svneol=native#text/plain
forge-game/src/main/java/forge/game/trigger/TriggerTransformed.java -text
forge-game/src/main/java/forge/game/trigger/TriggerTurnBegin.java -text
forge-game/src/main/java/forge/game/trigger/TriggerTurnFaceUp.java svneol=native#text/plain
forge-game/src/main/java/forge/game/trigger/TriggerType.java -text
forge-game/src/main/java/forge/game/trigger/TriggerUnequip.java svneol=native#text/plain
@@ -1892,6 +1893,7 @@ forge-gui/res/cardsfolder/a/arbiter_of_knollridge.txt svneol=native#text/plain
forge-gui/res/cardsfolder/a/arbiter_of_the_ideal.txt -text
forge-gui/res/cardsfolder/a/arbor_colossus.txt -text
forge-gui/res/cardsfolder/a/arbor_elf.txt svneol=native#text/plain
forge-gui/res/cardsfolder/a/arboria.txt -text
forge-gui/res/cardsfolder/a/arc_blade.txt svneol=native#text/plain
forge-gui/res/cardsfolder/a/arc_lightning.txt svneol=native#text/plain
forge-gui/res/cardsfolder/a/arc_mage.txt svneol=native#text/plain

View File

@@ -5,6 +5,7 @@ import forge.game.Game;
import forge.game.ability.AbilityUtils;
import forge.game.ability.SpellAbilityEffect;
import forge.game.card.Card;
import forge.game.player.Player;
import forge.game.spellability.SpellAbility;
public class CleanUpEffect extends SpellAbilityEffect {
@@ -26,6 +27,11 @@ public class CleanUpEffect extends SpellAbilityEffect {
source.removeRemembered(card);
}
}
if (sa.hasParam("ForgetDefinedPlayer")) {
for (final Player player : AbilityUtils.getDefinedPlayers(source, sa.getParam("ForgetDefinedPlayer"), sa)) {
source.removeRemembered(player);
}
}
if (sa.hasParam("ClearImprinted")) {
source.clearImprintedCards();
game.getCardState(source).clearImprintedCards();

View File

@@ -443,6 +443,10 @@ public class PhaseHandler implements java.io.Serializable {
bPreventCombatDamageThisTurn = false;
if (!bRepeatCleanup) {
setPlayerTurn(handleNextTurn());
// "Trigger" for begin turn to get around a phase skipping
final HashMap<String, Object> runParams = new HashMap<String, Object>();
runParams.put("Player", playerTurn);
game.getTriggerHandler().runTrigger(TriggerType.TurnBegin, runParams, false);
}
planarDiceRolledthisTurn = 0;
// Play the End Turn sound

View File

@@ -1825,6 +1825,10 @@ public class Player extends GameEntity implements Comparable<Player> {
if (equals(sourceController) || isOpponentOf(sourceController)) {
return false;
}
} else if (property.equals("Active")) {
if (!equals(game.getPhaseHandler().getPlayerTurn())) {
return false;
}
} else if (property.equals("NonActive")) {
if (equals(game.getPhaseHandler().getPlayerTurn())) {
return false;

View File

@@ -0,0 +1,27 @@
package forge.game.trigger;
import forge.game.card.Card;
import forge.game.spellability.SpellAbility;
// Turn Begin isn't a "real" trigger, but is useful for Advanced Scripting Techniques
public class TriggerTurnBegin extends Trigger {
public TriggerTurnBegin(final java.util.Map<String, String> params, final Card host, final boolean intrinsic) {
super(params, host, intrinsic);
}
@Override
public final boolean performTest(final java.util.Map<String, Object> runParams2) {
if (this.mapParams.containsKey("ValidPlayer")) {
if (!matchesValid(runParams2.get("Player"), this.mapParams.get("ValidPlayer").split(","),
this.getHostCard())) {
return false;
}
}
return true;
}
@Override
public final void setTriggeringObjects(final SpellAbility sa) {
sa.setTriggeringObject("Player", this.getRunParams().get("Player"));
}
}

View File

@@ -69,6 +69,7 @@ public enum TriggerType {
Taps(TriggerTaps.class),
TapsForMana(TriggerTapsForMana.class),
Transformed(TriggerTransformed.class),
TurnBegin(TriggerTurnBegin.class),
TurnFaceUp(TriggerTurnFaceUp.class),
Unequip(TriggerUnequip.class),
Untaps(TriggerUntaps.class),

View File

@@ -0,0 +1,13 @@
Name:Arboria
ManaCost:2 G G
Types:World Enchantment
# Sorry for the double negative. Players can only be attacked if they did "something" on their last turn
S:Mode$ CantAttack | ValidCard$ Creature | Target$ Player.IsNotRemembered | Description$ Creatures can't attack a player unless that player cast a spell or put a nontoken permanent onto the battlefield during his or her last turn.
T:Mode$ SpellCast | ValidCard$ Card | ValidActivatingPlayer$ Player.Active+IsNotRemembered | Static$ True | Execute$ RememberCaster
SVar:RememberCaster:DB$ Pump | Defined$ TriggeredCardController | RememberObjects$ TriggeredCardController
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.ActivePlayerCtrl+nonToken | Static$ True | Execute$ RememberController
SVar:RememberController:DB$ Pump | Defined$ TriggeredCardController | RememberObjects$ TriggeredCardController
T:Mode$ TurnBegin | ValidPlayer$ Player | Execute$ ClearActivePlayer | Static$ True
SVar:ClearActivePlayer:DB$ Cleanup | ForgetDefinedPlayer$ ActivePlayer
SVar:Picture:http://www.wizards.com/global/images/magic/general/arboria.jpg
Oracle:Creatures can't attack a player unless that player cast a spell or put a nontoken permanent onto the battlefield during his or her last turn.