- Added the option "RemoveType" to continuous static abilities to remove one special type.

- Added Melting.
This commit is contained in:
Sloth
2011-09-04 10:14:19 +00:00
parent e2c99a4218
commit b6581dba64
8 changed files with 79 additions and 25 deletions

1
.gitattributes vendored
View File

@@ -4703,6 +4703,7 @@ res/cardsfolder/m/meliras_keepers.txt svneol=native#text/plain
res/cardsfolder/m/meloku_the_clouded_mirror.txt svneol=native#text/plain res/cardsfolder/m/meloku_the_clouded_mirror.txt svneol=native#text/plain
res/cardsfolder/m/melt_terrain.txt svneol=native#text/plain res/cardsfolder/m/melt_terrain.txt svneol=native#text/plain
res/cardsfolder/m/meltdown.txt svneol=native#text/plain res/cardsfolder/m/meltdown.txt svneol=native#text/plain
res/cardsfolder/m/melting.txt -text
res/cardsfolder/m/memnarch.txt svneol=native#text/plain res/cardsfolder/m/memnarch.txt svneol=native#text/plain
res/cardsfolder/m/memnite.txt svneol=native#text/plain res/cardsfolder/m/memnite.txt svneol=native#text/plain
res/cardsfolder/m/memory_erosion.txt svneol=native#text/plain res/cardsfolder/m/memory_erosion.txt svneol=native#text/plain

View File

@@ -0,0 +1,11 @@
Name:Melting
ManaCost:3 R
Types:Enchantment
Text:no text
S:Mode$ Continuous | Affected$ Land | RemoveType$ Snow | Description$ All lands are no longer snow.
SVar:RemRandomDeck:True
SVar:Rarity:Rare
SVar:Picture:http://www.wizards.com/global/images/magic/general/melting.jpg
Oracle:All lands are no longer snow.
SetInfo:ICE|Uncommon|http://magiccards.info/scans/en/ia/201.jpg
End

View File

@@ -3120,13 +3120,11 @@ public class Card extends GameEntity implements Comparable<Card> {
ArrayList<String> newType = new ArrayList<String>(type); ArrayList<String> newType = new ArrayList<String>(type);
ArrayList<Card_Type> types = changedCardTypes; 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 Collections.sort(types); // sorts types by timeStamp
for (Card_Type ct : types) { for (Card_Type ct : types) {
ArrayList<String> removeTypes = new ArrayList<String>(); ArrayList<String> removeTypes = new ArrayList<String>();
removeTypes.addAll(ct.getRemoveType());
//remove old types //remove old types
for (int i = 0; i < newType.size(); i++) { for (int i = 0; i < newType.size(); i++) {
String t = newType.get(i); String t = newType.get(i);
@@ -3141,7 +3139,9 @@ public class Card extends GameEntity implements Comparable<Card> {
} }
newType.removeAll(removeTypes); newType.removeAll(removeTypes);
//add new types //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; return changedCardTypes;
} }
public void addChangedCardTypes(ArrayList<String> types, boolean removeSuperTypes, boolean removeCardTypes, public void addChangedCardTypes(ArrayList<String> types, ArrayList<String> removeTypes, boolean removeSuperTypes,
boolean removeSubTypes, boolean removeCreatureTypes, long timestamp) { 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) { boolean removeSubTypes, boolean removeCreatureTypes, long timestamp) {
ArrayList<String> typeList = new ArrayList<String>(Arrays.asList(types)); ArrayList<String> typeList = null;
addChangedCardTypes(typeList, removeSuperTypes, removeCardTypes, removeSubTypes, removeCreatureTypes, timestamp); 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) { public void removeChangedCardTypes(long timestamp) {

View File

@@ -12,6 +12,7 @@ import java.util.ArrayList;
public class Card_Type implements Comparable<Card_Type> { public class Card_Type implements Comparable<Card_Type> {
// takes care of individual card types // takes care of individual card types
private ArrayList<String> type = new ArrayList<String>(); private ArrayList<String> type = new ArrayList<String>();
private ArrayList<String> removeType = new ArrayList<String>();
private boolean removeSuperTypes; private boolean removeSuperTypes;
private boolean removeCardTypes; private boolean removeCardTypes;
private boolean removeSubTypes; private boolean removeSubTypes;
@@ -36,10 +37,11 @@ public class Card_Type implements Comparable<Card_Type> {
* @param removeCreatureType a boolean * @param removeCreatureType a boolean
* @param stamp a long * @param stamp a long
*/ */
Card_Type(final ArrayList<String> types, final boolean removeSuperType, final boolean removeCardType, Card_Type(final ArrayList<String> types, final ArrayList<String> removeTypes, final boolean removeSuperType,
final boolean removeSubType, final boolean removeCreatureType, final long stamp) final boolean removeCardType, final boolean removeSubType, final boolean removeCreatureType, final long stamp)
{ {
type = types; type = types;
removeType = removeTypes;
removeSuperTypes = removeSuperType; removeSuperTypes = removeSuperType;
removeCardTypes = removeCardType; removeCardTypes = removeCardType;
removeSubTypes = removeSubType; 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 * @return type
*/ */
public final ArrayList<String> getType() { public final ArrayList<String> getType() {
return type; 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 * @return removeSuperTypes
*/ */
public final boolean isRemoveSuperTypes() { 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 * @return removeCardTypes
*/ */
public final boolean isRemoveCardTypes() { 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 * @return removeSubTypes
*/ */
public final boolean isRemoveSubTypes() { 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 * @return removeCreatureTypes
*/ */
public final boolean isRemoveCreatureTypes() { public final boolean isRemoveCreatureTypes() {

View File

@@ -130,7 +130,7 @@ public class StaticEffects {
} }
//remove Types //remove Types
if (params.containsKey("AddType")) { if (params.containsKey("AddType") || params.containsKey("RemoveType")) {
affectedCard.removeChangedCardTypes(se.getTimestamp()); affectedCard.removeChangedCardTypes(se.getTimestamp());
} }

View File

@@ -425,6 +425,11 @@ public class AbilityFactory_Animate {
if (params.containsKey("Types")) { if (params.containsKey("Types")) {
types.addAll(Arrays.asList(params.get("Types").split(","))); 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 //allow ChosenType - overrides anything else specified
if (types.contains("ChosenType")) { if (types.contains("ChosenType")) {
@@ -493,7 +498,7 @@ public class AbilityFactory_Animate {
for (final Card c : tgts) { 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 //give abilities
final ArrayList<SpellAbility> addedAbilities = new ArrayList<SpellAbility>(); final ArrayList<SpellAbility> addedAbilities = new ArrayList<SpellAbility>();
@@ -572,7 +577,8 @@ public class AbilityFactory_Animate {
* @return a long. * @return a long.
*/ */
private static long doAnimate(final Card c, final AbilityFactory af, final int power, final int toughness, 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(); HashMap<String, String> params = af.getMapParams();
@@ -617,7 +623,7 @@ public class AbilityFactory_Animate {
} }
if (!types.isEmpty()) { if (!types.isEmpty()) {
c.addChangedCardTypes(types, removeSuperTypes, removeCardTypes, removeSubTypes, c.addChangedCardTypes(types, removeTypes, removeSuperTypes, removeCardTypes, removeSubTypes,
removeCreatureTypes, timestamp); removeCreatureTypes, timestamp);
} }
@@ -920,6 +926,11 @@ public class AbilityFactory_Animate {
if (params.containsKey("Types")) { if (params.containsKey("Types")) {
types.addAll(Arrays.asList(params.get("Types").split(","))); 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 //allow ChosenType - overrides anything else specified
if (types.contains("ChosenType")) { if (types.contains("ChosenType")) {
@@ -976,7 +987,7 @@ public class AbilityFactory_Animate {
for (final Card c : list) { 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 //give abilities
final ArrayList<SpellAbility> addedAbilities = new ArrayList<SpellAbility>(); final ArrayList<SpellAbility> addedAbilities = new ArrayList<SpellAbility>();

View File

@@ -87,7 +87,7 @@ public class StaticAbility {
if(mapParams.containsKey("AddColor") || mapParams.containsKey("RemoveColor") || mapParams.containsKey("SetColor")) if(mapParams.containsKey("AddColor") || mapParams.containsKey("RemoveColor") || mapParams.containsKey("SetColor"))
return 5; 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")) || mapParams.containsKey("RemoveSubType") || mapParams.containsKey("RemoveSuperType"))
return 4; return 4;

View File

@@ -39,6 +39,7 @@ public class StaticAbility_Continuous {
String addAbilities[] = null; String addAbilities[] = null;
String addSVars[] = null; String addSVars[] = null;
String addTypes[] = null; String addTypes[] = null;
String removeTypes[] = null;
String addColors = null; String addColors = null;
String addTriggers[] = null; String addTriggers[] = null;
boolean removeSuperTypes = false; 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")) { if (params.containsKey("RemoveSuperTypes")) {
removeSuperTypes = true; removeSuperTypes = true;
} }
@@ -175,8 +185,8 @@ public class StaticAbility_Continuous {
affectedCard.setSVar(sVar, hostCard.getSVar(sVar)); affectedCard.setSVar(sVar, hostCard.getSVar(sVar));
// add Types // add Types
if (addTypes != null) if (addTypes != null || removeTypes != null)
affectedCard.addChangedCardTypes(addTypes, removeSuperTypes, removeCardTypes, removeSubTypes, affectedCard.addChangedCardTypes(addTypes, removeTypes, removeSuperTypes, removeCardTypes, removeSubTypes,
removeCreatureTypes, hostCard.getTimestamp()); removeCreatureTypes, hostCard.getTimestamp());
// add colors // add colors