mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 11:48:02 +00:00
Merge branch 'hexproofUpdate' into 'master'
Hexproof: recode ability to bypass Hexproof See merge request core-developers/forge!677
This commit is contained in:
@@ -3987,7 +3987,7 @@ public class Card extends GameEntity implements Comparable<Card> {
|
|||||||
// Takes one argument like Permanent.Blue+withFlying
|
// Takes one argument like Permanent.Blue+withFlying
|
||||||
@Override
|
@Override
|
||||||
public final boolean isValid(final String restriction, final Player sourceController, final Card source, SpellAbility spellAbility) {
|
public final boolean isValid(final String restriction, final Player sourceController, final Card source, SpellAbility spellAbility) {
|
||||||
if (isImmutable() && !source.isRemembered(this) &&
|
if (isImmutable() && source != null && !source.isRemembered(this) &&
|
||||||
!(restriction.startsWith("Emblem") || restriction.startsWith("Effect"))) { // special case exclusion
|
!(restriction.startsWith("Emblem") || restriction.startsWith("Effect"))) { // special case exclusion
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1159,9 +1159,33 @@ public class Player extends GameEntity implements Comparable<Player> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final boolean canBeTargetedBy(final SpellAbility sa) {
|
public final boolean canBeTargetedBy(final SpellAbility sa) {
|
||||||
if (hasKeyword("Shroud") || (!equals(sa.getActivatingPlayer()) && hasKeyword("Hexproof"))
|
if (hasKeyword("Shroud")) {
|
||||||
|| hasProtectionFrom(sa.getHostCard())
|
return false;
|
||||||
|| (hasKeyword("You can't be the targets of spells or activated abilities") && (sa.isSpell() || (sa instanceof AbilityActivated)))) {
|
}
|
||||||
|
if (hasKeyword("Hexproof")) {
|
||||||
|
final Player a = sa.getActivatingPlayer();
|
||||||
|
if (isOpponentOf(a)) {
|
||||||
|
boolean cancelHexproof = false;
|
||||||
|
for (String k : a.getKeywords()) {
|
||||||
|
if (k.startsWith("IgnoreHexproof")) {
|
||||||
|
String m[] = k.split(":");
|
||||||
|
if (isValid(m[1].split(","), a, sa.getHostCard(), sa)) {
|
||||||
|
cancelHexproof = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!cancelHexproof) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (hasProtectionFrom(sa.getHostCard())) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((hasKeyword("You can't be the targets of spells or activated abilities") && (sa.isSpell() || (sa instanceof AbilityActivated)))) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -89,8 +89,13 @@ public class StaticAbilityCantTarget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (params.containsKey("Hexproof") && (activator != null)) {
|
if (params.containsKey("Hexproof") && (activator != null)) {
|
||||||
if (activator.hasKeyword("Spells and abilities you control can target hexproof creatures")) {
|
for (String k : activator.getKeywords()) {
|
||||||
return false;
|
if (k.startsWith("IgnoreHexproof")) {
|
||||||
|
String m[] = k.split(":");
|
||||||
|
if (card.isValid(m[1].split(","), activator, source, spellAbility)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
Name:Glaring Spotlight
|
Name:Glaring Spotlight
|
||||||
ManaCost:1
|
ManaCost:1
|
||||||
Types:Artifact
|
Types:Artifact
|
||||||
S:Mode$ Continuous | Affected$ You | AddKeyword$ Spells and abilities you control can target hexproof creatures | Description$ Creatures your opponents control with hexproof can be the targets of spells and abilities you control as though they didn't have hexproof.
|
S:Mode$ Continuous | Affected$ You | AddKeyword$ IgnoreHexproof:Creature.OppCtrl | Description$ Creatures your opponents control with hexproof can be the targets of spells and abilities you control as though they didn't have hexproof.
|
||||||
A:AB$ PumpAll | Cost$ 3 Sac<1/CARDNAME> | ValidCards$ Creature.YouCtrl | KW$ Hexproof | SubAbility$ GSEffect | SpellDescription$ Creatures you control gain hexproof until end of turn and can't be blocked this turn.
|
A:AB$ PumpAll | Cost$ 3 Sac<1/CARDNAME> | ValidCards$ Creature.YouCtrl | KW$ Hexproof | SubAbility$ GSEffect | SpellDescription$ Creatures you control gain hexproof until end of turn and can't be blocked this turn.
|
||||||
SVar:GSEffect:DB$ Effect | Name$ Glaring Spotlight Effect | StaticAbilities$ KWPump
|
SVar:GSEffect:DB$ Effect | Name$ Glaring Spotlight Effect | StaticAbilities$ KWPump
|
||||||
SVar:KWPump:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$ Creature.YouCtrl | AddHiddenKeyword$ Unblockable | Description$ Creatures you control can't be blocked this turn.
|
SVar:KWPump:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$ Creature.YouCtrl | AddHiddenKeyword$ Unblockable | Description$ Creatures you control can't be blocked this turn.
|
||||||
|
|||||||
9
forge-gui/res/cardsfolder/upcoming/detection_tower.txt
Normal file
9
forge-gui/res/cardsfolder/upcoming/detection_tower.txt
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
Name:Detection Tower
|
||||||
|
ManaCost:no cost
|
||||||
|
Types:Land
|
||||||
|
A:AB$ Mana | Cost$ T | Produced$ C | SpellDescription$ Add {C}.
|
||||||
|
A:AB$ Effect | Cost$ 1 T | StaticAbilities$ STLoseAB | SpellDescription$ Until end of turn, your opponents and creatures your opponents control with hexproof can be the targets of spells and abilities you control as though they didn’t have hexproof.
|
||||||
|
SVar:STLoseAB:Mode$ Continuous | EffectZone$ Command | Affected$ You | AddKeyword$ IgnoreHexproof:Opponent,Creature.OppCtrl | Description$ Your opponents and creatures your opponents control with hexproof can be the targets of spells and abilities you control as though they didn’t have hexproof.
|
||||||
|
SVar:RemAIDeck:True
|
||||||
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/detection_tower.jpg
|
||||||
|
Oracle:{T}: Add {C}.\n{1}, {T}: Until end of turn, your opponents and creatures your opponents control with hexproof can be the targets of spells and abilities you control as though they didn’t have hexproof.
|
||||||
Reference in New Issue
Block a user