anchor.diff:                           Entity.ClickEvent ==> msg (fieldMsg selection)])
   
           override this.Channel (_, field) =
  -            [Simulants.FieldAvatar.Avatar.ChangeEvent =|> fun evt -> msg (UpdateAvatar (evt.Data.Value :?> Avatar))
  +            [field.SelectEvent => cmd PlayFieldSong
  +             Simulants.FieldAvatar.Avatar.ChangeEvent =|> fun evt -> msg (UpdateAvatar (evt.Data.Value :?> Avatar))
                field.UpdateEvent => msg UpdateDialog
                field.UpdateEvent => msg UpdatePortal
                field.UpdateEvent => msg UpdateSensor
  
positive.code:         | Interact
  
      type [<NoComparison>] FieldCommand =
          | PlaySound of int64 * single * Sound AssetTag
          | PlaySong of int * single * Song AssetTag
          | FadeOutSong of int
          | MoveAvatar of Vector2
          | UpdateEye
          | Nop
  
      type Screen with
  
negative.code:                         let songCmd =
                              match Field.getFieldSongOpt field with
                              | Some fieldSong ->
                                  if currentSongOpt <> Some fieldSong
                                  then PlaySong (Constants.Audio.DefaultFadeOutMs, Constants.Audio.DefaultSongVolume, fieldSong)
                                  else Nop
                              | None -> Nop
                          withCmds [moveCmd; songCmd] field
                      elif tickTime = fieldTransition.FieldTransitionTime then
  