*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:
jendave
2011-08-07 00:05:11 +00:00
parent 75fb4f2483
commit 27b729f6ec
4 changed files with 85 additions and 1 deletions

1
.gitattributes vendored
View File

@@ -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

View File

@@ -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);

View File

@@ -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);
}
}
}
}

View File

@@ -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();
}
}