Regarding the skill system, I've also made a Skill Parent blueprint and created all specific skills with blueprints based on the parent.
My implementation is based on 4 different steps:
1) Skill Target Selection: this event is called by pressing a button in the HUD. It simply applies a boolean IsSkillSelectingTarget to TRUE and, inside the hover part of the player controller, just changes the tile selection crosshair with a custom implementation or custom mesh. For example, for the skill "Conefire", I draw a cone light upon the grid. The cone light is refreshed and repainted every time I hover to a different tile.
2) Skill Target Selected: Bound to a valid mouse click (skill target must be valid) just opens a Gate component into the skill parent which activates the "Skill Target Activation" event. The gate is "ticked" by the tick event inside the Skill Parent
3) Skill Activation: activate and execute the skill. For conefire, for example, I spawn a cone of fire with a particle system, then I check if there are enemy pawn inside the cone using a MultiSphere collision system (two foreach loops to scan the left part and the right part of the cone). For every collision, ignoring the grid manager itself, self, and other items or props of the map, it calls the receive damage event. When the loop is completed, it calls the last event: Skill Deactivation
4) Skill Deactivation: set to False the isSkillTargetSelecting flag, ends the particle system emission and, if AP are finished, ends the turn.
I don't think my system is genius, but helps to me to easily add a skill, its target selection mesh and its effect. I just bet that your system is more refined
My implementation is based on 4 different steps:
1) Skill Target Selection: this event is called by pressing a button in the HUD. It simply applies a boolean IsSkillSelectingTarget to TRUE and, inside the hover part of the player controller, just changes the tile selection crosshair with a custom implementation or custom mesh. For example, for the skill "Conefire", I draw a cone light upon the grid. The cone light is refreshed and repainted every time I hover to a different tile.
2) Skill Target Selected: Bound to a valid mouse click (skill target must be valid) just opens a Gate component into the skill parent which activates the "Skill Target Activation" event. The gate is "ticked" by the tick event inside the Skill Parent
3) Skill Activation: activate and execute the skill. For conefire, for example, I spawn a cone of fire with a particle system, then I check if there are enemy pawn inside the cone using a MultiSphere collision system (two foreach loops to scan the left part and the right part of the cone). For every collision, ignoring the grid manager itself, self, and other items or props of the map, it calls the receive damage event. When the loop is completed, it calls the last event: Skill Deactivation
4) Skill Deactivation: set to False the isSkillTargetSelecting flag, ends the particle system emission and, if AP are finished, ends the turn.
I don't think my system is genius, but helps to me to easily add a skill, its target selection mesh and its effect. I just bet that your system is more refined

Comment