- added target id to the revive action
- caught an error in istargetingnpc check - it was actually checking for PCs
- removed sanity check from ActionPlayer - it shouldn't be needed and actions should be prevented from entereing the queue with other means.
This PR implements full character lifecycle with the following states:
Alive
Fainted - PCs go into this state upon reaching 0 HP
Dead - NPCs just die
Along with these states ReviveAction has been added, which restores a Fainted character back to life.
Player inputs now differentiate between friends and foes and tries to revive fainted allies on right click.
Commits have been arranged in a readable order and contain additional implementation details.
wave spawner for networked objects with modifiable wave params, state tracked with networkspawnerstate, spawner prefab, spawner visualization tracks hits
-- added HitReact state to CharacterSetController (triggered by "BeginHitReact")
-- Made everybody have a ClientCharacter component.
-- Added a ClientCharacter->ClientCharacterVisualization reference, so that you can
get the visual GameObject from a NetworkId.
-- Fixed issue where placed Boss wasn't on the right Layer, making him invincible.
-- Hooked up some very preliminary HitReact logic in ClientCharacterVisualization (will be refactored shortly as part of ActionVisualizer).
-- ChaseAction now rotates you to target even if you don't move.
-- ChaseAction no longer "inches forward" every time you attack.
-- MeleeAction now does a preliminary DetectFoe in Start. There's a lengthy comment explaining this, for educational purposes.
-- The TANK_BASEATTACK range has been tuned to look better.
-- ActionRequestData now checks which fields are "non-default" and uses that to populate a flags byte, rather than relying on s...
-- added HitReact state to CharacterSetController (triggered by "BeginHitReact")
-- Made everybody have a ClientCharacter component.
-- Added a ClientCharacter->ClientCharacterVisualization reference, so that you can
get the visual GameObject from a NetworkId.
-- Fixed issue where placed Boss wasn't on the right Layer, making him invincible.
-- Hooked up some very preliminary HitReact logic in ClientCharacterVisualization (will be refactored shortly as part of ActionVisualizer).
-- ChaseAction now rotates you to target even if you don't move.
-- ChaseAction no longer "inches forward" every time you attack.
-- MeleeAction now does a preliminary DetectFoe in Start. There's a lengthy comment explaining this, for educational purposes.
-- The TANK_BASEATTACK range has been tuned to look better.
-- ActionRequestData now checks which fields are "non-default" and uses that to populate a flags byte,...
I can't seem to be able to get rid of assets that need to be pointers, but aren't - it completely disrupts any work, so I'll just bite the bullet and check them in.
Right-clicking on a fallen ally would make PC to run over to the dead ally and execute Revive action. If we're right-clicking an enemy - we would do a melee attack instead.
ReviveAction brings Fainted characters back to life. ServerCharacter only allows PCs to become Fainted - NPCs become dead instead.
HP <= 0 is the triggering condition for going from Alive to either Fainted or Dead. That also clears out the action queue and prevents NPC AIBrain from being updated.
Added imp enemy to character lineup. Updated Boss with his own animation controller and replaced old boss prefab with new one that now has the cape rigged and animated