Conversation
…uses can apply more accurately than before
…tions to getting hit.
…eScene subscribes Players to CounterHitListener.
TheMaverickProgrammer
left a comment
There was a problem hiding this comment.
Looking good. There's some TODO items we can discuss.
…h extra accuracy. Entity public functions for generically checking status. CanAttack used in every place that PlayerControlledState can queue an action. CanAttack is false until the end of the frame that it would become true, to match certain source behavior.
…mMission checks CanAttack instead of IsIdle when flipping "Actionable" didn't describe what these do. They are used to set idle animation and check for idle animation. CanAttack more reliably checks if the Character can act.
An Entity would continue attempting to slide when the same Tile was moved to, and would follow in the previous move direction of none. Also, because the ActionQueue clear call, in response to a Drag hit, was moved, Drag could queue behind an ice slide. Drag takes priority over this now by clearing an ice slide queued on the previous frame.
… multiple flags if given
… overrides to do flinch and charge cancel, flinch handling is no longer a status callback
This makes endlag of frames(0) actually have 0 frames of additional time.
…ements including Drag use it, Drag movement acts correctly
…pl to check Drag correctly
…ring UpdateMovement. No longer calls MoveAction.Update so that Update(0) properly does not elapse time
TheMaverickProgrammer
left a comment
There was a problem hiding this comment.
Some things to discuss but this is already looking much better too. Great collabing with you on this.
| frameFreezeCancel = true; | ||
| // Breaking immediately ends freeze, before the next Entity update. | ||
| // Seen by freeze being cleared during time freeze. | ||
| // TODO: Likely related to this, breaking clears frozen even when |
There was a problem hiding this comment.
There are filtered hit props and original hit props in the combat pipeline. Sounds like a similar concept is needed here.
There was a problem hiding this comment.
That sounds like a good thing to check. This is Entity::Hit, though, which I think won't run if a defense blocked the attack. Maybe this check should be moved to collision checks instead, so it can run regardless of whether or not the attack was finally blocked.
There was a problem hiding this comment.
I think that is a good idea!
There was a problem hiding this comment.
Tracking over here: #11. Will handle on a different branch.
…o Entity::Update(0)
This fixes an issue where the battle start state could be skipped if a Player was hit by weakness and then transformed when exiting a future card select.
…to process with Drag so Flinch animation plays
…calculate_charge_time_func to match each other, both now pass in ScriptedPlayer to Lua
…haviorDirector
Reworked statuses to use new
StatusBehaviorDirector. Statuses should act much closer to source material now. This includes the following:Character::CanAttackmore accurately reflects whether or not an action could take place by taking statuses into accountDrag is an exceptional status. Movement was changed to make Drag more accurate:
MoveActionEntity::IsMovingandEntity::IsSlidingreturn false during the final endlagAdditionally, a few extra changes were made to pass certain status tests:
Hit::no_counterand an aggressor Entity ID.There are a few bonus changes as well:
charge_time_func,ScriptedPlayerandlevelpassed inWhile functioning and playable now, there are still some points to think about:
Many of the ideas for status handling and a large amount of programming and test setup came from @TheMaverickProgrammer.