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 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,...
-- 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...
wave spawner for networked objects with modifiable wave params, state tracked with networkspawnerstate, spawner prefab, spawner visualization tracks hits
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.
- 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.
-- ActionVisualization and ActionFX base classes added.
-- MeleeActionFX logic added, and some logic to only play the hit react if the target is still in range.
-- folded "Level" into ActionRequestData. (The server takes care to sanitize the field if a request comes from the client).
-- hit detection logic has moved to a shared ActionUtils class. I wound up not making use of it in this change, but I still think it's likely this logic will need to be shared between server and client, or between different actions on the server. (It will also likely grow more complex).
-- Added a BrainEnabled switch. This is mainly intended for debugging, although it's possible it could be part of a "Stun" effect. Switch it to false to turn monsters into helpless punching bags.
-- split off some of Action into a shared ActionBase class. This is because Action and ActionFX ended up sharing several concepts.
-- Changed server-duration to match the animat...