Well, thanks all, seems the advice here helped me solve this problem.
The cause:
Idle animation on process interrupting hide animations
The cuplrit:
* Animations tied to state machine causing stack frames on animation
The solution:
Turn hiding into a set of substates/bools that toggle on animation endings, adding yields to one-shot animations
Rebuilt the code as my original had a lot of redundancies. Also, I changed my stamina meter functions as I did so and fixed some bugs it had for good. I think my player object is finally done.
MY HIDING VARIABLES:
### hiding controls and direct sprite/collision refs
var is_hidden = false
var can_hide = false
var hide_out = false
onready var anim = $AnimatedSprite
onready var box = $CollisionShape2D
HIDE COMMAND IN INPUTS
### E button is Hide command ________________________
if Input.is_action_just_pressed("hide"):
### check for area, bool flips by event class, play first animation ___
if can_hide == true:
print('hidden...')
anim.play('hide') ## first hide animation
is_hidden = true
can_hide = false
### flip hidden status/flag if already hidden, move to next step ________
elif is_hidden == true and hide_out == false:
hide_out = true
anim.play('out')
yield(anim,"animation_finished")
is_hidden = not is_hidden
hide_out = not hide_out
playerState = 0 ### return to idle
### ignore hide command if not in area
elif can_hide == false: ## flag prevents double hiding, bool flips at event
print('Cannot hide here.')
ANIMATION PROCESS (anim is $AnimatedSprite reference)
### match state with animation ________________________________________
func anim_ctrl():
### ignore action states if hidden
if is_hidden == false:
match playerState:
actionStates.IDLE:
anim.play('idle')
actionStates.WALK:
anim.play('walk')
actionStates.RUN:
anim.play('run')
if is_hidden == true and hide_out == false: ### is_hidden step
yield(anim,"animation_finished")
anim.play('kneel')
if is_hidden == true and hide_out == true: ### return to idle step
yield(anim, "animation_finished")
anim.play('idle')