mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 12:18:00 +00:00
*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:
@@ -2286,6 +2286,7 @@ public class GameAction {
|
||||
AllZone.ComputerPlayer.clearHandSizeOperations();
|
||||
|
||||
AllZone.TriggerHandler.clearRegistered();
|
||||
forge.card.trigger.Trigger.resetIDs();
|
||||
|
||||
|
||||
{//re-number cards just so their unique numbers are low, just for user friendliness
|
||||
|
||||
@@ -13,6 +13,15 @@ import forge.card.spellability.SpellAbility;
|
||||
|
||||
public abstract class Trigger {
|
||||
|
||||
private static int nextID = 0;
|
||||
|
||||
public static void resetIDs()
|
||||
{
|
||||
nextID = 0;
|
||||
}
|
||||
|
||||
protected int ID = nextID++;
|
||||
|
||||
protected String name;
|
||||
public String getName()
|
||||
{
|
||||
@@ -23,6 +32,11 @@ public abstract class Trigger {
|
||||
name = n;
|
||||
}
|
||||
|
||||
public void setID(int id)
|
||||
{
|
||||
ID = id;
|
||||
}
|
||||
|
||||
protected HashMap<String,String> mapParams = new HashMap<String,String>();
|
||||
public HashMap<String,String> getMapParams()
|
||||
{
|
||||
@@ -276,6 +290,15 @@ public abstract class Trigger {
|
||||
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 Trigger getCopy();
|
||||
|
||||
@@ -193,7 +193,12 @@ public class TriggerHandler {
|
||||
|
||||
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() {
|
||||
|
||||
@@ -38,6 +38,7 @@ public class Trigger_AttackerBlocked extends Trigger {
|
||||
copy.setOverridingAbility(overridingAbility);
|
||||
}
|
||||
copy.setName(name);
|
||||
copy.setID(ID);
|
||||
|
||||
return copy;
|
||||
}
|
||||
|
||||
@@ -31,6 +31,7 @@ public class Trigger_AttackerUnblocked extends Trigger {
|
||||
copy.setOverridingAbility(overridingAbility);
|
||||
}
|
||||
copy.setName(name);
|
||||
copy.setID(ID);
|
||||
|
||||
return copy;
|
||||
}
|
||||
|
||||
@@ -56,6 +56,7 @@ public class Trigger_Attacks extends Trigger {
|
||||
copy.setOverridingAbility(overridingAbility);
|
||||
}
|
||||
copy.setName(name);
|
||||
copy.setID(ID);
|
||||
|
||||
return copy;
|
||||
}
|
||||
|
||||
@@ -39,6 +39,7 @@ public class Trigger_Blocks extends Trigger {
|
||||
copy.setOverridingAbility(overridingAbility);
|
||||
}
|
||||
copy.setName(name);
|
||||
copy.setID(ID);
|
||||
|
||||
return copy;
|
||||
}
|
||||
|
||||
@@ -55,6 +55,7 @@ public class Trigger_ChangesZone extends Trigger {
|
||||
copy.setOverridingAbility(overridingAbility);
|
||||
}
|
||||
copy.setName(name);
|
||||
copy.setID(ID);
|
||||
|
||||
return copy;
|
||||
}
|
||||
|
||||
@@ -39,6 +39,7 @@ public class Trigger_CounterAdded extends Trigger {
|
||||
copy.setOverridingAbility(overridingAbility);
|
||||
}
|
||||
copy.setName(name);
|
||||
copy.setID(ID);
|
||||
|
||||
return copy;
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@ public class Trigger_Cycled extends Trigger {
|
||||
copy.setOverridingAbility(overridingAbility);
|
||||
}
|
||||
copy.setName(name);
|
||||
copy.setID(ID);
|
||||
|
||||
return copy;
|
||||
}
|
||||
|
||||
@@ -57,6 +57,7 @@ public class Trigger_DamageDone extends Trigger {
|
||||
copy.setOverridingAbility(overridingAbility);
|
||||
}
|
||||
copy.setName(name);
|
||||
copy.setID(ID);
|
||||
|
||||
return copy;
|
||||
}
|
||||
|
||||
@@ -50,6 +50,7 @@ public class Trigger_Discarded extends Trigger {
|
||||
copy.setOverridingAbility(overridingAbility);
|
||||
}
|
||||
copy.setName(name);
|
||||
copy.setID(ID);
|
||||
|
||||
return copy;
|
||||
}
|
||||
|
||||
@@ -32,6 +32,7 @@ public class Trigger_Drawn extends Trigger {
|
||||
copy.setOverridingAbility(overridingAbility);
|
||||
}
|
||||
copy.setName(name);
|
||||
copy.setID(ID);
|
||||
|
||||
return copy;
|
||||
}
|
||||
|
||||
@@ -16,7 +16,15 @@ public class Trigger_LandPlayed extends Trigger {
|
||||
|
||||
@Override
|
||||
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
|
||||
|
||||
@@ -32,6 +32,7 @@ public class Trigger_LifeGained extends Trigger {
|
||||
copy.setOverridingAbility(overridingAbility);
|
||||
}
|
||||
copy.setName(name);
|
||||
copy.setID(ID);
|
||||
|
||||
return copy;
|
||||
}
|
||||
|
||||
@@ -32,6 +32,7 @@ public class Trigger_LifeLost extends Trigger {
|
||||
copy.setOverridingAbility(overridingAbility);
|
||||
}
|
||||
copy.setName(name);
|
||||
copy.setID(ID);
|
||||
|
||||
return copy;
|
||||
}
|
||||
|
||||
@@ -37,6 +37,7 @@ public class Trigger_Phase extends Trigger {
|
||||
copy.setOverridingAbility(overridingAbility);
|
||||
}
|
||||
copy.setName(name);
|
||||
copy.setID(ID);
|
||||
|
||||
return copy;
|
||||
}
|
||||
|
||||
@@ -38,6 +38,7 @@ public class Trigger_Sacrificed extends Trigger {
|
||||
copy.setOverridingAbility(overridingAbility);
|
||||
}
|
||||
copy.setName(name);
|
||||
copy.setID(ID);
|
||||
|
||||
return copy;
|
||||
}
|
||||
|
||||
@@ -32,6 +32,7 @@ public class Trigger_Shuffled extends Trigger{
|
||||
copy.setOverridingAbility(overridingAbility);
|
||||
}
|
||||
copy.setName(name);
|
||||
copy.setID(ID);
|
||||
|
||||
return copy;
|
||||
}
|
||||
|
||||
@@ -153,6 +153,7 @@ public class Trigger_SpellAbilityCast extends Trigger {
|
||||
copy.setOverridingAbility(overridingAbility);
|
||||
}
|
||||
copy.setName(name);
|
||||
copy.setID(ID);
|
||||
|
||||
return copy;
|
||||
}
|
||||
|
||||
@@ -34,6 +34,7 @@ public class Trigger_Taps extends Trigger {
|
||||
copy.setOverridingAbility(overridingAbility);
|
||||
}
|
||||
copy.setName(name);
|
||||
copy.setID(ID);
|
||||
|
||||
return copy;
|
||||
}
|
||||
|
||||
@@ -31,6 +31,7 @@ public class Trigger_TurnFaceUp extends Trigger {
|
||||
copy.setOverridingAbility(overridingAbility);
|
||||
}
|
||||
copy.setName(name);
|
||||
copy.setID(ID);
|
||||
|
||||
return copy;
|
||||
}
|
||||
|
||||
@@ -37,6 +37,7 @@ public class Trigger_Unequip extends Trigger {
|
||||
copy.setOverridingAbility(overridingAbility);
|
||||
}
|
||||
copy.setName(name);
|
||||
copy.setID(ID);
|
||||
|
||||
return copy;
|
||||
}
|
||||
|
||||
@@ -34,6 +34,7 @@ public class Trigger_Untaps extends Trigger {
|
||||
copy.setOverridingAbility(overridingAbility);
|
||||
}
|
||||
copy.setName(name);
|
||||
copy.setID(ID);
|
||||
|
||||
return copy;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user