anchor.diff:                      let sigs = if cancelled then Command (DisplayCancel targetIndex) :: sigs else sigs
                       let sigs = if hitPointsChange <> 0 then Command (DisplayHitPointsChange (targetIndex, hitPointsChange)) :: sigs else sigs
                       withSigs model sigs
  -                | None-> just model
  +                | None -> just model
  +
  +            | SpecialCharacter4 (sourceIndex, targetIndex, _) ->
  +                let time = World.getTickTime world
  +                let target = BattleModel.getCharacter targetIndex model
  +                if target.IsHealthy then
  +                    let model = BattleModel.updateCurrentCommandOpt (constant None) model
  +                    withMsgs model [PoiseCharacter sourceIndex; PoiseCharacter targetIndex]
  +                else
  +                    let woundCommand = CurrentCommand.make time (ActionCommand.make Wound sourceIndex (Some targetIndex))
  +                    let model = BattleModel.updateCurrentCommandOpt (constant (Some woundCommand)) model
  +                    withMsgs model [PoiseCharacter sourceIndex]
  +                    
  +            | SpecialCharacterAmbient (sourceIndex, _, _) ->
  +                if Simulants.BattleSpecialMovement.GetExists world then
  +                    let model =
  +                        let tags = Simulants.BattleSpecialMovement.GetEffectTags world
  +                        match Map.tryFind "Tag" tags with
  +                        | Some tag -> BattleModel.updateCharacter (CharacterModel.updateCenter (constant tag.Position)) sourceIndex model
  +                        | None -> model
  +                    just model
  +                else just model
   
               | ConsumeCharacter1 (consumable, sourceIndex) ->
                   let time = World.getTickTime world
  
positive.code:                 withMsg model PoiseCharacters
              | _ -> just model
  
          static let rec tickCurrentCommand time currentCommand model world =
              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 world
              | Consume consumable ->
                  let source = currentCommand.ActionCommand.Source
                  let targetOpt = currentCommand.ActionCommand.TargetOpt
                  tickConsume consumable source targetOpt time timeLocal model world
              | Special specialType ->
                  let source = currentCommand.ActionCommand.Source
                  let targetOpt = currentCommand.ActionCommand.TargetOpt
                  tickSpecial specialType source targetOpt time timeLocal model world
              | Wound ->
                  match currentCommand.ActionCommand.TargetOpt with
                  | Some target ->
                      let (model, signal) = tickWound target time model world
                      match model.CurrentCommandOpt with
                      | Some _ ->
                          // just keep ticking wound...
  
negative.code:                 let model = BattleModel.updateCurrentCommandOpt (constant None) model
                  withMsgs model [ResetCharacter sourceIndex; PoiseCharacter sourceIndex]
  
          static let tickWound targetIndex time model =
              let character = BattleModel.getCharacter targetIndex model
              if character.IsAlly then
                  match character.AnimationCycle with
  