New Flexible Spell, Effects, Status System Discussion

Typing up my thoughts here as I think through the process for future coding reference:
So I think Karl's suggestion for handling component based spells/special abilities is the way to go for the future system change.
Carrier:A means to transfer effects (see below) on a target. Carriers can be melee attacks, spells, ranged attacks, used items... The carriers have different ranges, hit chances, eligible targets (pc, creature, in friendly, ally or all variants, single square, area of various shapes). When pressing the button associated with the carrier (attack, cast, use item) the target selection is started, following the rules for this carrier.
Effect: A component of a carrier. Simplest component is direct damage, like d8 for long sword (this type of simple effect will probably not need an effect object and can continue to use the properties in the Item class). An additonal component might be the application of a status to target (like bleeding or poisoned). It might be healing, it might be change position x,y of target, etc. Again, a carrier can carry many of these effects at the same time. Each effect allows for saving throw and resistance individually (or do not grant such rolls). These rolls prevent the application of the effect.
I will add many new properties to the Effect class and effects will be used for both instantaneous and duration type effects. Spells will basically reference one of these effects to handle any effect that doesn't need a custom script. So the Spell, Item, Combat Prop Square, creature attack, etc. will handle the selecting of targets and attack roll if needed and then they will reference an effect which will make DC checks and then apply damage, healing, buff, debuff, etc. Items will gain a new property called ApplyEffectList which will be a list of effects to apply upon a successful hit or use of an item to the targets selected. Creatures will gain a property called ApplyEffectList which will work the same as an item. Spells will gain a property called SpellEffectList with a list of effects to apply. Similar property will be added to combat props (don't exist just yet).
I was think for Effect class to add a UI element to the Effect editor for something like this (for damage types):
Attack: _d_+_ for every _ levels after level _ up to _ levels total
_ of these attacks for every _ levels after level _ up to _ attacks total
so a mage bolt spell would use: 1d4+1 for every 0 levels after level 0 up to 0 levels total
1 of these attacks for every 2 levels after level 1 up to 99 attacks total
and a fireball would use: 1d6+0 for every 1 levels after level 0 up to 10 levels total
1 of these attacks for every 0 levels after level 0 up to 1 attacks total
As far as the Player and Creature Status property, I think we will still use a simple enumeration of Alive (can do all types of actions), Dead (represents both dead and unconscious), Immobile (can't move but can do other actions), Held (can't move or do any actions). These basic enums are used for checks on determining what a Player and Creature can do (maybe add Ignored for stealth or invisible and Silenced or such). I guess these determinations could be gathered from a list of Statuses on the PC or creature as Karl suggested, that would probably make more sense.
Thoughts? Will be fun to code all of this, but in the end it should be a flexible system and easy/simple for all builders to use. Plus it should result in less and cleaner code in the long run which is always a plus
So I think Karl's suggestion for handling component based spells/special abilities is the way to go for the future system change.
Carrier:A means to transfer effects (see below) on a target. Carriers can be melee attacks, spells, ranged attacks, used items... The carriers have different ranges, hit chances, eligible targets (pc, creature, in friendly, ally or all variants, single square, area of various shapes). When pressing the button associated with the carrier (attack, cast, use item) the target selection is started, following the rules for this carrier.
Effect: A component of a carrier. Simplest component is direct damage, like d8 for long sword (this type of simple effect will probably not need an effect object and can continue to use the properties in the Item class). An additonal component might be the application of a status to target (like bleeding or poisoned). It might be healing, it might be change position x,y of target, etc. Again, a carrier can carry many of these effects at the same time. Each effect allows for saving throw and resistance individually (or do not grant such rolls). These rolls prevent the application of the effect.
I will add many new properties to the Effect class and effects will be used for both instantaneous and duration type effects. Spells will basically reference one of these effects to handle any effect that doesn't need a custom script. So the Spell, Item, Combat Prop Square, creature attack, etc. will handle the selecting of targets and attack roll if needed and then they will reference an effect which will make DC checks and then apply damage, healing, buff, debuff, etc. Items will gain a new property called ApplyEffectList which will be a list of effects to apply upon a successful hit or use of an item to the targets selected. Creatures will gain a property called ApplyEffectList which will work the same as an item. Spells will gain a property called SpellEffectList with a list of effects to apply. Similar property will be added to combat props (don't exist just yet).
I was think for Effect class to add a UI element to the Effect editor for something like this (for damage types):
Attack: _d_+_ for every _ levels after level _ up to _ levels total
_ of these attacks for every _ levels after level _ up to _ attacks total
so a mage bolt spell would use: 1d4+1 for every 0 levels after level 0 up to 0 levels total
1 of these attacks for every 2 levels after level 1 up to 99 attacks total
and a fireball would use: 1d6+0 for every 1 levels after level 0 up to 10 levels total
1 of these attacks for every 0 levels after level 0 up to 1 attacks total
As far as the Player and Creature Status property, I think we will still use a simple enumeration of Alive (can do all types of actions), Dead (represents both dead and unconscious), Immobile (can't move but can do other actions), Held (can't move or do any actions). These basic enums are used for checks on determining what a Player and Creature can do (maybe add Ignored for stealth or invisible and Silenced or such). I guess these determinations could be gathered from a list of Statuses on the PC or creature as Karl suggested, that would probably make more sense.
Thoughts? Will be fun to code all of this, but in the end it should be a flexible system and easy/simple for all builders to use. Plus it should result in less and cleaner code in the long run which is always a plus
