anchor.diff:               reticles.TargetSelectEvent =|> fun evt -> ReticlesSelect (evt.Data, AllyIndex index)
                reticles.CancelEvent =>! IndexedCommandCmd (ReticlesCancel, index)]
   
  +        let allyPartyBindings allyMax =
  +            seq { for i in 0 .. allyMax - 1 do yield allyBindings i } |>
  +            Seq.concat |>
  +            Seq.toList
  +
           override this.Bindings (_, battle, _) =
  -            [battle.SelectEvent =>! InitializeBattleCmd
  -             battle.DeselectEvent =>! FinalizeBattleCmd
  -             battle.OutgoingStartEvent =>! FadeSongCmd
  -             battle.UpdateEvent => Tick] @
  -             inputBindings 0 @
  -             inputBindings 1 @
  -             inputBindings 2
  +            battleBindings battle @
  +            allyPartyBindings AllyMax
   
           override this.Message (message, model, _, world) =
               match message with
  
positive.code:                 | BattleCease (outcome, timeStart) -> tickCease time timeStart outcome model
              (model, sigs)
  
          let inputBindings index =
              let regularMenu = Simulants.RegularMenu index
              let specialMenu = Simulants.SpecialMenu index
              let itemMenu = Simulants.ItemMenu index
  
negative.code:                   ActionQueue = Queue.empty }
               model)
  
          let [<Literal>] AllyMax = 3
  
          let getAllies model =
              model.BattleCharacters |> Map.toSeq |> Seq.filter (function (AllyIndex _, _) -> true | _ -> false) |> Seq.map snd |> Seq.toList
  
  