anchor.diff:          | SpecialCharacter1 of CharacterIndex * CharacterIndex * SpecialType
           | SpecialCharacter2 of CharacterIndex * CharacterIndex * SpecialType
           | SpecialCharacter3 of CharacterIndex * CharacterIndex * SpecialType
  +        | SpecialCharacter4 of CharacterIndex * CharacterIndex * SpecialType
  +        | SpecialCharacterAmbient of CharacterIndex * CharacterIndex * SpecialType
           | ConsumeCharacter1 of ConsumableType * CharacterIndex
           | ConsumeCharacter2 of ConsumableType * CharacterIndex
           | ChargeCharacter of CharacterIndex
  
positive.code:                 let model = BattleModel.updateCurrentCommandOpt (constant None) model
                  withMsgs model [ResetCharacter sourceIndex; PoiseCharacter sourceIndex]
  
          static let tickWound targetIndex time model (_ : World) =
              let character = BattleModel.getCharacter targetIndex model
              if character.IsAlly then
                  match character.AnimationCycle with
  
negative.code:                 withMsg model PoiseCharacters
              | _ -> just model
  
          static let rec tickCurrentCommand time currentCommand model =
              let timeLocal = time - currentCommand.TimeStart
              match currentCommand.ActionCommand.Action with
              | Attack ->
                  let source = currentCommand.ActionCommand.Source
                  let targetOpt = currentCommand.ActionCommand.TargetOpt
                  tickAttack source targetOpt time timeLocal model
              | Consume consumable ->
                  let source = currentCommand.ActionCommand.Source
                  let targetOpt = currentCommand.ActionCommand.TargetOpt
                  tickConsume consumable source targetOpt time timeLocal model
              | Special specialType ->
                  let source = currentCommand.ActionCommand.Source
                  let targetOpt = currentCommand.ActionCommand.TargetOpt
                  tickSpecial specialType source targetOpt time timeLocal model
              | Wound ->
                  match currentCommand.ActionCommand.TargetOpt with
                  | Some target ->
                      let (model, signal) = tickWound target time model
                      match model.CurrentCommandOpt with
                      | Some _ ->
                          // just keep ticking wound...
  