spDestroyTgt keyword
Post MTG Forge Related Programming Questions Here
Moderators: timmermac, Blacksmith, KrazyTheFox, Agetian, friarsol, CCGHQ Admins
spDestroyTgt keyword
by Rob Cashwalker » 03 Jul 2009, 15:38
Hi, Billy Mays here for the Destroy Target keyword!
Finally, the answer to every pesky permanent! It handles any combination of the following target restrictions:
Artifact, Creature, Enchantment, Land, Permanent, White, Blue, Black, Red, Green, Colorless, MultiColor
non-Artifact, non-Creature, non-Enchantment, non-Land, non-Permanent
non-White, non-Blue, non-Black, non-Red, non-Green, non-Colorless, non-MultiColor
Shatter? No problem!
Shatter
1 R
Instant
Destory target artifact.
spDestroyTgt:Artifact
Naturalize? Bob's your uncle!
Naturalize
1 G
Instant
Destroy target artifact or enchantment.
spDestroyTgt:Artifact,Enchantment
But wait there's more!
Deathmark
B
Sorcery
Destroy target green or white creature.
spDestroy:Creature,Green,White
And if you integrate this code right now, I'll throw this in for free!
Ghostly Visit
2 B
Sorcery
Destroy target nonblack creature.
spDestroyTgt:non-Black,Creature
CardFactory:
Destroy target ____.
Whatever is in the blank section (character 15 through to the period) is used as is.
Finally, the answer to every pesky permanent! It handles any combination of the following target restrictions:
Artifact, Creature, Enchantment, Land, Permanent, White, Blue, Black, Red, Green, Colorless, MultiColor
non-Artifact, non-Creature, non-Enchantment, non-Land, non-Permanent
non-White, non-Blue, non-Black, non-Red, non-Green, non-Colorless, non-MultiColor
Shatter? No problem!
Shatter
1 R
Instant
Destory target artifact.
spDestroyTgt:Artifact
Naturalize? Bob's your uncle!
Naturalize
1 G
Instant
Destroy target artifact or enchantment.
spDestroyTgt:Artifact,Enchantment
But wait there's more!
Deathmark
B
Sorcery
Destroy target green or white creature.
spDestroy:Creature,Green,White
And if you integrate this code right now, I'll throw this in for free!
Ghostly Visit
2 B
Sorcery
Destroy target nonblack creature.
spDestroyTgt:non-Black,Creature
CardFactory:
- Code: Select all
private final int shouldSpDestroyTgt(Card c){
ArrayList<String> a = c.getKeyword();
for (int i = 0; i < a.size(); i++)
if (a.get(i).toString().startsWith("spDestroyTgt:"))
return i;
return -1;
}
- Code: Select all
// Generic destroy target card
if (shouldSpDestroyTgt(card) != -1)
{
int n = shouldSpDestroyTgt(card);
String parse = card.getKeyword().get(n).toString();
card.removeIntrinsicKeyword(parse);
String k[] = parse.split(":");
String Targets = k[1]; // Artifact, Creature, Enchantment, Land, Permanent, White, Blue, Black, Red, Green, Colorless, MultiColor
// non-Artifact, non-Creature, non-Enchantment, non-Land, non-Permanent,
//non-White, non-Blue, non-Black, non-Red, non-Green, non-Colorless, non-MultiColor
final String Tgts[] = Targets.split(",");
String tmpDesc = card.getText().substring(15);
int i = tmpDesc.indexOf(".");
tmpDesc = tmpDesc.substring(0, i);
final String Selec = new String("Select target " + tmpDesc + " to destroy.");
card.clearSpellAbility();
final SpellAbility spDstryTgt = new Spell(card)
{
private static final long serialVersionUID = 142142142142L;
public boolean canPlayAI()
{
CardList results = new CardList();
CardList choices = getTargets();
if (choices.size() > 0)
{
for (int i = 0; i < Tgts.length; i++)
{
if (Tgts[i].equals("Artifact"))
results.add(CardFactoryUtil.AI_getBestArtifact(choices));
else if (Tgts[i].equals("Creature"))
results.add(CardFactoryUtil.AI_getBestCreature(choices));
else if (Tgts[i].equals("Enchantment"))
results.add(CardFactoryUtil.AI_getBestEnchantment(choices, card, true));
else if (Tgts[i].equals("Land"))
results.add(CardFactoryUtil.AI_getBestLand(choices));
else if (Tgts[i].equals("Permanent"))
results.add(CardFactoryUtil.AI_getMostExpensivePermanent(choices, card, true));
}
}
if (results.size() > 0)
{
results.shuffle();
setTargetCard(results.get(0));
return true;
}
return false;
}
CardList getTargets()
{
CardList tmpList = new CardList();
tmpList.addAll(AllZone.Human_Play.getCards());
tmpList.filter(new CardListFilter()
{
public boolean addCard(Card c)
{
return (CardFactoryUtil.canTarget(card, c));
}
});
final CardList list = tmpList;
return CardFactoryUtil.getValidCards(list, Tgts);
}
public void resolve()
{
if (AllZone.GameAction.isCardInPlay(getTargetCard()) && CardFactoryUtil.canTarget(card, getTargetCard()))
AllZone.GameAction.destroy(getTargetCard());
}
}; //SpDstryTgt
Input InGetTarget = new Input()
{
private static final long serialVersionUID = -142142142142L;
public void showMessage()
{
CardList allCards = new CardList();
allCards.addAll(AllZone.Human_Play.getCards());
allCards.addAll(AllZone.Computer_Play.getCards());
CardList choices = CardFactoryUtil.getValidCards(allCards, Tgts);
stopSetNext(CardFactoryUtil.input_targetSpecific(spDstryTgt, choices, Selec, true));
}
};//InGetTarget
spDstryTgt.setBeforePayMana(InGetTarget);
card.addSpellAbility(spDstryTgt);
}//spDestroyTgt
- Code: Select all
public static CardList getValidCards(CardList baseList, String Tgts[])
{
//CardList newList = new CardList();
CardList tmpList = baseList;
final String T[] = Tgts;
tmpList = tmpList.filter(new CardListFilter()
{
public boolean addCard(Card c)
{
boolean r = false;
for (int i=0; i<T.length; i++)
{
if (T[i].contains("White") ||
T[i].contains("Blue") ||
T[i].contains("Black") ||
T[i].contains("Red") ||
T[i].contains("Green") ||
T[i].contains("Colorless"))
if (T[i].startsWith("non-"))
r = r || (! CardUtil.getColors(c).contains(T[i].toLowerCase()));
else
r = r || (CardUtil.getColors(c).contains(T[i].toLowerCase()));
else if (T[i].contains("MultiColor"))
if (T[i].startsWith("non-"))
r = r || (CardUtil.getColors(c).size() == 1);
else
r = r || (CardUtil.getColors(c).size() > 1);
else
if (T[i].startsWith("non-"))
r = r || (! c.getType().contains(T[i]));
else
r = r || (c.getType().contains(T[i]));
}
return r;
}
});
return tmpList;
}
public static Card AI_getBestLand(CardList list)
{
CardList land = list.getType("Land");
if (! (land.size() > 0))
return null;
CardList nbLand = land.filter(new CardListFilter () // prefer to target non basic lands
{
public boolean addCard(Card c)
{
return (!c.getType().contains("Basic"));
}
}
);
if (nbLand.size() > 0)
{
//TODO: Rank non basics?
Random r = new Random();
return nbLand.get(r.nextInt(nbLand.size()));
}
// if no non-basic lands, target the least represented basic land type
String names[] = {"Plains", "Island", "Swamp", "Mountain", "Forest"};
String sminBL = new String();
int iminBL = 20000; // hopefully no one will ever have more than 20000 lands of one type....
int n = 0;
for (int i = 0; i < 5; i++)
{
n = land.getType(names[i]).size();
if (n < iminBL && n > 0) // if two or more are tied, only the first one checked will be used
{
iminBL = n;
sminBL = names[i];
}
}
if (iminBL == 20000)
return null; // no basic land was a minimum
CardList BLand = land.getType(sminBL);
for (int i=0; i<BLand.size(); i++)
if (!BLand.get(i).isTapped()) // prefer untapped lands
return BLand.get(i);
Random r = new Random();
return BLand.get(r.nextInt(BLand.size())); // random tapped land of least represented type
}
Destroy target ____.
Whatever is in the blank section (character 15 through to the period) is used as is.
The Force will be with you, Always.
-
Rob Cashwalker - Programmer
- Posts: 2167
- Joined: 09 Sep 2008, 15:09
- Location: New York
- Has thanked: 5 times
- Been thanked: 40 times
Re: spDestroyTgt keyword
by Rob Cashwalker » 03 Jul 2009, 16:09
There's even more!
No Regeneration? No Problem!
Terror
1 B
Sorcery
Destroy target nonblack, nonartifact creature. It can't be regenerated.
spDestroyTgt:non-Black,non-Artifact,Creature:NoRegen
Just use this CardFactory code instead and pay separate shipping and handling!
No Regeneration? No Problem!
Terror
1 B
Sorcery
Destroy target nonblack, nonartifact creature. It can't be regenerated.
spDestroyTgt:non-Black,non-Artifact,Creature:NoRegen
Just use this CardFactory code instead and pay separate shipping and handling!
- Code: Select all
// Generic destroy target card
if (shouldSpDestroyTgt(card) != -1)
{
int n = shouldSpDestroyTgt(card);
String parse = card.getKeyword().get(n).toString();
card.removeIntrinsicKeyword(parse);
String k[] = parse.split(":");
String Targets = k[1]; // Artifact, Creature, Enchantment, Land, Permanent, White, Blue, Black, Red, Green, Colorless, MultiColor
// non-Artifact, non-Creature, non-Enchantment, non-Land, non-Permanent,
//non-White, non-Blue, non-Black, non-Red, non-Green, non-Colorless, non-MultiColor
final String Tgts[] = Targets.split(",");
String tmpDesc = card.getText().substring(15);
int i = tmpDesc.indexOf(".");
tmpDesc = tmpDesc.substring(0, i);
final String Selec = new String("Select target " + tmpDesc + " to destroy.");
final boolean NoRegen = (k.length == 3);
card.clearSpellAbility();
final SpellAbility spDstryTgt = new Spell(card)
{
private static final long serialVersionUID = 142142142142L;
public boolean canPlayAI()
{
CardList results = new CardList();
CardList choices = getTargets();
if (choices.size() > 0)
{
for (int i = 0; i < Tgts.length; i++)
{
if (Tgts[i].equals("Artifact"))
results.add(CardFactoryUtil.AI_getBestArtifact(choices));
else if (Tgts[i].equals("Creature"))
results.add(CardFactoryUtil.AI_getBestCreature(choices));
else if (Tgts[i].equals("Enchantment"))
results.add(CardFactoryUtil.AI_getBestEnchantment(choices, card, true));
else if (Tgts[i].equals("Land"))
results.add(CardFactoryUtil.AI_getBestLand(choices));
else if (Tgts[i].equals("Permanent"))
results.add(CardFactoryUtil.AI_getMostExpensivePermanent(choices, card, true));
}
}
if (results.size() > 0)
{
results.shuffle();
setTargetCard(results.get(0));
return true;
}
return false;
}
CardList getTargets()
{
CardList tmpList = new CardList();
tmpList.addAll(AllZone.Human_Play.getCards());
tmpList.filter(new CardListFilter()
{
public boolean addCard(Card c)
{
return (CardFactoryUtil.canTarget(card, c));
}
});
final CardList list = tmpList;
return CardFactoryUtil.getValidCards(list, Tgts);
}
public void resolve()
{
if (AllZone.GameAction.isCardInPlay(getTargetCard()) && CardFactoryUtil.canTarget(card, getTargetCard()))
if (NoRegen)
AllZone.GameAction.destroyNoRegeneration(getTargetCard());
else
AllZone.GameAction.destroy(getTargetCard());
}
}; //SpDstryTgt
Input InGetTarget = new Input()
{
private static final long serialVersionUID = -142142142142L;
public void showMessage()
{
CardList allCards = new CardList();
allCards.addAll(AllZone.Human_Play.getCards());
allCards.addAll(AllZone.Computer_Play.getCards());
CardList choices = CardFactoryUtil.getValidCards(allCards, Tgts);
stopSetNext(CardFactoryUtil.input_targetSpecific(spDstryTgt, choices, Selec, true));
}
};//InGetTarget
spDstryTgt.setBeforePayMana(InGetTarget);
card.addSpellAbility(spDstryTgt);
}//spDestroyTgt
The Force will be with you, Always.
-
Rob Cashwalker - Programmer
- Posts: 2167
- Joined: 09 Sep 2008, 15:09
- Location: New York
- Has thanked: 5 times
- Been thanked: 40 times
Re: spDestroyTgt keyword
by Sloth » 03 Jul 2009, 17:01
This is really great! There must be dozens of cards, that can be added. I randomly start with green spells:
- Code: Select all
Creeping Mold
2 G G
Sorcery
Destroy target artifact, enchantment, or land.
spDestroyTgt:Artifact,Enchantment,Land
Desert Twister
4 G G
Sorcery
Destroy target permanent.
spDestroyTgt:Permanent
Oxidize
G
Instant
Destroy target artifact. It can't be regenerated.
spDestroyTgt:Artifact:NoRegen
Putrefy
1 B G
Instant
Destroy target artifact or creature. It can't be regenerated.
spDestroyTgt:Artifact,Creature:NoRegen
Verdigris
2 G
Instant
Destroy target artifact.
spDestroyTgt:Artifact
Winter's Grasp
1 G G
Sorcery
Destroy target land.
spDestroyTgt:Land
-
Sloth - Programmer
- Posts: 3498
- Joined: 23 Jun 2009, 19:40
- Has thanked: 125 times
- Been thanked: 507 times
Re: spDestroyTgt keyword
by DennisBergkamp » 03 Jul 2009, 21:41
Wow, awesome stuff Rob!!!
I'm very close to releasing a new beta though, I'm thinking I'll wait with adding this until the version after. Too much new stuff otherwise.
I'm very close to releasing a new beta though, I'm thinking I'll wait with adding this until the version after. Too much new stuff otherwise.
-
DennisBergkamp - AI Programmer
- Posts: 2602
- Joined: 09 Sep 2008, 15:46
- Has thanked: 0 time
- Been thanked: 0 time
Re: spDestroyTgt keyword
by silly freak » 03 Jul 2009, 21:46
i smell an and/or problem
"destroy target green or white creature"
how does it know that creature is a must, but g/w are alternatives?
and if it works, is "destroy target creature that's both green and white" possile?
but hey, great work i must say, seems a really universal utility. i'd just like to know what this list exactly means
"destroy target green or white creature"
how does it know that creature is a must, but g/w are alternatives?
and if it works, is "destroy target creature that's both green and white" possile?
but hey, great work i must say, seems a really universal utility. i'd just like to know what this list exactly means
___
where's the "trust me, that will work!" switch for the compiler?
Laterna Magica - blog, forum, project, 2010/09/06 release!
where's the "trust me, that will work!" switch for the compiler?
Laterna Magica - blog, forum, project, 2010/09/06 release!
- silly freak
- DEVELOPER
- Posts: 598
- Joined: 26 Mar 2009, 07:18
- Location: Vienna, Austria
- Has thanked: 93 times
- Been thanked: 25 times
Re: spDestroyTgt keyword
by zerker2000 » 03 Jul 2009, 22:29
Definently awesome!DennisBergkamp wrote:Wow, awesome stuff Rob!!!
I'm very close to releasing a new beta though, I'm thinking I'll wait with adding this until the version after. Too much new stuff otherwise.
Also Dennis, if my ManaPool.class is to be inluded in the beta, please wait a bit on that: I found a bunch of bugs with it, and am currently in the middle of modifying it heavily to get my "Ability_Mana.class" to work(If all goes well, mana abilities will now go through the mana pool as they technically should / is easier for me to code).
O forest, hold thy wand'ring son
Though fears assail the door.
O foliage, cloak thy ravaged one
In vestments cut for war.
--Eladamri, the Seed of Freyalise
Though fears assail the door.
O foliage, cloak thy ravaged one
In vestments cut for war.
--Eladamri, the Seed of Freyalise
- zerker2000
- Programmer
- Posts: 569
- Joined: 09 May 2009, 21:40
- Location: South Pasadena, CA
- Has thanked: 0 time
- Been thanked: 0 time
Re: spDestroyTgt keyword
by Rob Cashwalker » 04 Jul 2009, 03:17
Green OR White works no problem. In CardFactoryUtil I added getValidCards(list). What it does is filters the cards in the provided list and if it meets any of the target restrictions then it includes it in the filter. If it doesn't meet the restrictions, it eliminates it as a choice.silly freak wrote:i smell an and/or problem
"destroy target green or white creature"
how does it know that creature is a must, but g/w are alternatives?
and if it works, is "destroy target creature that's both green and white" possile?
but hey, great work i must say, seems a really universal utility. i'd just like to know what this list exactly means
To make Green AND White, I think if you specify it like this, you could hack it:
spDestroyTgt:Green,White,non-Blue,non-Black,non-Red,MultiColor,Creature
Sure it's hacky, but at this point, who's counting?
You are putting some doubt in my mind though, I haven't tested it with more than some basic cards, and when I was testing I didn't have the NoRegen clause figured out to make Terror.
The Force will be with you, Always.
-
Rob Cashwalker - Programmer
- Posts: 2167
- Joined: 09 Sep 2008, 15:09
- Location: New York
- Has thanked: 5 times
- Been thanked: 40 times
Re: spDestroyTgt keyword
by zerker2000 » 04 Jul 2009, 06:00
Very: any Green and White and <another color> creature would be filtered out.Rob Cashwalker wrote:spDestroyTgt:Green,White,non-Blue,non-Black,non-Red,MultiColor,Creature
Sure it's hacky...
... maybe have it use "and", "or" and "non-", leaving "," only for different filter types?(e.g. "<color filter>,<type filter>", with the color filter applying to manacost, and type filter applying to super/card/sub/creature types ... as I am sure there are cards that say "destroy target goblin" or something, and e.g. Tsabo Tavoc has "destroy target legend")
I am sorry if what I'm asking for is harder than it sounds, I keep running into that myself

O forest, hold thy wand'ring son
Though fears assail the door.
O foliage, cloak thy ravaged one
In vestments cut for war.
--Eladamri, the Seed of Freyalise
Though fears assail the door.
O foliage, cloak thy ravaged one
In vestments cut for war.
--Eladamri, the Seed of Freyalise
- zerker2000
- Programmer
- Posts: 569
- Joined: 09 May 2009, 21:40
- Location: South Pasadena, CA
- Has thanked: 0 time
- Been thanked: 0 time
Re: spDestroyTgt keyword
by DennisBergkamp » 04 Jul 2009, 07:48
Alright. Actually, I haven't added the ManaPool class into the beta yet, it seemed a work in progress still (and I was right!).Definently awesome!
Also Dennis, if my ManaPool.class is to be inluded in the beta, please wait a bit on that: I found a bunch of bugs with it, and am currently in the middle of modifying it heavily to get my "Ability_Mana.class" to work(If all goes well, mana abilities will now go through the mana pool as they technically should / is easier for me to code).
I'm still waiting for some feedback from rares (I have a bunch of questions about the combat code I'm still kind of in the process of merging). So maybe I'll add both your ManaPool class and Rob's spDestroyTgt keyword to this coming beta anyway.
-
DennisBergkamp - AI Programmer
- Posts: 2602
- Joined: 09 Sep 2008, 15:46
- Has thanked: 0 time
- Been thanked: 0 time
Re: spDestroyTgt keyword
by Rob Cashwalker » 04 Jul 2009, 12:38
I gave that some thought originally. The commas are necessary to make the split into each element. I thought about using "and-" and "or-" along with "non-" to combine them, but it didn't seem practical. The getValidCards() routine would have to look at the next element (if it existed) looking for the "and". The number of cards that use "and" are small enough that we can start with these simple ones until we figure out an easy way to make it do "and".zerker2000 wrote:Very: any Green and White and <another color> creature would be filtered out.Rob Cashwalker wrote:spDestroyTgt:Green,White,non-Blue,non-Black,non-Red,MultiColor,Creature
Sure it's hacky...
... maybe have it use "and", "or" and "non-", leaving "," only for different filter types?(e.g. "<color filter>,<type filter>", with the color filter applying to manacost, and type filter applying to super/card/sub/creature types ... as I am sure there are cards that say "destroy target goblin" or something, and e.g. Tsabo Tavoc has "destroy target legend")
I am sorry if what I'm asking for is harder than it sounds, I keep running into that myself
"Legendary,Permanent" should work - It will filter the list to just legendary cards, then the AI will pick the most expensive one (until someone re-works that routine to be smarter).
Besides, that's an ability, not a spell. I haven't started even considering abilities with this function. The point was to make more spells available, since we've got a ton of creatures.
The Force will be with you, Always.
-
Rob Cashwalker - Programmer
- Posts: 2167
- Joined: 09 Sep 2008, 15:09
- Location: New York
- Has thanked: 5 times
- Been thanked: 40 times
Re: spDestroyTgt keyword
by Rob Cashwalker » 04 Jul 2009, 13:23
As suspected, I'll have to go back to the drawing board on this. I just tested Hand of Death. and I was able to target a white enchantment.
So hold off on it till the next beta...unless I get this figured out sooner.
So hold off on it till the next beta...unless I get this figured out sooner.
The Force will be with you, Always.
-
Rob Cashwalker - Programmer
- Posts: 2167
- Joined: 09 Sep 2008, 15:09
- Location: New York
- Has thanked: 5 times
- Been thanked: 40 times
Re: spDestroyTgt keyword
by zerker2000 » 04 Jul 2009, 21:27
I expected that to mean 12-36 hoursDennisBergkamp wrote:I'm very close to releasing a new beta though

... I will probably get a working version of the Ability_Mana parser within the next week though(just minor bugs left, but the last few "minor bugs" I solved snowballed into " 'orfull mess"-es

- Code: Select all
import java.util.*;
public class Input_PayManaCostUtil
{
//all mana abilities start with this and typical look like "tap: add G"
//mana abilities are Strings and are retreaved by calling card.getKeyword()
//taps any card that has mana ability, not just land
public static ManaCost tapCard(Card card, ManaCost manaCost)
{
/**/if(card instanceof ManaPool) return ((ManaPool)card).subtractMana(manaCost);//*/
ArrayList<Ability_Mana> abilities = getManaAbilities(card);
if(abilities.isEmpty())
return manaCost;
String color;
Ability_Mana chosen = abilities.get(0);
if(1 < abilities.size())
{
HashMap<String, Ability_Mana> ability = new HashMap<String, Ability_Mana>();
for(Ability_Mana am : abilities)
ability.put(am.toString(), am);
chosen = (Ability_Mana) AllZone.Display.getChoice("Choose mana ability", abilities.toArray());
//chosen = ability.get(color);
}
color=chosen.Mana;
//if (!(color.equals("G") || color.equals("U") || color.equals("W") ||
// color.equals("B") || color.equals("R") || color.equals("1")))
{
AllZone.GameAction.playSpellAbility(chosen);
for(String c : color.split(""))
{
if(c.equals("")) continue; // some sort of glitch
AllZone.ManaPool.subtractOne(manaCost, c);
}
AllZone.Human_Play.updateObservers();
return manaCost;
}
/*
...
---Most of the original code, commented
...
*/
}
public static ArrayList<Ability_Mana> getManaAbilities(Card card)
{
if (card instanceof ManaPool) return ((ManaPool)card).getManaAbility();
SpellAbility[] check = card.getSpellAbility();
ArrayList<Ability_Mana> choices = new ArrayList<Ability_Mana>();
//String m;
for(SpellAbility sa : check)
{
if(sa instanceof Ability_Mana)
{
/*m = ((Ability_Mana)sa).Mana;
if (m.equals("G") || m.equals("U") || m.equals("W") ||
m.equals("B") || m.equals("R") || m.equals("1"))
m=getColor(m);
choices.add(getColor(m));
---Left from when getManaAbilities still returned Strings, not Ability_Mana's
*/
choices.add((Ability_Mana)sa);
}
}
return choices;
}
/*
----I think this was already commented originally...
*/
//color is like "G", returns "Green"
public static String getColor(String color)
{
Map<String, String> m = new HashMap<String, String>();
m.put("G", Constant.Color.Green);
m.put("R", Constant.Color.Red);
m.put("U", Constant.Color.Blue);
m.put("B", Constant.Color.Black);
m.put("W", Constant.Color.White);
Object o = m.get(color);
if(o == null)
o = Constant.Color.Colorless;
return o.toString();
}
public static String getColor2(String color)
{
Map<String, String> m = new HashMap<String, String>();
m.put(Constant.Color.Green, "G");
m.put(Constant.Color.Red, "R");
m.put(Constant.Color.Blue, "U");
m.put(Constant.Color.Black, "B");
m.put(Constant.Color.White, "W");
m.put(Constant.Color.Colorless, "1");
Object o = m.get(color);
return o.toString();
}
}
O forest, hold thy wand'ring son
Though fears assail the door.
O foliage, cloak thy ravaged one
In vestments cut for war.
--Eladamri, the Seed of Freyalise
Though fears assail the door.
O foliage, cloak thy ravaged one
In vestments cut for war.
--Eladamri, the Seed of Freyalise
- zerker2000
- Programmer
- Posts: 569
- Joined: 09 May 2009, 21:40
- Location: South Pasadena, CA
- Has thanked: 0 time
- Been thanked: 0 time
Re: spDestroyTgt keyword
by DennisBergkamp » 04 Jul 2009, 22:48
Well, I can release something now
But then I started messing around with auras again. I got Rancor coded now, I think it works alright (can't find any bugs with it).

-
DennisBergkamp - AI Programmer
- Posts: 2602
- Joined: 09 Sep 2008, 15:46
- Has thanked: 0 time
- Been thanked: 0 time
Re: spDestroyTgt keyword
by zerker2000 » 05 Jul 2009, 03:23
Please do (my latest deck
).

O forest, hold thy wand'ring son
Though fears assail the door.
O foliage, cloak thy ravaged one
In vestments cut for war.
--Eladamri, the Seed of Freyalise
Though fears assail the door.
O foliage, cloak thy ravaged one
In vestments cut for war.
--Eladamri, the Seed of Freyalise
- zerker2000
- Programmer
- Posts: 569
- Joined: 09 May 2009, 21:40
- Location: South Pasadena, CA
- Has thanked: 0 time
- Been thanked: 0 time
Re: spDestroyTgt keyword
by DennisBergkamp » 05 Jul 2009, 19:52
Busy today...
I'll try and release something tomorrow
I'll try and release something tomorrow

-
DennisBergkamp - AI Programmer
- Posts: 2602
- Joined: 09 Sep 2008, 15:46
- Has thanked: 0 time
- Been thanked: 0 time
54 posts
• Page 1 of 4 • 1, 2, 3, 4
Who is online
Users browsing this forum: No registered users and 34 guests