// Update is called once per frame void Update() { if (battleOrder == null) { return; } switch (state) { case State.ATTACKING: timer += Time.deltaTime; if (!battleOrder.SourceCombatant.animating && timer > maxTimer) { state = State.FINISHED; Combatant targetCombatant = battleOrder.TargetTile.GetOccupant(); if (targetCombatant != null) { targetCombatant.DoneAnimating(); targetCombatant.CheckStatus(); } } break; case State.MOVING: WalkToDestination(); break; case State.FINISHED: battleStateTracker.ResetChain(); break; } }