mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 20:28:00 +00:00
*Let AF_CounterMagic use Remember.
*Added barebones beginnings of AF_DelayedTrigger. (Only usable as a subability,no AI.Nothing uses it yet)
This commit is contained in:
1
.gitattributes
vendored
1
.gitattributes
vendored
@@ -8774,6 +8774,7 @@ src/forge/card/abilityFactory/AbilityFactory_Copy.java -text svneol=native#text/
|
||||
src/forge/card/abilityFactory/AbilityFactory_CounterMagic.java -text svneol=native#text/plain
|
||||
src/forge/card/abilityFactory/AbilityFactory_Counters.java -text svneol=native#text/plain
|
||||
src/forge/card/abilityFactory/AbilityFactory_DealDamage.java -text svneol=native#text/plain
|
||||
src/forge/card/abilityFactory/AbilityFactory_DelayedTrigger.java -text svneol=native#text/plain
|
||||
src/forge/card/abilityFactory/AbilityFactory_Destroy.java -text svneol=native#text/plain
|
||||
src/forge/card/abilityFactory/AbilityFactory_Effect.java -text svneol=native#text/plain
|
||||
src/forge/card/abilityFactory/AbilityFactory_EndGameCondition.java -text svneol=native#text/plain
|
||||
|
||||
@@ -665,7 +665,12 @@ public class AbilityFactory {
|
||||
else if(isDb)
|
||||
SA = AbilityFactory_Clash.getDrawbackFlip(this);
|
||||
}
|
||||
|
||||
|
||||
if(API.equals("DelayedTrigger")) {
|
||||
if(isDb)
|
||||
SA = AbilityFactory_DelayedTrigger.getDrawback(this);
|
||||
}
|
||||
|
||||
if (SA == null)
|
||||
throw new RuntimeException("AbilityFactory : SpellAbility was not created for "+hostCard.getName()+". Looking for API: "+API);
|
||||
|
||||
|
||||
@@ -266,6 +266,14 @@ public class AbilityFactory_CounterMagic {
|
||||
sas = AbilityFactory.getDefinedSpellAbilities(sa.getSourceCard(), params.get("Defined"), sa);
|
||||
}
|
||||
|
||||
if(params.containsKey("ForgetOtherTargets"))
|
||||
{
|
||||
if(params.get("ForgetOtherTargets").equals("True"))
|
||||
{
|
||||
af.getHostCard().clearRemembered();
|
||||
}
|
||||
}
|
||||
|
||||
for(final SpellAbility tgtSA : sas){
|
||||
Card tgtSACard = tgtSA.getSourceCard();
|
||||
if (AllZone.Stack.contains(tgtSA) && !tgtSACard.keywordsContain("CARDNAME can't be countered.")){
|
||||
@@ -313,6 +321,14 @@ public class AbilityFactory_CounterMagic {
|
||||
if(tgtSA.isAbility() && params.containsKey("DestroyPermanent")) {
|
||||
AllZone.GameAction.destroy(tgtSACard);
|
||||
}
|
||||
|
||||
if(params.containsKey("RememberTargets"))
|
||||
{
|
||||
if(params.get("RememberTargets").equals("True"))
|
||||
{
|
||||
af.getHostCard().addRemembered(tgtSACard);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,62 @@
|
||||
package forge.card.abilityFactory;
|
||||
|
||||
import forge.AllZone;
|
||||
import forge.card.spellability.Ability_Sub;
|
||||
import forge.card.spellability.SpellAbility;
|
||||
import forge.card.trigger.Trigger;
|
||||
import forge.card.trigger.TriggerHandler;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
/**
|
||||
* Created by IntelliJ IDEA.
|
||||
* User: Administrator
|
||||
* Date: 5/18/11
|
||||
* Time: 8:53 PM
|
||||
* To change this template use File | Settings | File Templates.
|
||||
*/
|
||||
public class AbilityFactory_DelayedTrigger {
|
||||
public static Ability_Sub getDrawback(final AbilityFactory AF)
|
||||
{
|
||||
final Ability_Sub drawback = new Ability_Sub(AF.getHostCard(),AF.getAbTgt()) {
|
||||
@Override
|
||||
public boolean chkAI_Drawback() {
|
||||
return false; //To change body of implemented methods use File | Settings | File Templates.
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean doTrigger(boolean mandatory) {
|
||||
return false; //To change body of implemented methods use File | Settings | File Templates.
|
||||
}
|
||||
|
||||
@Override
|
||||
public void resolve() {
|
||||
doResolve(AF,this);
|
||||
}
|
||||
};
|
||||
|
||||
return drawback;
|
||||
}
|
||||
|
||||
private static void doResolve(AbilityFactory AF,SpellAbility SA)
|
||||
{
|
||||
HashMap<String,String> mapParams = AF.getMapParams();
|
||||
|
||||
if(mapParams.containsKey("Cost"))
|
||||
mapParams.remove("Cost");
|
||||
|
||||
if(mapParams.containsKey("SpellDescription"))
|
||||
{
|
||||
mapParams.put("TriggerDescription",mapParams.get("SpellDescription"));
|
||||
mapParams.remove("SpellDescription");
|
||||
}
|
||||
|
||||
Trigger delTrig = TriggerHandler.parseTrigger(mapParams,AF.getHostCard());
|
||||
|
||||
AllZone.TriggerHandler.registerDelayedTrigger(delTrig);
|
||||
|
||||
if(AF.hasSubAbility())
|
||||
if(SA.getSubAbility() != null)
|
||||
SA.getSubAbility().resolve();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user