@Dennis: for me, it's more of my computer slowing down to a sleepy snail's pace

.
@Rob: I would say that an optimal solution for AI methods would be a CardFactoryAI, which stores all (non-equivalent) AIresolve, canPlayAI, and chooseTargetAI methods, and only gets used during the actual game.
@Classes idea: I do think it's better to have a 40k line class than having 2000 20 line classes

. Also, if AI methods get split off, it would be feasible to make a pseudocode card factory and run it through a generic action parser, and then convert all the "Card tok = new Card()"'s and "AllZone.Play.add(tok)"'s
into something more non-coder friendly:
- Code: Select all
Make activated ability named ab1
Set ab1 mana cost to "1G"
Make action named ab1resolve
{
Make card named tok
Set tok name to "Insect"
Set tok mana cost to "G"
Set tok pt to 1/1
Set tok image to "insect_1_1.jpg"
Put tok in battlefield
}
Set ab1 resolve to ab1resolve
Set ab1 description to "1G: Put a 1/1 green Insect creature token onto the battlefield."
Add ab1 to card
Along these lines, you could of course have
- Code: Select all
Make input named in
Set in buttons to none
Set in choose card to "target <insert spDestroy card filter here>"
Set card input to in
Or
- Code: Select all
...
Make action choose
{
Get in chosen card named choice
If choice not in play
Exit
Get choice controller named cont
Get maincard controller named cont2
If cont not equal to cont2
Exit
Set maincard target to choice
Make input named manain
Set card mana cost to mcost
Input mcost
}
Set in choose card to choose
...
This shouldn't be too hard to make either:
<code pending, wait for edit if not obvious, meanwhile comments please

>
EDIT: Look a couple posts down
