:annie_date_part_end
  fade out
  wait 10
  remove villager Annie

:annie_affection_approach
  include load_player_dating_animations

  wait 20

  js const npc = Managers.Villagers.getVillagerData('Annie');
  + npc._realX -= 0.08; npc._x = npc._realX;
  + $gamePlayer._realX += 0.08; $gamePlayer._x = $gamePlayer._realX;
  + npc._lockPattern = true;
  + $gamePlayer._lockPattern = true;
  + npc._pattern = 0;
  + npc._priorityType = 2;
  + $gamePlayer._pattern = 0;

  wait 12

  js const npc = Managers.Villagers.getVillagerData('Annie');
  + npc._realX -= 0.08; npc._x = npc._realX;
  + $gamePlayer._realX += 0.08; $gamePlayer._x = $gamePlayer._realX;
  + npc._pattern = 1;
  + $gamePlayer._pattern = 1;

  wait 12

  js const npc = Managers.Villagers.getVillagerData('Annie');
  + npc._realX -= 0.08; npc._x = npc._realX;
  + $gamePlayer._realX += 0.08; $gamePlayer._x = $gamePlayer._realX;
  + npc._pattern = 2;
  + $gamePlayer._pattern = 2;

  wait 12

  js const npc = Managers.Villagers.getVillagerData('Annie');
  + npc._realX -= 0.08; npc._x = npc._realX;
  + $gamePlayer._realX += 0.08; $gamePlayer._x = $gamePlayer._realX;
  + npc._pattern = 1;
  + $gamePlayer._pattern = 1;

  wait 12

:hug_annie
  include annie_affection_approach

  js const npc = Managers.Villagers.getVillagerData('Annie');
  + npc._characterIndex = 7;
  + npc._pattern = 0;
  + $gamePlayer._characterName = Managers.Player.generatePlayerSpriteName() + '_dating_poses';
  + $gamePlayer._direction = 2;
  + $gamePlayer._characterIndex = 0;
  + $gamePlayer._pattern = 0;
  + this.tempEvent = $gameMap.createPlayerImpersonatorEvent($gamePlayer._characterName, $gamePlayer._characterIndex, Direction.LEFT, false, false, 0, true);
  + this.tempEvent._priorityType = 2;
  + this.tempEvent._zVariation = 2;

  wait 12

  js const npc = Managers.Villagers.getVillagerData('Annie');
  + npc._pattern = 1;
  + $gamePlayer._pattern = 1;
  + this.tempEvent._pattern = 1;

  wait 12

  js const npc = Managers.Villagers.getVillagerData('Annie');
  + npc._pattern = 2;
  + $gamePlayer._pattern = 2;
  + this.tempEvent._pattern = 2;

  wait 10
  Annie "<heart:async>"
  Player "<heart:async>"

  wait 60
  fade out
  wait 10

  js this.tempEvent.erase();
  + delete this.tempEvent;
  + $gamePlayer._lockPattern = false;

:_kiss_annie
  js const npc = Managers.Villagers.getVillagerData('Annie');
  + npc._characterIndex = 7;
  + npc._pattern = 0;
  + npc._direction = 6;
  + $gamePlayer._characterName = Managers.Player.generatePlayerSpriteName() + '_dating_poses';
  + $gamePlayer._direction = 6;
  + $gamePlayer._characterIndex = 0;
  + $gamePlayer._pattern = 0;

  wait 12

  js const npc = Managers.Villagers.getVillagerData('Annie');
  + npc._pattern = 1;
  + $gamePlayer._pattern = 1;

  wait 12

  js const npc = Managers.Villagers.getVillagerData('Annie');
  + npc._pattern = 2;
  + $gamePlayer._pattern = 2;
  + this.tempEvent = $gameMap.createPlayerImpersonatorEvent($gamePlayer._characterName, $gamePlayer._characterIndex, Direction.UP, false, false, 0, true);
  + this.tempEvent._priorityType = 2;
  + this.tempEvent._zVariation = 2;
  + this.tempEvent._pattern = 1;

  wait 12

  js const npc = Managers.Villagers.getVillagerData('Annie');
  + npc._pattern = 0;
  + npc._direction = 8;
  + $gamePlayer._pattern = 0;
  + $gamePlayer._direction = 8;
  + this.tempEvent._pattern = 2;

  wait 10
  Annie "<heart:async>"
  Player "<heart:async>"

  wait 60

:kiss_annie
  include annie_affection_approach
  include _kiss_annie
  fade out
  wait 10

  js this.tempEvent.erase();
  + delete this.tempEvent;
  + $gamePlayer._lockPattern = false;


:add_seasonal_item_to_annie
  # Annie doesn't have a sprite holding items yet
  return

  if-variable month is 1
    villager_item_display Annie mango
    return
  end
  
  if-variable month is 2
    villager_item_display Annie passion-fruit
    return
  end

  if-variable month is 3
    villager_item_display Annie grape
    return
  end

  villager_item_display Annie persimmon
