This object represent an in-game spell. Each instance represents a single spell that will be encapsulated inside some SpellUser.
The spell name.
A simply text describing what the spells do.
An icon that can be used in UI.
The collections of all events.
The duration the spell will stay in Reloading state.
The duration the spell will stay in Casting state.
The maximum duration the spell can endure in Preparing state (before Casting). -1 to infinite.
The duration the spell was in last Preparing state. Can be read to improove the spell effect. Should not be setted, just read.
If setted to false, the spell user can't use other spell while this spell is in Preparing state.
The constructor. It's given an user and automatically added to it.
A command that will take some action, depending on current spell state.
This is the method that should be used by players. It converts the SpellInput in the SpellCommand, depending on the spell setup.
Bind the given input to execute the given command. This is uset to bind different inputs to different commands.
Returns the current state name of the spell.