I'm thinking about really new features, like static and triggered abilities, the ability to target, or text changing effects.
Text changing effects are just very hard; they kind of break my concept of "one template, many instances" for abilities: The printed wording can be shared between cards, just its interpretation, the rules meaning, is card-specific.
Targets are currently not my goal; I don't really want to do much UI at the moment, and this in inevitable with giving the player yet another possibility to make a choice.
That neatly leaves behind the two thing I already stated in the title, and they have one thing in common which currently gives me a headache: Scope of influence.
The scope of an ability means in what places and at what times it works. For spells and activated abilities it's comparable to legality, but the big difference is that the user initiates those abilities; static and triggered abilities are around at all times.
There are two ways to handle the situation:
- keep all abilities at all times and ask them if they should apply on every single occasion
- let the abilities themselves handle it; registering and unregistering using some events
A more obvious, but still realistic example is controller changes: Imagine you get control of a Glorious Anthem, but it still pumps your opponent's creatures.
But even the first approach has similar issues, namely abilities that didn't exist at the beginning of the game, for example on tokens or from Auras. If you register all abilities at the beginning of the game, those would be ignored.
If you expected a definitive solution here, I'm sorry. I don't have one. There's no right way to do anything, just several ways with different consequences.
1 comment:
I would like to see triggered abilities best of all. Need to say that continious effects already working in magicwars that uses your framework. At least you example with Anthem would work for sure. Though my approach takes some resources, as every effect is reapplied after every action, so it is "1. keep all abilities...", right?
and the script looks like:
@effect({
def creatures = {$myCreatures}
whileOnBattlefield(pumpPowerToughness(creatures, 1, 1))
})
at least this approach works (even for Mind Control + Act of Treason + Mind Control example, that was headache on old architecture).
anyway, keep doing LM. probably I can help you with gui? e.g. with ordering the blockers, I like the way it is implemented in mtgo, and anyway I will do it in magicwars soon.
Post a Comment