anchor.diff:              | FinalizeBattle ->
                   let world = World.hintRenderPackageDisuse Assets.BattlePackage world
                   just (World.hintAudioPackageDisuse Assets.BattlePackage world)
  -            | ReadyCharacters ->
  -                let time = World.getTickTime world
  -                let characters = World.getCharacters Simulants.Scene world
  -                let world =
  -                    Seq.fold (fun world (character : Entity) ->
  -                        character.CharacterAnimationState.Update (CharacterAnimationState.setCycle (Some time) ReadyCycle) world)
  -                        world characters
  -                just world
  -            | PoiseCharacters ->
  -                let time = World.getTickTime world
  -                let characters = World.getCharacters Simulants.Scene world
  -                let world =
  -                    Seq.fold (fun world (character : Entity) ->
  -                        character.CharacterAnimationState.Update (CharacterAnimationState.setCycle (Some time) PoiseCycle) world)
  -                        world characters
  -                just world
  -            | CelebrateCharacters outcome ->
  -                let time = World.getTickTime world
  -                let allies =
  -                    if outcome
  -                    then World.getAllies Simulants.Scene world
  -                    else World.getEnemies Simulants.Scene world
  -                let world =
  -                    Seq.fold (fun world (character : Entity) ->
  -                        character.CharacterAnimationState.Update (CharacterAnimationState.setCycle (Some time) CelebrateCycle) world)
  -                        world allies
  -                just world
  -            | AdvanceCharacters ->
  -                let characters = World.getCharacters Simulants.Scene world
  -                let world =
  -                    List.fold (fun world (character : Entity) ->
  -                        character.ActionTimeNp.Update ((+) Constants.Battle.ActionTimeInc) world)
  -                        world characters
  -                just world
  -            | AttackCharacter (source, target) ->
  -                let time = World.getTickTime world
  -                let world = source.CharacterAnimationState.Update (CharacterAnimationState.setCycle (Some time) AttackCycle) world
  -                let world =
  -                    target.CharacterState.Update (fun state ->
  -                        let rom = Simulants.Game.GetModel world
  -                        let power = source.CharacterState.GetBy (fun state -> state.ComputePower rom) world
  -                        let shield = state.ComputeShield rom
  -                        let damage = max 0 (int (Math.Ceiling (double (power - shield))))
  -                        let hitPoints = (target.GetCharacterState world).HitPoints
  -                        let hitPoints =  max 0 (hitPoints - damage)
  -                        { state with HitPoints = hitPoints })
  -                        world
  -                if target.CharacterState.GetBy (fun state -> state.HitPoints = 0 && state.IsAlly) world
  -                then withCmd world (ResetCharacter target)
  -                else just world
  -            | DamageCharacter character ->
  -                let time = World.getTickTime world
  -                just (character.CharacterAnimationState.Update (CharacterAnimationState.setCycle (Some time) DamageCycle) world)
  -            | PoiseCharacter character ->
  -                let time = World.getTickTime world
  -                just (character.CharacterAnimationState.Update (CharacterAnimationState.setCycle (Some time) PoiseCycle) world)
  -            | WoundCharacter character ->
  -                let time = World.getTickTime world
  -                just (character.CharacterAnimationState.Update (CharacterAnimationState.setCycle (Some time) WoundCycle) world)
  -            | DestroyCharacter character ->
  -                just (World.destroyEntity character world)
               | ResetCharacter character ->
                   let world =
                       if (character.GetCharacterState world).IsAlly then
  
positive.code:                     [reticles.Visible == false]]
  
          override this.Bindings (_, battle, _) =
              [battle.UpdateEvent => Tick
               battle.SelectEvent =>! InitializeBattle
               battle.DeselectEvent =>! FinalizeBattle
               battle.OutgoingStartEvent =>! FadeSong] @
               BattleDispatcher.inputBindings 0 @
               BattleDispatcher.inputBindings 1 @
               BattleDispatcher.inputBindings 2
  
negative.code:     and [<NoComparison>] BattleCommand =
          | InitializeBattle
          | FinalizeBattle
          | DestroyCharacter of CharacterIndex
          | ResetCharacter of CharacterIndex
          | IndexedCommand of IndexedCommand * int
          | FadeSong
  
      and Screen with
  
  