Suggested Feature
Actors need to be able to influence combat. We will call these Actions. There are 2 kinds, active and passive; 1 that happens on demand and 1 that happens in response to something else.
Requirements
Additional Context
I quite like being able to build actions logic by chaining together a series of effects, querying conditions as we go. This creates a versatile, but structured, approach. See here for an example.
Note, while all active actions have a targeting method it is only used by the player commander to determine the targeting method used when casting that action.
Current approach works as follows:
- Actor has a component
ActorActions that holds references to all of the Actions and acts as the interface for using those Actions.
- There are 3 kinds of
Action, Attack (should we rename active? 🤔 ), Reaction, and StatusEffect.
Actions are defined in code, with their behaviour outside of use() sharing a uniform set of expectations, defined by action_type, action_trigger, target_type. That is to say that on use() the Action can be entirely unique and bespoke, but in all other interactions will follow a set of prescribed behaviours.
Actions have access to a variety of _effect_* methods to use as building blocks in their use() method, though they are not confined to these. N.B. some of these effect methods exist but are not implemented, use of these will generate a warning.
Suggested Feature
Actors need to be able to influence combat. We will call these Actions. There are 2 kinds, active and passive; 1 that happens on demand and 1 that happens in response to something else.
Requirements
Additional Context
I quite like being able to build actions logic by chaining together a series of effects, querying conditions as we go. This creates a versatile, but structured, approach. See here for an example.
Note, while all active actions have a targeting method it is only used by the player commander to determine the targeting method used when casting that action.
Current approach works as follows:
ActorActionsthat holds references to all of theActions and acts as the interface for using thoseActions.Action,Attack(should we rename active? 🤔 ),Reaction, andStatusEffect.Actions are defined in code, with their behaviour outside ofuse()sharing a uniform set of expectations, defined byaction_type,action_trigger,target_type. That is to say that onuse()theActioncan be entirely unique and bespoke, but in all other interactions will follow a set of prescribed behaviours.Actions have access to a variety of_effect_*methods to use as building blocks in theiruse()method, though they are not confined to these. N.B. some of these effect methods exist but are not implemented, use of these will generate a warning.