mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 04:08:01 +00:00
- Added the option "RemoveType" to continuous static abilities to remove one special type.
- Added Melting.
This commit is contained in:
1
.gitattributes
vendored
1
.gitattributes
vendored
@@ -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
|
||||||
|
|||||||
11
res/cardsfolder/m/melting.txt
Normal file
11
res/cardsfolder/m/melting.txt
Normal 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
|
||||||
@@ -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
|
||||||
|
if (ct.getType() != null) {
|
||||||
newType.addAll(ct.getType());
|
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) {
|
||||||
|
|||||||
@@ -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,7 +51,7 @@ 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() {
|
||||||
@@ -58,7 +60,16 @@ public class Card_Type implements Comparable<Card_Type> {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* TODO Write javadoc for this method.
|
* Write javadoc for this method.
|
||||||
|
* @return removeType
|
||||||
|
*/
|
||||||
|
public final ArrayList<String> getRemoveType() {
|
||||||
|
return removeType;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* 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() {
|
||||||
|
|||||||
@@ -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());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -426,6 +426,11 @@ public class AbilityFactory_Animate {
|
|||||||
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")) {
|
||||||
types.clear();
|
types.clear();
|
||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -921,6 +927,11 @@ public class AbilityFactory_Animate {
|
|||||||
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")) {
|
||||||
types.clear();
|
types.clear();
|
||||||
@@ -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>();
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user