:benjamin_affection_approach
  include load_player_dating_animations

  wait 20

  js const npc = Managers.Villagers.getVillagerData('Benjamin');
  + 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('Benjamin');
  + 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('Benjamin');
  + 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('Benjamin');
  + 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_benjamin
  include benjamin_affection_approach

  js const npc = Managers.Villagers.getVillagerData('Benjamin');
  + npc._characterIndex = 2;
  + 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('Benjamin');
  + npc._pattern = 1;
  + $gamePlayer._pattern = 1;
  + this.tempEvent._pattern = 1;

  wait 12

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

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

  wait 60
  fade out
  wait 10

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

:kiss_benjamin
  include benjamin_affection_approach

  js const npc = Managers.Villagers.getVillagerData('Benjamin');
  + npc._characterIndex = 2;
  + 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('Benjamin');
  + npc._pattern = 1;
  + $gamePlayer._pattern = 1;

  wait 12

  js const npc = Managers.Villagers.getVillagerData('Benjamin');
  + 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('Benjamin');
  + npc._pattern = 0;
  + npc._direction = 8;
  + $gamePlayer._pattern = 0;
  + $gamePlayer._direction = 8;
  + this.tempEvent._pattern = 2;

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

  wait 60
  fade out
  wait 10

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