mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-15 18:28:00 +00:00
Merge branch 'master' of https://git.cardforge.org/core-developers/forge.git
This commit is contained in:
@@ -1455,7 +1455,7 @@ public class ComputerUtilCombat {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ability.hasParam("Adapt") && blocker != null && blocker.getCounters(CounterType.P1P1) > 0) {
|
if (ability.hasParam("Adapt") && attacker.getCounters(CounterType.P1P1) > 0) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1692,7 +1692,7 @@ public class ComputerUtilCombat {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ability.hasParam("Adapt") && blocker.getCounters(CounterType.P1P1) > 0) {
|
if (ability.hasParam("Adapt") && attacker.getCounters(CounterType.P1P1) > 0) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -423,7 +423,7 @@ public class GameAction {
|
|||||||
// Need to apply any static effects to produce correct triggers
|
// Need to apply any static effects to produce correct triggers
|
||||||
checkStaticAbilities();
|
checkStaticAbilities();
|
||||||
game.getTriggerHandler().clearInstrinsicActiveTriggers(c, zoneFrom);
|
game.getTriggerHandler().clearInstrinsicActiveTriggers(c, zoneFrom);
|
||||||
game.getTriggerHandler().registerActiveTrigger(c, false);
|
game.getTriggerHandler().registerActiveTrigger(lastKnownInfo, false);
|
||||||
|
|
||||||
// do ETB counters after StaticAbilities check
|
// do ETB counters after StaticAbilities check
|
||||||
if (!suppress) {
|
if (!suppress) {
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package forge.game.ability.effects;
|
package forge.game.ability.effects;
|
||||||
|
|
||||||
import forge.game.GameAction;
|
import forge.game.GameAction;
|
||||||
|
import forge.game.GameLogEntryType;
|
||||||
import forge.game.ability.AbilityUtils;
|
import forge.game.ability.AbilityUtils;
|
||||||
import forge.game.ability.SpellAbilityEffect;
|
import forge.game.ability.SpellAbilityEffect;
|
||||||
import forge.game.card.Card;
|
import forge.game.card.Card;
|
||||||
@@ -60,8 +61,6 @@ public class ClashEffect extends SpellAbilityEffect {
|
|||||||
* clashWithOpponent.
|
* clashWithOpponent.
|
||||||
* </p>
|
* </p>
|
||||||
*
|
*
|
||||||
* @param source
|
|
||||||
* a {@link forge.game.card.Card} object.
|
|
||||||
* @return a boolean.
|
* @return a boolean.
|
||||||
*/
|
*/
|
||||||
private static boolean clashWithOpponent(final SpellAbility sa) {
|
private static boolean clashWithOpponent(final SpellAbility sa) {
|
||||||
@@ -126,11 +125,14 @@ public class ClashEffect extends SpellAbilityEffect {
|
|||||||
private static void clashMoveToTopOrBottom(final Player p, final Card c, final SpellAbility sa) {
|
private static void clashMoveToTopOrBottom(final Player p, final Card c, final SpellAbility sa) {
|
||||||
final GameAction action = p.getGame().getAction();
|
final GameAction action = p.getGame().getAction();
|
||||||
final boolean putOnTop = p.getController().willPutCardOnTop(c);
|
final boolean putOnTop = p.getController().willPutCardOnTop(c);
|
||||||
|
final String location = putOnTop ? "top" : "bottom";
|
||||||
|
final String clashOutcome = p.getName() + " clashed and put " + c.getName() + " to the " + location + " of library.";
|
||||||
|
|
||||||
if (putOnTop) {
|
if (putOnTop) {
|
||||||
action.moveToLibrary(c, sa);
|
action.moveToLibrary(c, sa);
|
||||||
} else {
|
} else {
|
||||||
action.moveToBottomOfLibrary(c, sa);
|
action.moveToBottomOfLibrary(c, sa);
|
||||||
}
|
}
|
||||||
// computer just puts the card back until such time it can make a smarter decision
|
p.getGame().getGameLog().add(GameLogEntryType.STACK_RESOLVE, clashOutcome);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
16
forge-gui/res/puzzle/PS_RNA6.pzl
Normal file
16
forge-gui/res/puzzle/PS_RNA6.pzl
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
[metadata]
|
||||||
|
Name:Possibility Storm - Ravnica Allegiance #06
|
||||||
|
URL:http://www.possibilitystorm.com/wp-content/uploads/2019/02/103.-RNA6.jpg
|
||||||
|
Goal:Win
|
||||||
|
Turns:1
|
||||||
|
Difficulty:Uncommon
|
||||||
|
Description:Win this turn. Your solution must satisfy all possible blocking scenarios.
|
||||||
|
[state]
|
||||||
|
humanlife=20
|
||||||
|
ailife=8
|
||||||
|
turn=1
|
||||||
|
activeplayer=human
|
||||||
|
activephase=MAIN1
|
||||||
|
humanhand=Skirk Prospector;Metamorphic Alteration;Luminous Bonds;Electrodominance
|
||||||
|
humanbattlefield=Fresh-Faced Recruit;Juggernaut;Ledev Champion;Biomancer's Familiar;Gateway Plaza;Gateway Plaza;Gateway Plaza;Temple Garden|NoETBTrigs;Temple Garden|NoETBTrigs;Temple Garden|NoETBTrigs;Temple Garden|NoETBTrigs
|
||||||
|
aibattlefield=Queen's Agent|Counters:P1P1=1;Azorius Knight-Arbiter;Queen's Agent|Counters:P1P1=1
|
||||||
Reference in New Issue
Block a user