anchor.diff:              | FadeSong ->
                   let world = World.fadeOutSong Constants.Audio.DefaultTimeToFadeOutSongMs world
                   just world
  -            | DisplayDamage (targetIndex, damage) ->
  +            | DisplayHitPointsChange (targetIndex, delta) ->
                   match tryGetCharacter targetIndex model with
                   | Some target ->
                       let (entity, world) = World.createEntity<EffectDispatcher> None DefaultOverlay Simulants.BattleScene world
  +                    let colorOpaque =
  +                        if delta < 0
  +                        then v4 1.0f 1.0f 1.0f 1.0f
  +                        else v4 0.0f 1.0f 1.0f 1.0f
  +                    let colorTransparent =
  +                        colorOpaque.WithW 0.0f
                       let effect =
                           { EffectName = ""
                             LifetimeOpt = Some 60L
  
positive.code:                 just model
              | TakeConsumable (consumable, targetIndex) ->
                  let time = World.getTickTime world
                  let target = getCharacter targetIndex model
                  let model =
                      updateCharacter (fun character ->
                          let state = character.CharacterState
                          match consumable with
                          | GreenHerb
                          | RedHerb ->
                              let cure =
                                  match consumable with
                                  | GreenHerb -> 100 // TODO: pull from rom data
                                  | RedHerb -> 500 // TODO: pull from rom data
                              let hitPoints = state.HitPoints + cure
                              { character with CharacterState = { state with HitPoints = hitPoints }})
                          targetIndex
                          model
                  if target.CharacterState.HitPoints > 0 || target.CharacterState.IsEnemy then
                      let model = updateCharacter (CharacterModel.setAnimationCycle time SpinCycle) targetIndex model
                      just model
                  else withSig model (Message (ResetCharacter targetIndex))
              | Tick ->
                  if World.isTicking world
                  then tick (World.getTickTime world) model
  
negative.code: 
      type [<NoComparison>] BattleCommand =
          | FadeSong
          | DisplayHitPointsChange of CharacterIndex * int
          | InitializeBattle
          | FinalizeBattle
  
  