﻿-- chunkname: @scripts/settings/interaction/interaction_templates.lua

local interaction_templates = {
	default = {
		action_text = "loc_generic_interaction",
		anim_duration_variable_name_3p = "assist_interaction_duration",
		description = "loc_generic_interaction",
		duration = 3,
		interaction_class_name = "base",
		interaction_icon = "content/ui/materials/hud/interactions/icons/default",
		interaction_priority = 1,
		only_once = false,
		start_anim_event = "arms_down",
		start_anim_event_3p = "interaction_revive",
		stop_anim_event = "arms_down",
		stop_anim_event_3p = "interaction_end",
	},
	ammunition = {
		action_text = "loc_action_interaction_pickup",
		duration = 0,
		interaction_class_name = "ammunition",
		interaction_icon = "content/ui/materials/hud/interactions/icons/ammunition",
		interaction_priority = 1,
		taggable = true,
		ui_interaction_type = "pickup",
	},
	chest = {
		action_text = "loc_action_interaction_open",
		duration = 0,
		interaction_class_name = "chest",
		interaction_icon = "content/ui/materials/hud/interactions/icons/default",
		interaction_priority = 1,
		taggable = true,
		ui_interaction_type = "default",
	},
	decoding = {
		action_text = "loc_action_interaction_decode",
		duration = 0,
		interaction_class_name = "decoding",
		interaction_icon = "content/ui/materials/hud/interactions/icons/objective_secondary",
		interaction_priority = 1,
		ui_interaction_type = "mission",
	},
	door_control_panel = {
		action_text = "loc_action_interaction_use",
		duration = 0,
		interaction_class_name = "door_control_panel",
		interaction_icon = "content/ui/materials/hud/interactions/icons/default",
		interaction_priority = 1,
		taggable = true,
		ui_interaction_type = "default",
	},
	setup_decoding = {
		action_text = "loc_action_interaction_plant",
		duration = 3.8,
		interaction_class_name = "setup_decoding",
		interaction_icon = "content/ui/materials/hud/interactions/icons/objective_secondary",
		interaction_priority = 1,
		interrupt_anim_event = "servo_interrupt",
		start_anim_event = "servo_start",
		stop_anim_event = "servo_finished",
		ui_interaction_type = "mission",
		wield_slot = "slot_device",
	},
	gamemode_havoc = {
		action_text = "loc_action_interaction_view",
		description = "loc_havoc_view",
		duration = 0,
		interaction_class_name = "gamemode_havoc",
		interaction_icon = "content/ui/materials/hud/interactions/icons/havoc",
		interaction_priority = 1,
		ui_interaction_type = "point_of_interest",
		ui_view_name = "havoc_background_view",
	},
	grenade = {
		action_text = "loc_action_interaction_pickup",
		duration = 0,
		interaction_class_name = "grenade",
		interaction_icon = "content/ui/materials/hud/interactions/icons/grenade",
		interaction_priority = 1,
		taggable = true,
		ui_interaction_type = "pickup",
	},
	health = {
		action_text = "loc_action_interaction_use",
		duration = 0,
		interaction_class_name = "health",
		interaction_icon = "content/ui/materials/hud/interactions/icons/respawn",
		interaction_priority = 1,
		taggable = true,
		ui_interaction_type = "pickup",
	},
	health_station = {
		action_text = "loc_action_interaction_use",
		duration = 3,
		interaction_class_name = "health_station",
		interaction_icon = "content/ui/materials/hud/interactions/icons/respawn",
		interaction_priority = 1,
		start_anim_event = "arms_down",
		start_anim_event_3p = "interaction_revive",
		stop_anim_event = "arms_down",
		stop_anim_event_3p = "interaction_end",
		taggable = true,
		ui_interaction_type = "point_of_interest",
	},
	luggable = {
		action_text = "loc_action_interaction_pickup",
		duration = 0,
		interaction_class_name = "luggable",
		interaction_icon = "content/ui/materials/hud/interactions/icons/default",
		interaction_priority = 1,
		taggable = true,
		ui_interaction_type = "pickup",
	},
	luggable_socket = {
		action_text = "loc_action_interaction_insert",
		duration = 0,
		interaction_class_name = "luggable_socket",
		interaction_icon = "content/ui/materials/hud/interactions/icons/default",
		interaction_priority = 1,
		ui_interaction_type = "pickup",
	},
	mission_board = {
		action_text = "loc_action_interaction_view",
		description = "loc_mission_board_view",
		duration = 0,
		interaction_class_name = "mission_board",
		interaction_icon = "content/ui/materials/hud/interactions/icons/mission_board",
		interaction_priority = 1,
		ui_interaction_type = "point_of_interest",
		ui_view_name = "mission_board_view",
	},
	crafting = {
		action_text = "loc_action_interaction_view",
		description = "loc_crafting_view",
		duration = 0,
		interaction_class_name = "crafting",
		interaction_icon = "content/ui/materials/hud/interactions/icons/forge",
		interaction_priority = 1,
		ui_interaction_type = "point_of_interest",
		ui_view_name = "crafting_view",
	},
	penances = {
		action_text = "loc_action_interaction_view",
		description = "loc_penances_view",
		duration = 0,
		interaction_class_name = "penances",
		interaction_icon = "content/ui/materials/hud/interactions/icons/penances",
		interaction_priority = 1,
		ui_interaction_type = "point_of_interest",
		ui_view_name = "penance_overview_view",
	},
	body_shop = {
		action_text = "loc_action_interaction_view",
		description = "loc_training_ground_view",
		duration = 0,
		interaction_class_name = "body_shop",
		interaction_icon = "content/ui/materials/hud/interactions/icons/barber",
		interaction_priority = 1,
		ui_interaction_type = "point_of_interest",
		ui_view_name = "barber_vendor_background_view",
	},
	vendor = {
		action_text = "loc_action_interaction_view",
		description = "loc_vendor_view_title",
		duration = 0,
		interaction_class_name = "vendor",
		interaction_icon = "content/ui/materials/hud/interactions/icons/credits_store",
		interaction_priority = 1,
		ui_interaction_type = "point_of_interest",
		ui_view_name = "credits_vendor_background_view",
	},
	marks_vendor = {
		action_text = "loc_action_interaction_view",
		description = "loc_marks_vendor_view_title",
		duration = 0,
		interaction_class_name = "marks_vendor",
		interaction_icon = "content/ui/materials/hud/interactions/icons/contracts",
		interaction_priority = 1,
		ui_interaction_type = "point_of_interest",
		ui_view_name = "marks_vendor_view",
	},
	premium_vendor = {
		action_text = "loc_action_interaction_view",
		description = "loc_premium_vendor_view_title",
		duration = 0,
		interaction_class_name = "premium_vendor",
		interaction_icon = "content/ui/materials/hud/interactions/icons/premium_store",
		interaction_priority = 1,
		ui_interaction_type = "point_of_interest",
		ui_view_name = "store_view",
	},
	cosmetics_vendor = {
		action_text = "loc_action_interaction_view",
		description = "loc_cosmetics_vendor_view_title",
		duration = 0,
		interaction_class_name = "cosmetics_vendor",
		interaction_icon = "content/ui/materials/hud/interactions/icons/cosmetics_store",
		interaction_priority = 1,
		ui_interaction_type = "point_of_interest",
		ui_view_name = "cosmetics_vendor_background_view",
	},
	training_ground = {
		action_text = "loc_action_interaction_view",
		description = "loc_training_ground_view",
		duration = 0,
		interaction_class_name = "training_ground",
		interaction_icon = "content/ui/materials/hud/interactions/icons/training_grounds",
		interaction_priority = 1,
		ui_interaction_type = "point_of_interest",
		ui_view_name = "training_grounds_view",
	},
	contracts = {
		action_text = "loc_action_interaction_view",
		description = "loc_contracts_view",
		duration = 0,
		interaction_class_name = "contracts",
		interaction_icon = "content/ui/materials/hud/interactions/icons/contracts",
		interaction_priority = 1,
		ui_interaction_type = "point_of_interest",
		ui_view_name = "contracts_background_view",
	},
	moveable_platform = {
		action_text = "loc_action_interaction_press",
		duration = 0,
		interaction_class_name = "moveable_platform",
		interaction_icon = "content/ui/materials/hud/interactions/icons/default",
		interaction_priority = 1,
		ui_interaction_type = "default",
	},
	pocketable = {
		action_text = "loc_action_interaction_pickup",
		duration = 0,
		interaction_class_name = "pocketable",
		interaction_icon = "content/ui/materials/hud/interactions/icons/pocketable_default",
		interaction_priority = 1,
		taggable = true,
		ui_interaction_type = "pickup",
	},
	pull_up = {
		action_text = "loc_action_interaction_help",
		anim_duration_variable_name_3p = "assist_interaction_duration",
		description = "loc_pull_up",
		duration = 3,
		interaction_class_name = "pull_up",
		interaction_icon = "content/ui/materials/hud/interactions/icons/help",
		interaction_priority = 1,
		is_third_person = true,
		start_anim_event_3p = "interaction_revive",
		stop_anim_event = "arms_down",
		stop_anim_event_3p = "interaction_end",
		taggable = true,
		ui_interaction_type = "critical",
		start_anim_event_func = function (interactee_unit, interactor_unit)
			local interactee_unit_data_extension = ScriptUnit.extension(interactee_unit, "unit_data_system")
			local breed = interactee_unit_data_extension:breed()
			local breed_name = breed.name

			if breed_name == "human" then
				return "arms_down", "interaction_revive_human"
			end

			return "arms_down", "interaction_revive_ogryn"
		end,
	},
	remove_net = {
		action_text = "loc_action_interaction_help",
		anim_duration_variable_name_3p = "assist_interaction_duration",
		description = "loc_remove_net",
		duration = 1,
		interaction_class_name = "remove_net",
		interaction_icon = "content/ui/materials/hud/interactions/icons/help",
		interaction_priority = 1,
		is_third_person = true,
		start_anim_event_3p = "interaction_revive",
		stop_anim_event = "arms_down",
		stop_anim_event_3p = "interaction_end",
		taggable = true,
		ui_interaction_type = "critical",
		vo_event = "start_revive",
		start_anim_event_func = function (interactee_unit, interactor_unit)
			local interactee_unit_data_extension = ScriptUnit.extension(interactee_unit, "unit_data_system")
			local breed = interactee_unit_data_extension:breed()
			local breed_name = breed.name

			if breed_name == "human" then
				return "arms_down", "interaction_revive_human"
			end

			return "arms_down", "interaction_revive_ogryn"
		end,
	},
	revive = {
		action_text = "loc_action_interaction_revive",
		anim_duration_variable_name_3p = "assist_interaction_duration",
		description = "loc_revive",
		duration = 3,
		interaction_class_name = "revive",
		interaction_icon = "content/ui/materials/hud/interactions/icons/help",
		interaction_priority = 1,
		is_third_person = true,
		only_once = false,
		stop_anim_event = "arms_down",
		stop_anim_event_3p = "interaction_end",
		taggable = false,
		ui_interaction_type = "critical",
		vo_event = "start_revive",
		start_anim_event_func = function (interactee_unit, interactor_unit)
			local interactee_unit_data_extension = ScriptUnit.extension(interactee_unit, "unit_data_system")
			local breed = interactee_unit_data_extension:breed()
			local breed_name = breed.name

			if breed_name == "human" then
				return "arms_down", "interaction_revive_human"
			end

			return "arms_down", "interaction_revive_ogryn"
		end,
	},
	rescue = {
		action_text = "loc_action_interaction_rescue",
		anim_duration_variable_name_3p = "assist_interaction_duration",
		description = "loc_rescue",
		duration = 3,
		interaction_class_name = "rescue",
		interaction_icon = "content/ui/materials/hud/interactions/icons/help",
		interaction_priority = 1,
		is_third_person = true,
		only_once = false,
		stop_anim_event = "arms_down",
		stop_anim_event_3p = "interaction_end",
		taggable = false,
		ui_interaction_type = "critical",
		vo_event = "start_revive",
		start_anim_event_func = function (interactee_unit, interactor_unit)
			local interactee_unit_data_extension = ScriptUnit.extension(interactee_unit, "unit_data_system")
			local breed = interactee_unit_data_extension:breed()
			local breed_name = breed.name

			if breed_name == "human" then
				return "arms_down", "interaction_revive_human"
			end

			return "arms_down", "interaction_revive_ogryn"
		end,
	},
	scanning = {
		action_text = "loc_scanning",
		description = "loc_scanning",
		duration = 4,
		interaction_class_name = "scanning",
		interaction_icon = "content/ui/materials/hud/interactions/icons/objective_secondary",
		interaction_priority = 1,
		interrupt_anim_event = "scan_interrupt",
		start_anim_event = "scan_start",
		stop_anim_event = "scan_end",
		ui_interaction_type = "mission",
		wield_slot = "slot_device",
		wwise_player_state = "auspex_scanner",
	},
	servo_skull = {
		action_text = "loc_interactable_servo_skull_scanner_continue",
		anim_duration_variable_name_3p = "assist_interaction_duration",
		description = "loc_interactable_servo_skull_scanner",
		duration = 1,
		interaction_class_name = "servo_skull",
		interaction_icon = "content/ui/materials/hud/interactions/icons/objective_secondary",
		interaction_priority = 1,
		start_anim_event = "arms_down",
		start_anim_event_3p = "interaction_revive",
		stop_anim_event = "arms_down",
		stop_anim_event_3p = "interaction_end",
		ui_interaction_type = "mission",
	},
	servo_skull_activator = {
		action_text = "loc_interactable_servo_skull_scanner_deploy",
		description = "loc_interactable_servo_skull_scanner",
		duration = 1,
		interaction_class_name = "servo_skull_activator",
		interaction_icon = "content/ui/materials/hud/interactions/icons/objective_secondary",
		interaction_priority = 1,
		start_anim_event_3p = "interaction_revive",
		stop_anim_event_3p = "interaction_end",
		ui_interaction_type = "mission",
		wield_slot = "slot_device",
	},
	setup_breach_charge = {
		action_text = "loc_action_interaction_plant",
		duration = 4,
		interaction_class_name = "setup_breach_charge",
		interaction_icon = "content/ui/materials/hud/interactions/icons/objective_secondary",
		interaction_priority = 1,
		interrupt_anim_event = "action_interrupt",
		start_anim_event = "deploy",
		stop_anim_event = "action_finished",
		ui_interaction_type = "mission",
		wield_slot = "slot_device",
	},
	side_mission = {
		action_text = "loc_action_interaction_pickup",
		duration = 0,
		interaction_class_name = "pickup",
		interaction_icon = "content/ui/materials/hud/interactions/icons/objective_side",
		interaction_priority = 1,
		ui_interaction_type = "pickup",
	},
	forge_material = {
		action_text = "loc_action_interaction_pickup",
		duration = 0,
		interaction_class_name = "pickup",
		interaction_icon = "content/ui/materials/hud/interactions/icons/environment_generic",
		interaction_priority = 1,
		ui_interaction_type = "pickup",
	},
	objective_pickup = {
		action_text = "loc_action_interaction_pickup",
		duration = 0,
		interaction_class_name = "pickup",
		interaction_icon = "content/ui/materials/hud/interactions/icons/environment_generic",
		interaction_priority = 1,
		ui_interaction_type = "pickup",
	},
	equip_auspex = {
		action_text = "loc_action_interaction_pickup",
		duration = 0,
		interaction_class_name = "equip_auspex",
		interaction_icon = "content/ui/materials/hud/interactions/icons/environment_generic",
		interaction_priority = 1,
		ui_interaction_type = "pickup",
	},
	scripted_scenario = {
		action_text = "loc_action_interaction_view",
		description = "loc_character_view_display_name",
		duration = 0,
		interaction_class_name = "scripted_scenario",
		interaction_icon = "content/ui/materials/hud/interactions/icons/environment_generic",
		interaction_priority = 1,
		ui_interaction_type = "point_of_interest",
	},
	player_hub_inspect = {
		action_text = "loc_lobby_entry_inspect",
		duration = 0,
		interaction_class_name = "player_hub_inspect",
		interaction_icon = "content/ui/materials/hud/interactions/icons/default",
		interaction_input = "interact_inspect_pressed",
		interaction_priority = 2,
		ui_interaction_type = "player_interaction",
	},
	companion_hub_interact = {
		action_text = "loc_companion_hub_interaction_pet",
		duration = 0,
		interaction_class_name = "companion_hub_interact",
		interaction_icon = "content/ui/materials/hud/interactions/icons/default",
		interaction_input = "interact_inspect_pressed",
		interaction_priority = 2,
		ui_interaction_type = "player_interaction",
	},
	penance_collectible = {
		action_text = "loc_action_interaction_pickup",
		description = "loc_pickup_collectible",
		duration = 0,
		interaction_class_name = "penance_collectible",
		interaction_icon = "content/ui/materials/hud/interactions/icons/default",
		interaction_priority = 1,
		taggable = true,
		ui_interaction_type = "pickup",
	},
	tainted_skull = {
		action_text = "loc_action_interaction_tainted_skull",
		anim_duration_variable_name_3p = "assist_interaction_duration",
		description = "loc_pickup_tainted_skull",
		duration = 0,
		interaction_class_name = "pickup",
		interaction_icon = "content/ui/materials/hud/interactions/icons/enemy",
		interaction_priority = 1,
		start_anim_event = "arms_down",
		start_anim_event_3p = "interaction_revive",
		stop_anim_event = "arms_down",
		stop_anim_event_3p = "interaction_end",
		taggable = false,
		ui_interaction_type = "pickup",
	},
}

for interaction_type, template in pairs(interaction_templates) do
	template.type = interaction_type
end

return settings("InteractionTemplates", interaction_templates)
