local ____lualib = require("lualib_bundle") local __TS__ArrayForEach = ____lualib.__TS__ArrayForEach local __TS__ArrayMap = ____lualib.__TS__ArrayMap local ____exports = {} local ____QuestSystem = require("quests.QuestSystem") local QuestType = ____QuestSystem.QuestType local QuestState = ____QuestSystem.QuestState local ____QuestSystem = require("quests.QuestSystem") local QuestSystem = ____QuestSystem.QuestSystem local ____QuestEventHandlers = require("quests.QuestEventHandlers") local QuestEventHandlers = ____QuestEventHandlers.QuestEventHandlers local ____quest_reward_scaling = require("quests.quest_reward_scaling") local questTeamGold = ____quest_reward_scaling.questTeamGold function ____exports.InitializeQuests(self) local questSystem = QuestSystem:getInstance() local npcQuestChains = { { npcName = "npc_quest_giver_kunkka", quests = { { id = "kunkka_quest_give_claw", title = "#quest_give_claw_title", description = "#quest_give_claw_description", objectives = {custom_objective = {type = QuestType.CUSTOM, target = "item_wolf_claw", required = 10, current = 0}}, rewards = { gold = questTeamGold(nil, 600), experience = 150, crystals = 5 }, state = QuestState.AVAILABLE, unlocksQuestIds = {"kunkka_quest_kill_lycan", "kunkka_quest_find_anchor"}, events = QuestEventHandlers.kunkka_quest_give_claw }, { id = "kunkka_quest_kill_lycan", title = "#quest_kunkka_kill_lycan_title", description = "#quest_kunkka_kill_lycan_description", objectives = {kill_lycan = {type = QuestType.KILL_UNIT, target = "npc_boss_lycan", required = 1, current = 0}}, rewards = { gold = questTeamGold(nil, 1200), experience = 400, crystals = 10 }, state = QuestState.LOCKED, previousQuestId = "kunkka_quest_give_claw", events = QuestEventHandlers.kunkka_quest_kill_lycan }, { id = "kunkka_quest_kill_satyr_demon", title = "#quest_kunkka_kill_satyr_demon_title", description = "#quest_kunkka_kill_satyr_demon_description", objectives = {kill_satyr_demon = {type = QuestType.KILL_UNIT, target = "npc_demon_dragon_satyr", required = 1, current = 0}}, rewards = { gold = questTeamGold(nil, 1400), experience = 450, crystals = 11 }, state = QuestState.LOCKED, previousQuestId = "kunkka_quest_kill_lycan", events = QuestEventHandlers.kunkka_quest_kill_satyr_demon }, { id = "kunkka_quest_clean_harbor", title = "#quest_kunkka_clean_harbor_title", description = "#quest_kunkka_clean_harbor_description", objectives = {clean_harbor = {type = QuestType.CUSTOM, target = "#zone_skeletons_clean", required = 1, current = 0}}, rewards = { gold = questTeamGold(nil, 800), experience = 300, crystals = 6 }, state = QuestState.LOCKED, previousQuestId = "kunkka_quest_kill_satyr_demon", events = QuestEventHandlers.kunkka_quest_clean_harbor }, { id = "kunkka_quest_find_rom", title = "#quest_found_rom_title", description = "#quest_found_rom_description", objectives = {custom_objective = {type = QuestType.CUSTOM, target = "item_rom", required = 1, current = 0}}, rewards = { gold = questTeamGold(nil, 400), experience = 150, crystals = 8 }, state = QuestState.AVAILABLE, events = QuestEventHandlers.kunkka_quest_find_rom }, { id = "kunkka_quest_2", title = "#quest_kunkka_skeletons_title", description = "#quest_kunkka_skeletons_description", objectives = {kill_skeletons0 = {type = QuestType.KILL_UNIT, target = "npc_skeleton_zombie_undead", required = 10, current = 0}, kill_skeletons1 = {type = QuestType.KILL_UNIT, target = "npc_dead_skeleton_archer_undead", required = 6, current = 0}, kill_skeletons2 = {type = QuestType.KILL_UNIT, target = "npc_skeleton_zombie_half_undead", required = 8, current = 0}, kill_skeletons3 = {type = QuestType.KILL_UNIT, target = "npc_dead_skeleton_undead", required = 5, current = 0}}, rewards = { gold = questTeamGold(nil, 150), experience = 100, crystals = 3 }, state = QuestState.LOCKED, previousQuestId = "kunkka_quest_find_rom", events = QuestEventHandlers.kunkka_quest_2 }, { id = "kunkka_quest_find_anchor", title = "#quest_kunkka_find_anchor_title", description = "#quest_kunkka_find_anchor_description", objectives = {find_anchor = {type = QuestType.CUSTOM, target = "point_shovel", required = 1, current = 0}}, rewards = { gold = questTeamGold(nil, 500), experience = 200, crystals = 6 }, state = QuestState.LOCKED, previousQuestId = "kunkka_quest_give_claw", events = QuestEventHandlers.kunkka_quest_find_anchor } } }, { npcName = "npc_quest_giver_denny", quests = { { id = "denny_quest_1", title = "#quest_denny_quest_kill_sheeps_title", description = "#quest_denny_quest_kill_sheeps_description", objectives = {kill_ranged = {type = QuestType.KILL_UNIT, target = "npc_sheep", required = 20, current = 0}}, rewards = { gold = questTeamGold(nil, 400), experience = 200, crystals = 4 }, state = QuestState.AVAILABLE, unlocksQuestIds = {"denny_quest_find_pet"}, events = QuestEventHandlers.denny_quest_kill_sheeps }, { id = "denny_quest_find_pet", title = "#quest_denny_need_a_pet_title", description = "#quest_denny_need_a_pet_description", objectives = {find_a_pet = {type = QuestType.CUSTOM, target = "#denny_pet", required = 1, current = 0}}, rewards = { gold = questTeamGold(nil, 500), experience = 400, crystals = 6 }, state = QuestState.LOCKED, previousQuestId = "denny_quest_1", unlocksQuestIds = {"denny_quest_kill_sheeps"}, events = QuestEventHandlers.denny_quest_find_a_pet }, { id = "denny_quest_kill_sheeps", title = "#quest_denny_training_title", description = "#quest_denny_training_description", objectives = {training_farm = {type = QuestType.KILL_UNIT, target = "npc_sheep", required = 20, current = 0}}, rewards = { gold = questTeamGold(nil, 600), experience = 100, crystals = 5 }, state = QuestState.LOCKED, previousQuestId = "denny_quest_find_pet", unlocksQuestIds = {"denny_quest_kill_thieves"}, events = QuestEventHandlers.denny_quest_1 }, { id = "denny_quest_kill_thieves", title = "#quest_denny_quest_kill_thieves_title", description = "#quest_denny_quest_kill_thieves_description", objectives = {kill_leader = {type = QuestType.KILL_UNIT, target = "npc_thief_leader", required = 1, current = 0}, kill_archer = {type = QuestType.KILL_UNIT, target = "npc_thief_archer", required = 2, current = 0}, kill_backer = {type = QuestType.KILL_UNIT, target = "npc_thief_backer", required = 2, current = 0}}, rewards = { gold = questTeamGold(nil, 450), experience = 250, crystals = 5 }, state = QuestState.LOCKED, previousQuestId = "denny_quest_kill_sheeps", events = QuestEventHandlers.denny_quest_kill_thieves } } }, { npcName = "npc_quest_giver_firestar", quests = { { id = "firestar_quest_1", title = "#quest_kill_pigs_title", description = "#quest_kill_pigs_description", objectives = {custom_objective = {type = QuestType.CUSTOM, target = "item_meat", required = 10, current = 0}}, rewards = {gold = 0, experience = 350, crystals = 7}, state = QuestState.AVAILABLE, events = QuestEventHandlers.firestar_quest_1 }, { id = "firestar_quest_gourmet", title = "#quest_firestar_gourmet_title", description = "#quest_firestar_gourmet_description", objectives = {cook_meat = {type = QuestType.CUSTOM, target = "item_grilled_meat", required = 5, current = 0}}, rewards = { gold = questTeamGold(nil, 500), experience = 350, crystals = 6 }, state = QuestState.LOCKED, previousQuestId = "firestar_quest_1", events = QuestEventHandlers.firestar_quest_gourmet }, { id = "firestar_quest_leader_horn", title = "#quest_firestar_leader_horn_title", description = "#quest_firestar_leader_horn_description", objectives = {bring_leader_horn = {type = QuestType.CUSTOM, target = "item_lycan_horn", required = 1, current = 0}}, rewards = { gold = questTeamGold(nil, 900), experience = 450, crystals = 9 }, state = QuestState.LOCKED, previousQuestId = "firestar_quest_gourmet", events = QuestEventHandlers.firestar_quest_leader_horn }, { id = "firestar_quest_fishing", title = "#quest_firestar_fishing_title", description = "#quest_firestar_fishing_description", objectives = {bring_fish = {type = QuestType.CUSTOM, target = "item_fish", required = 10, current = 0}}, rewards = { gold = questTeamGold(nil, 1100), experience = 500, crystals = 10 }, state = QuestState.LOCKED, previousQuestId = "firestar_quest_leader_horn", events = QuestEventHandlers.firestar_quest_fishing } } }, { npcName = "npc_quest_giver_oldmen", quests = { { id = "oldmen_quest_1", title = "#quest_kill_sheep_title", description = "#quest_kill_sheep_description", objectives = {custom_objective = {type = QuestType.CUSTOM, target = "item_milk", required = 5, current = 0}}, rewards = { gold = questTeamGold(nil, 25), experience = 0, crystals = 0 }, state = QuestState.AVAILABLE, unlocksQuestIds = {"oldmen_quest_cheesemaker"}, events = QuestEventHandlers.oldmen_quest_1 }, { id = "oldmen_quest_cheesemaker", title = "#quest_oldmen_cheesemaker_title", description = "#quest_oldmen_cheesemaker_description", objectives = {bring_cheese = {type = QuestType.CUSTOM, target = "item_cheese", required = 3, current = 0}}, rewards = { gold = questTeamGold(nil, 300), experience = 150, crystals = 3 }, state = QuestState.LOCKED, previousQuestId = "oldmen_quest_1", events = QuestEventHandlers.oldmen_quest_cheesemaker } } }, { npcName = "npc_quest_giver_lina", quests = { { id = "lina_quest_ent_heart", title = "#lina_quest_ent_heart_title", description = "#lina_quest_ent_heart_description", objectives = {custom_objective = {type = QuestType.CUSTOM, target = "item_ent_heart", required = 20, current = 0}}, rewards = { gold = questTeamGold(nil, 250), experience = 220, crystals = 4 }, state = QuestState.AVAILABLE, events = QuestEventHandlers.lina_quest_ent_heart }, { id = "lina_quest_bottle", title = "#lina_quest_bottle_title", description = "#lina_quest_bottle_description", objectives = {custom_objective = {type = QuestType.CUSTOM, target = "item_pollen_keeper", required = 20, current = 0}}, rewards = { gold = questTeamGold(nil, 300), experience = 260, crystals = 4 }, state = QuestState.LOCKED, previousQuestId = "lina_quest_ent_heart", events = QuestEventHandlers.lina_quest_bottle } } }, { npcName = "npc_quest_giver_largo", quests = { { id = "largo_quest_kill_frogs", title = "#largo_quest_kill_frogs_title", description = "#largo_quest_kill_frogs_description", objectives = {kill_mini_frog = {type = QuestType.KILL_UNIT, target = "npc_mini_frog", required = 8, current = 0}, kill_froglet = {type = QuestType.KILL_UNIT, target = "npc_small_frog_froglet", required = 6, current = 0}, kill_frog_magi = {type = QuestType.KILL_UNIT, target = "npc_frogman_magi", required = 6, current = 0}}, rewards = { gold = questTeamGold(nil, 350), experience = 260, crystals = 4 }, state = QuestState.AVAILABLE, events = QuestEventHandlers.largo_quest_kill_frogs }, { id = "largo_quest_spider_legs", title = "#largo_quest_spider_legs_title", description = "#largo_quest_spider_legs_description", objectives = {custom_objective = {type = QuestType.CUSTOM, target = "item_spider_legs_custom", required = 20, current = 0}}, rewards = { gold = questTeamGold(nil, 360), experience = 260, crystals = 5 }, state = QuestState.LOCKED, previousQuestId = "largo_quest_kill_frogs", events = QuestEventHandlers.largo_quest_spider_legs } } }, { npcName = "npc_quest_giver_maiden", quests = {{ id = "maiden_quest_eggs", title = "#maiden_quest_eggs_title", description = "#maiden_quest_eggs_description", objectives = {custom_objective = {type = QuestType.CUSTOM, target = "item_egg", required = 20, current = 0}}, rewards = { gold = questTeamGold(nil, 300), experience = 220, crystals = 4 }, state = QuestState.AVAILABLE, events = QuestEventHandlers.maiden_quest_eggs }} }, { npcName = "npc_quest_giver_doctor", quests = { { id = "doctor_quest_frog_paws", title = "#doctor_quest_frog_paws_title", description = "#doctor_quest_frog_paws_description", objectives = {custom_objective = {type = QuestType.CUSTOM, target = "item_frog_paw", required = 20, current = 0}}, rewards = { gold = questTeamGold(nil, 320), experience = 240, crystals = 4 }, state = QuestState.AVAILABLE, events = QuestEventHandlers.doctor_quest_frog_paws }, { id = "doctor_quest_poison", title = "#doctor_quest_poison_title", description = "#doctor_quest_poison_description", objectives = {custom_objective = {type = QuestType.CUSTOM, target = "item_poison", required = 20, current = 0}}, rewards = { gold = questTeamGold(nil, 380), experience = 280, crystals = 5 }, state = QuestState.LOCKED, previousQuestId = "doctor_quest_frog_paws", events = QuestEventHandlers.doctor_quest_poison } } }, { npcName = "npc_quest_giver_friend", quests = {{ id = "friend_quest_pizza_prep", title = "#friend_quest_pizza_prep_title", description = "#friend_quest_pizza_prep_description", objectives = {custom_objective = {type = QuestType.CUSTOM, target = "item_testo_pizza", required = 1, current = 0}}, rewards = { gold = questTeamGold(nil, 180), experience = 180, crystals = 3 }, state = QuestState.AVAILABLE, events = QuestEventHandlers.friend_quest_pizza_prep }} } } __TS__ArrayForEach( npcQuestChains, function(____, chain) __TS__ArrayForEach( chain.quests, function(____, quest) questSystem:registerQuest(quest) end ) local questIds = __TS__ArrayMap( chain.quests, function(____, quest) return quest.id end ) questSystem:registerNpcQuests(chain.npcName, questIds) end ) questSystem:linkQuestChains() end return ____exports