mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 12:48:00 +00:00
Add Flash Foliage.
This commit is contained in:
1
.gitattributes
vendored
1
.gitattributes
vendored
@@ -5595,6 +5595,7 @@ forge-gui/res/cardsfolder/f/flash.txt -text
|
|||||||
forge-gui/res/cardsfolder/f/flash_conscription.txt -text svneol=unset#text/plain
|
forge-gui/res/cardsfolder/f/flash_conscription.txt -text svneol=unset#text/plain
|
||||||
forge-gui/res/cardsfolder/f/flash_counter.txt svneol=native#text/plain
|
forge-gui/res/cardsfolder/f/flash_counter.txt svneol=native#text/plain
|
||||||
forge-gui/res/cardsfolder/f/flash_flood.txt svneol=native#text/plain
|
forge-gui/res/cardsfolder/f/flash_flood.txt svneol=native#text/plain
|
||||||
|
forge-gui/res/cardsfolder/f/flash_foliage.txt -text
|
||||||
forge-gui/res/cardsfolder/f/flash_of_defiance.txt svneol=native#text/plain
|
forge-gui/res/cardsfolder/f/flash_of_defiance.txt svneol=native#text/plain
|
||||||
forge-gui/res/cardsfolder/f/flash_of_insight.txt -text
|
forge-gui/res/cardsfolder/f/flash_of_insight.txt -text
|
||||||
forge-gui/res/cardsfolder/f/flashfires.txt svneol=native#text/plain
|
forge-gui/res/cardsfolder/f/flashfires.txt svneol=native#text/plain
|
||||||
|
|||||||
@@ -17,6 +17,12 @@
|
|||||||
*/
|
*/
|
||||||
package forge.game.ability.effects;
|
package forge.game.ability.effects;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableMap.Builder;
|
||||||
import com.google.common.collect.Iterables;
|
import com.google.common.collect.Iterables;
|
||||||
|
|
||||||
import forge.game.Game;
|
import forge.game.Game;
|
||||||
@@ -33,14 +39,11 @@ import forge.game.player.Player;
|
|||||||
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;
|
||||||
|
import forge.game.trigger.TriggerType;
|
||||||
import forge.item.PaperToken;
|
import forge.item.PaperToken;
|
||||||
import forge.util.FCollectionView;
|
import forge.util.FCollectionView;
|
||||||
import forge.util.MyRandom;
|
import forge.util.MyRandom;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class TokenEffect extends SpellAbilityEffect {
|
public class TokenEffect extends SpellAbilityEffect {
|
||||||
|
|
||||||
private String tokenOwner;
|
private String tokenOwner;
|
||||||
@@ -303,22 +306,28 @@ public class TokenEffect extends SpellAbilityEffect {
|
|||||||
final Game game = controller.getGame();
|
final Game game = controller.getGame();
|
||||||
for (final Card c : tokens) {
|
for (final Card c : tokens) {
|
||||||
if (this.tokenAttacking && game.getPhaseHandler().inCombat()) {
|
if (this.tokenAttacking && game.getPhaseHandler().inCombat()) {
|
||||||
Combat combat = game.getPhaseHandler().getCombat();
|
final Combat combat = game.getPhaseHandler().getCombat();
|
||||||
final FCollectionView<GameEntity> defs = combat.getDefenders();
|
final FCollectionView<GameEntity> defs = combat.getDefenders();
|
||||||
final GameEntity defender = c.getController().getController().chooseSingleEntityForEffect(defs, sa, "Choose which defender to attack with " + c, false);
|
final GameEntity defender = c.getController().getController().chooseSingleEntityForEffect(defs, sa, "Choose which defender to attack with " + c, false);
|
||||||
combat.addAttacker(c, defender);
|
combat.addAttacker(c, defender);
|
||||||
combatChanged = true;
|
combatChanged = true;
|
||||||
}
|
}
|
||||||
if (this.tokenBlocking != null && game.getPhaseHandler().inCombat()) {
|
if (this.tokenBlocking != null && game.getPhaseHandler().inCombat()) {
|
||||||
Combat combat = game.getPhaseHandler().getCombat();
|
final Combat combat = game.getPhaseHandler().getCombat();
|
||||||
final Card attacker = Iterables.getFirst(AbilityUtils.getDefinedCards(host, this.tokenBlocking, sa), null);
|
final Card attacker = Iterables.getFirst(AbilityUtils.getDefinedCards(host, this.tokenBlocking, sa), null);
|
||||||
if (attacker != null) {
|
if (attacker != null) {
|
||||||
if (combat.isBlocked(attacker)) {
|
final boolean wasBlocked = combat.isBlocked(attacker);
|
||||||
combat.addBlocker(attacker, c);
|
combat.addBlocker(attacker, c);
|
||||||
combat.orderAttackersForDamageAssignment(c);
|
combat.orderAttackersForDamageAssignment(c);
|
||||||
} else {
|
|
||||||
// TODO Flash Foliage: set blocked; attackerBlocked trigger; damage
|
// Run triggers for new blocker and add it to damage assignment order
|
||||||
|
if (!wasBlocked) {
|
||||||
|
combat.setBlocked(attacker, true);
|
||||||
|
combat.addBlockerToDamageAssignmentOrder(attacker, c);
|
||||||
|
game.getTriggerHandler().runTrigger(TriggerType.AttackerBlocked, new Builder<String, Object>().put("Attacker", attacker).put("Blockers", Collections.singleton(c)).put("NumBlockers", 1).build(), true);
|
||||||
}
|
}
|
||||||
|
game.getTriggerHandler().runTrigger(TriggerType.AttackerBlockedByCreature, new Builder<String, Object>().put("Attacker", attacker).put("Blocker", c).build(), true);
|
||||||
|
|
||||||
combatChanged = true;
|
combatChanged = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -341,6 +350,7 @@ public class TokenEffect extends SpellAbilityEffect {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (combatChanged) {
|
if (combatChanged) {
|
||||||
|
game.updateCombatForView();
|
||||||
game.fireEvent(new GameEventCombatChanged());
|
game.fireEvent(new GameEventCombatChanged());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,8 +15,9 @@ Release Notes
|
|||||||
New Cards
|
New Cards
|
||||||
---------
|
---------
|
||||||
|
|
||||||
Siege Behemoth
|
Flash Foliage
|
||||||
Myriad Landscape
|
Myriad Landscape
|
||||||
|
Siege Behemoth
|
||||||
|
|
||||||
|
|
||||||
------------
|
------------
|
||||||
|
|||||||
7
forge-gui/res/cardsfolder/f/flash_foliage.txt
Normal file
7
forge-gui/res/cardsfolder/f/flash_foliage.txt
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
Name:Flash Foliage
|
||||||
|
ManaCost:2 G
|
||||||
|
Types:Instant
|
||||||
|
A:SP$ Token | Cost$ 2 G | ValidTgts$ Creature.attackingYou | TgtPrompt$ Select target creature attacking you | TokenAmount$ 1 | TokenName$ Saproling | TokenTypes$ Creature,Saproling | TokenOwner$ You | TokenColors$ Green | TokenPower$ 1 | TokenToughness$ 1 | TokenBlocking$ Targeted | ActivationPhases$ Declare Blockers->EndCombat | SubAbility$ DBDraw | StackDescription$ SpellDescription | SpellDescription$ Cast CARDNAME only during combat after blockers are declared. Put a 1/1 green Saproling creature token onto the battlefield blocking target creature attacking you. Draw a card.
|
||||||
|
SVar:DBDraw:DB$ Draw | NumCards$ 1
|
||||||
|
SVar:RemAIDeck:True
|
||||||
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/flash_foliage.jpg
|
||||||
Reference in New Issue
Block a user