mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 19:58:00 +00:00
- Added the option "RemoveType" to continuous static abilities to remove one special type.
- Added Melting.
This commit is contained in:
@@ -3120,13 +3120,11 @@ public class Card extends GameEntity implements Comparable<Card> {
|
||||
|
||||
ArrayList<String> newType = new ArrayList<String>(type);
|
||||
ArrayList<Card_Type> types = changedCardTypes;
|
||||
//TODO: Any reason why changedCardTypes can't be sorted in place
|
||||
// Does changedCardTypes ever get out of increasing time
|
||||
// stamp order?
|
||||
Collections.sort(types); // sorts types by timeStamp
|
||||
|
||||
for (Card_Type ct : types) {
|
||||
ArrayList<String> removeTypes = new ArrayList<String>();
|
||||
removeTypes.addAll(ct.getRemoveType());
|
||||
//remove old types
|
||||
for (int i = 0; i < newType.size(); i++) {
|
||||
String t = newType.get(i);
|
||||
@@ -3141,7 +3139,9 @@ public class Card extends GameEntity implements Comparable<Card> {
|
||||
}
|
||||
newType.removeAll(removeTypes);
|
||||
//add new types
|
||||
newType.addAll(ct.getType());
|
||||
if (ct.getType() != null) {
|
||||
newType.addAll(ct.getType());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -3160,16 +3160,26 @@ public class Card extends GameEntity implements Comparable<Card> {
|
||||
return changedCardTypes;
|
||||
}
|
||||
|
||||
public void addChangedCardTypes(ArrayList<String> types, boolean removeSuperTypes, boolean removeCardTypes,
|
||||
boolean removeSubTypes, boolean removeCreatureTypes, long timestamp) {
|
||||
public void addChangedCardTypes(ArrayList<String> types, ArrayList<String> removeTypes, boolean removeSuperTypes,
|
||||
boolean removeCardTypes, boolean removeSubTypes, boolean removeCreatureTypes, long timestamp) {
|
||||
|
||||
changedCardTypes.add(new Card_Type(types, removeSuperTypes, removeCardTypes, removeSubTypes, removeCreatureTypes, timestamp));
|
||||
changedCardTypes.add(new Card_Type(types, removeTypes, removeSuperTypes, removeCardTypes, removeSubTypes, removeCreatureTypes,
|
||||
timestamp));
|
||||
}
|
||||
|
||||
public void addChangedCardTypes(String[] types, boolean removeSuperTypes, boolean removeCardTypes,
|
||||
public void addChangedCardTypes(String[] types, String[] removeTypes, boolean removeSuperTypes, boolean removeCardTypes,
|
||||
boolean removeSubTypes, boolean removeCreatureTypes, long timestamp) {
|
||||
ArrayList<String> typeList = new ArrayList<String>(Arrays.asList(types));
|
||||
addChangedCardTypes(typeList, removeSuperTypes, removeCardTypes, removeSubTypes, removeCreatureTypes, timestamp);
|
||||
ArrayList<String> typeList = null;
|
||||
ArrayList<String> removeTypeList = null;
|
||||
if(types != null) {
|
||||
typeList = new ArrayList<String>(Arrays.asList(types));
|
||||
}
|
||||
|
||||
if(removeTypes != null) {
|
||||
removeTypeList = new ArrayList<String>(Arrays.asList(removeTypes));
|
||||
}
|
||||
|
||||
addChangedCardTypes(typeList, removeTypeList, removeSuperTypes, removeCardTypes, removeSubTypes, removeCreatureTypes, timestamp);
|
||||
}
|
||||
|
||||
public void removeChangedCardTypes(long timestamp) {
|
||||
|
||||
@@ -12,6 +12,7 @@ import java.util.ArrayList;
|
||||
public class Card_Type implements Comparable<Card_Type> {
|
||||
// takes care of individual card types
|
||||
private ArrayList<String> type = new ArrayList<String>();
|
||||
private ArrayList<String> removeType = new ArrayList<String>();
|
||||
private boolean removeSuperTypes;
|
||||
private boolean removeCardTypes;
|
||||
private boolean removeSubTypes;
|
||||
@@ -36,10 +37,11 @@ public class Card_Type implements Comparable<Card_Type> {
|
||||
* @param removeCreatureType a boolean
|
||||
* @param stamp a long
|
||||
*/
|
||||
Card_Type(final ArrayList<String> types, final boolean removeSuperType, final boolean removeCardType,
|
||||
final boolean removeSubType, final boolean removeCreatureType, final long stamp)
|
||||
Card_Type(final ArrayList<String> types, final ArrayList<String> removeTypes, final boolean removeSuperType,
|
||||
final boolean removeCardType, final boolean removeSubType, final boolean removeCreatureType, final long stamp)
|
||||
{
|
||||
type = types;
|
||||
removeType = removeTypes;
|
||||
removeSuperTypes = removeSuperType;
|
||||
removeCardTypes = removeCardType;
|
||||
removeSubTypes = removeSubType;
|
||||
@@ -49,16 +51,25 @@ public class Card_Type implements Comparable<Card_Type> {
|
||||
|
||||
/**
|
||||
*
|
||||
* TODO Write javadoc for this method.
|
||||
* Write javadoc for this method.
|
||||
* @return type
|
||||
*/
|
||||
public final ArrayList<String> getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* Write javadoc for this method.
|
||||
* @return removeType
|
||||
*/
|
||||
public final ArrayList<String> getRemoveType() {
|
||||
return removeType;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* TODO Write javadoc for this method.
|
||||
* Write javadoc for this method.
|
||||
* @return removeSuperTypes
|
||||
*/
|
||||
public final boolean isRemoveSuperTypes() {
|
||||
@@ -67,7 +78,7 @@ public class Card_Type implements Comparable<Card_Type> {
|
||||
|
||||
/**
|
||||
*
|
||||
* TODO Write javadoc for this method.
|
||||
* Write javadoc for this method.
|
||||
* @return removeCardTypes
|
||||
*/
|
||||
public final boolean isRemoveCardTypes() {
|
||||
@@ -76,7 +87,7 @@ public class Card_Type implements Comparable<Card_Type> {
|
||||
|
||||
/**
|
||||
*
|
||||
* TODO Write javadoc for this method.
|
||||
* Write javadoc for this method.
|
||||
* @return removeSubTypes
|
||||
*/
|
||||
public final boolean isRemoveSubTypes() {
|
||||
@@ -85,7 +96,7 @@ public class Card_Type implements Comparable<Card_Type> {
|
||||
|
||||
/**
|
||||
*
|
||||
* TODO Write javadoc for this method.
|
||||
* Write javadoc for this method.
|
||||
* @return removeCreatureTypes
|
||||
*/
|
||||
public final boolean isRemoveCreatureTypes() {
|
||||
|
||||
@@ -130,7 +130,7 @@ public class StaticEffects {
|
||||
}
|
||||
|
||||
//remove Types
|
||||
if (params.containsKey("AddType")) {
|
||||
if (params.containsKey("AddType") || params.containsKey("RemoveType")) {
|
||||
affectedCard.removeChangedCardTypes(se.getTimestamp());
|
||||
}
|
||||
|
||||
|
||||
@@ -425,6 +425,11 @@ public class AbilityFactory_Animate {
|
||||
if (params.containsKey("Types")) {
|
||||
types.addAll(Arrays.asList(params.get("Types").split(",")));
|
||||
}
|
||||
|
||||
final ArrayList<String> removeTypes = new ArrayList<String>();
|
||||
if (params.containsKey("RemoveTypes")) {
|
||||
removeTypes.addAll(Arrays.asList(params.get("RemoveTypes").split(",")));
|
||||
}
|
||||
|
||||
//allow ChosenType - overrides anything else specified
|
||||
if (types.contains("ChosenType")) {
|
||||
@@ -493,7 +498,7 @@ public class AbilityFactory_Animate {
|
||||
|
||||
for (final Card c : tgts) {
|
||||
|
||||
final long colorTimestamp = doAnimate(c, af, power, toughness, types, finalDesc, keywords, timestamp);
|
||||
final long colorTimestamp = doAnimate(c, af, power, toughness, types, removeTypes, finalDesc, keywords, timestamp);
|
||||
|
||||
//give abilities
|
||||
final ArrayList<SpellAbility> addedAbilities = new ArrayList<SpellAbility>();
|
||||
@@ -572,7 +577,8 @@ public class AbilityFactory_Animate {
|
||||
* @return a long.
|
||||
*/
|
||||
private static long doAnimate(final Card c, final AbilityFactory af, final int power, final int toughness,
|
||||
final ArrayList<String> types, final String colors, final ArrayList<String> keywords, final long timestamp)
|
||||
final ArrayList<String> types, final ArrayList<String> removeTypes, final String colors, final ArrayList<String> keywords,
|
||||
final long timestamp)
|
||||
{
|
||||
HashMap<String, String> params = af.getMapParams();
|
||||
|
||||
@@ -617,7 +623,7 @@ public class AbilityFactory_Animate {
|
||||
}
|
||||
|
||||
if (!types.isEmpty()) {
|
||||
c.addChangedCardTypes(types, removeSuperTypes, removeCardTypes, removeSubTypes,
|
||||
c.addChangedCardTypes(types, removeTypes, removeSuperTypes, removeCardTypes, removeSubTypes,
|
||||
removeCreatureTypes, timestamp);
|
||||
}
|
||||
|
||||
@@ -920,6 +926,11 @@ public class AbilityFactory_Animate {
|
||||
if (params.containsKey("Types")) {
|
||||
types.addAll(Arrays.asList(params.get("Types").split(",")));
|
||||
}
|
||||
|
||||
final ArrayList<String> removeTypes = new ArrayList<String>();
|
||||
if (params.containsKey("RemoveTypes")) {
|
||||
removeTypes.addAll(Arrays.asList(params.get("RemoveTypes").split(",")));
|
||||
}
|
||||
|
||||
//allow ChosenType - overrides anything else specified
|
||||
if (types.contains("ChosenType")) {
|
||||
@@ -976,7 +987,7 @@ public class AbilityFactory_Animate {
|
||||
|
||||
for (final Card c : list) {
|
||||
|
||||
final long colorTimestamp = doAnimate(c, af, power, toughness, types, finalDesc, keywords, timestamp);
|
||||
final long colorTimestamp = doAnimate(c, af, power, toughness, types, removeTypes, finalDesc, keywords, timestamp);
|
||||
|
||||
//give abilities
|
||||
final ArrayList<SpellAbility> addedAbilities = new ArrayList<SpellAbility>();
|
||||
|
||||
@@ -87,7 +87,7 @@ public class StaticAbility {
|
||||
if(mapParams.containsKey("AddColor") || mapParams.containsKey("RemoveColor") || mapParams.containsKey("SetColor"))
|
||||
return 5;
|
||||
|
||||
if(mapParams.containsKey("AddType") || mapParams.containsKey("RemoveCardType")
|
||||
if(mapParams.containsKey("AddType") || mapParams.containsKey("RemoveType") || mapParams.containsKey("RemoveCardType")
|
||||
|| mapParams.containsKey("RemoveSubType") || mapParams.containsKey("RemoveSuperType"))
|
||||
return 4;
|
||||
|
||||
|
||||
@@ -39,6 +39,7 @@ public class StaticAbility_Continuous {
|
||||
String addAbilities[] = null;
|
||||
String addSVars[] = null;
|
||||
String addTypes[] = null;
|
||||
String removeTypes[] = null;
|
||||
String addColors = null;
|
||||
String addTriggers[] = null;
|
||||
boolean removeSuperTypes = false;
|
||||
@@ -104,6 +105,15 @@ public class StaticAbility_Continuous {
|
||||
}
|
||||
}
|
||||
|
||||
if (params.containsKey("RemoveType")) {
|
||||
removeTypes = params.get("RemoveType").split(" & ");
|
||||
if(removeTypes[0].equals("ChosenType")) {
|
||||
String chosenType = hostCard.getChosenType();
|
||||
removeTypes[0] = chosenType;
|
||||
se.setChosenType(chosenType);
|
||||
}
|
||||
}
|
||||
|
||||
if (params.containsKey("RemoveSuperTypes")) {
|
||||
removeSuperTypes = true;
|
||||
}
|
||||
@@ -175,8 +185,8 @@ public class StaticAbility_Continuous {
|
||||
affectedCard.setSVar(sVar, hostCard.getSVar(sVar));
|
||||
|
||||
// add Types
|
||||
if (addTypes != null)
|
||||
affectedCard.addChangedCardTypes(addTypes, removeSuperTypes, removeCardTypes, removeSubTypes,
|
||||
if (addTypes != null || removeTypes != null)
|
||||
affectedCard.addChangedCardTypes(addTypes, removeTypes, removeSuperTypes, removeCardTypes, removeSubTypes,
|
||||
removeCreatureTypes, hostCard.getTimestamp());
|
||||
|
||||
// add colors
|
||||
|
||||
Reference in New Issue
Block a user