Files
Dota-Zombie-Invasion/scripts/vscripts/quests/questinitializer.lua
T
2026-05-29 15:11:31 +07:00

419 lines
20 KiB
Lua

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