*Triggers are now tracked by an integer ID so that the correct trigger object can be removed even after copying it, if need be. Fixes Raging Ravine.

*Fixed LandPlayed triggers not copying any OverridingAbility info. (not that we used any hardcoded LandPlayed triggers but still)
This commit is contained in:
jendave
2011-08-06 20:29:33 +00:00
parent a3a9421ec1
commit dde5bd53b9
24 changed files with 60 additions and 3 deletions

View File

@@ -2286,6 +2286,7 @@ public class GameAction {
AllZone.ComputerPlayer.clearHandSizeOperations(); AllZone.ComputerPlayer.clearHandSizeOperations();
AllZone.TriggerHandler.clearRegistered(); AllZone.TriggerHandler.clearRegistered();
forge.card.trigger.Trigger.resetIDs();
{//re-number cards just so their unique numbers are low, just for user friendliness {//re-number cards just so their unique numbers are low, just for user friendliness

View File

@@ -13,6 +13,15 @@ import forge.card.spellability.SpellAbility;
public abstract class Trigger { public abstract class Trigger {
private static int nextID = 0;
public static void resetIDs()
{
nextID = 0;
}
protected int ID = nextID++;
protected String name; protected String name;
public String getName() public String getName()
{ {
@@ -23,6 +32,11 @@ public abstract class Trigger {
name = n; name = n;
} }
public void setID(int id)
{
ID = id;
}
protected HashMap<String,String> mapParams = new HashMap<String,String>(); protected HashMap<String,String> mapParams = new HashMap<String,String>();
public HashMap<String,String> getMapParams() public HashMap<String,String> getMapParams()
{ {
@@ -276,6 +290,15 @@ public abstract class Trigger {
return false; return false;
} }
@Override
public boolean equals(Object o)
{
if(!(o instanceof Trigger))
return false;
return this.ID == ((Trigger)o).ID;
}
public abstract boolean performTest(HashMap<String,Object> runParams); public abstract boolean performTest(HashMap<String,Object> runParams);
public abstract Trigger getCopy(); public abstract Trigger getCopy();

View File

@@ -193,7 +193,12 @@ public class TriggerHandler {
public void removeRegisteredTrigger(Trigger trig) public void removeRegisteredTrigger(Trigger trig)
{ {
registeredTriggers.remove(trig);
for(int i=0;i< registeredTriggers.size();i++)
{
if(registeredTriggers.get(i).equals(trig))
registeredTriggers.remove(i);
}
} }
public ArrayList<Trigger> getRegisteredTriggers() { public ArrayList<Trigger> getRegisteredTriggers() {

View File

@@ -38,6 +38,7 @@ public class Trigger_AttackerBlocked extends Trigger {
copy.setOverridingAbility(overridingAbility); copy.setOverridingAbility(overridingAbility);
} }
copy.setName(name); copy.setName(name);
copy.setID(ID);
return copy; return copy;
} }

View File

@@ -31,6 +31,7 @@ public class Trigger_AttackerUnblocked extends Trigger {
copy.setOverridingAbility(overridingAbility); copy.setOverridingAbility(overridingAbility);
} }
copy.setName(name); copy.setName(name);
copy.setID(ID);
return copy; return copy;
} }

View File

@@ -56,6 +56,7 @@ public class Trigger_Attacks extends Trigger {
copy.setOverridingAbility(overridingAbility); copy.setOverridingAbility(overridingAbility);
} }
copy.setName(name); copy.setName(name);
copy.setID(ID);
return copy; return copy;
} }

View File

@@ -39,6 +39,7 @@ public class Trigger_Blocks extends Trigger {
copy.setOverridingAbility(overridingAbility); copy.setOverridingAbility(overridingAbility);
} }
copy.setName(name); copy.setName(name);
copy.setID(ID);
return copy; return copy;
} }

View File

@@ -55,6 +55,7 @@ public class Trigger_ChangesZone extends Trigger {
copy.setOverridingAbility(overridingAbility); copy.setOverridingAbility(overridingAbility);
} }
copy.setName(name); copy.setName(name);
copy.setID(ID);
return copy; return copy;
} }

View File

@@ -39,6 +39,7 @@ public class Trigger_CounterAdded extends Trigger {
copy.setOverridingAbility(overridingAbility); copy.setOverridingAbility(overridingAbility);
} }
copy.setName(name); copy.setName(name);
copy.setID(ID);
return copy; return copy;
} }

View File

@@ -18,6 +18,7 @@ public class Trigger_Cycled extends Trigger {
copy.setOverridingAbility(overridingAbility); copy.setOverridingAbility(overridingAbility);
} }
copy.setName(name); copy.setName(name);
copy.setID(ID);
return copy; return copy;
} }

View File

@@ -57,6 +57,7 @@ public class Trigger_DamageDone extends Trigger {
copy.setOverridingAbility(overridingAbility); copy.setOverridingAbility(overridingAbility);
} }
copy.setName(name); copy.setName(name);
copy.setID(ID);
return copy; return copy;
} }

View File

@@ -50,6 +50,7 @@ public class Trigger_Discarded extends Trigger {
copy.setOverridingAbility(overridingAbility); copy.setOverridingAbility(overridingAbility);
} }
copy.setName(name); copy.setName(name);
copy.setID(ID);
return copy; return copy;
} }

View File

@@ -32,6 +32,7 @@ public class Trigger_Drawn extends Trigger {
copy.setOverridingAbility(overridingAbility); copy.setOverridingAbility(overridingAbility);
} }
copy.setName(name); copy.setName(name);
copy.setID(ID);
return copy; return copy;
} }

View File

@@ -16,7 +16,15 @@ public class Trigger_LandPlayed extends Trigger {
@Override @Override
public Trigger getCopy() { public Trigger getCopy() {
return new Trigger_LandPlayed(this.name, this.mapParams, this.hostCard); Trigger copy = new Trigger_LandPlayed(name,mapParams,hostCard);
copy.setID(ID);
if(this.overridingAbility != null)
{
copy.setOverridingAbility(overridingAbility);
}
return copy;
} }
@Override @Override

View File

@@ -32,6 +32,7 @@ public class Trigger_LifeGained extends Trigger {
copy.setOverridingAbility(overridingAbility); copy.setOverridingAbility(overridingAbility);
} }
copy.setName(name); copy.setName(name);
copy.setID(ID);
return copy; return copy;
} }

View File

@@ -32,6 +32,7 @@ public class Trigger_LifeLost extends Trigger {
copy.setOverridingAbility(overridingAbility); copy.setOverridingAbility(overridingAbility);
} }
copy.setName(name); copy.setName(name);
copy.setID(ID);
return copy; return copy;
} }

View File

@@ -37,6 +37,7 @@ public class Trigger_Phase extends Trigger {
copy.setOverridingAbility(overridingAbility); copy.setOverridingAbility(overridingAbility);
} }
copy.setName(name); copy.setName(name);
copy.setID(ID);
return copy; return copy;
} }

View File

@@ -38,6 +38,7 @@ public class Trigger_Sacrificed extends Trigger {
copy.setOverridingAbility(overridingAbility); copy.setOverridingAbility(overridingAbility);
} }
copy.setName(name); copy.setName(name);
copy.setID(ID);
return copy; return copy;
} }

View File

@@ -32,6 +32,7 @@ public class Trigger_Shuffled extends Trigger{
copy.setOverridingAbility(overridingAbility); copy.setOverridingAbility(overridingAbility);
} }
copy.setName(name); copy.setName(name);
copy.setID(ID);
return copy; return copy;
} }

View File

@@ -153,6 +153,7 @@ public class Trigger_SpellAbilityCast extends Trigger {
copy.setOverridingAbility(overridingAbility); copy.setOverridingAbility(overridingAbility);
} }
copy.setName(name); copy.setName(name);
copy.setID(ID);
return copy; return copy;
} }

View File

@@ -34,6 +34,7 @@ public class Trigger_Taps extends Trigger {
copy.setOverridingAbility(overridingAbility); copy.setOverridingAbility(overridingAbility);
} }
copy.setName(name); copy.setName(name);
copy.setID(ID);
return copy; return copy;
} }

View File

@@ -31,6 +31,7 @@ public class Trigger_TurnFaceUp extends Trigger {
copy.setOverridingAbility(overridingAbility); copy.setOverridingAbility(overridingAbility);
} }
copy.setName(name); copy.setName(name);
copy.setID(ID);
return copy; return copy;
} }

View File

@@ -37,6 +37,7 @@ public class Trigger_Unequip extends Trigger {
copy.setOverridingAbility(overridingAbility); copy.setOverridingAbility(overridingAbility);
} }
copy.setName(name); copy.setName(name);
copy.setID(ID);
return copy; return copy;
} }

View File

@@ -34,6 +34,7 @@ public class Trigger_Untaps extends Trigger {
copy.setOverridingAbility(overridingAbility); copy.setOverridingAbility(overridingAbility);
} }
copy.setName(name); copy.setName(name);
copy.setID(ID);
return copy; return copy;
} }