497 lines
15 KiB
JavaScript
497 lines
15 KiB
JavaScript
/**
|
|
* Act1QuestData.js
|
|
* =================
|
|
* KRVAVA ŽETEV - Act 1: The Search Begins
|
|
*
|
|
* Main Quest: "Find Ana's Trail"
|
|
*
|
|
* Structure:
|
|
* - Quest 1.1: Wake Up & Explore
|
|
* - Quest 1.2: Meet Grok (First NPC)
|
|
* - Quest 1.3: First Twin Bond Message
|
|
* - Quest 1.4: Tame Your First Zombie
|
|
* - Quest 1.5: Build Ana's Grave (Memorial)
|
|
* - Quest 1.6: Search Lab Ruins
|
|
* - Quest 1.7: Find Ana's Research Notes
|
|
* - Quest 1.8: Decipher the Clues
|
|
*
|
|
* @author NovaFarma Team
|
|
* @date 2025-12-23
|
|
*/
|
|
|
|
const Act1QuestData = {
|
|
// ===== QUEST 1.1: WAKE UP & EXPLORE =====
|
|
'quest_1_1_wake_up': {
|
|
id: 'quest_1_1_wake_up',
|
|
title: 'A New Beginning',
|
|
description: 'You wake up in the ruins of the lab. Explore your surroundings and get your bearings.',
|
|
act: 1,
|
|
isMainQuest: true,
|
|
|
|
objectives: [
|
|
{
|
|
id: 'explore_ruins',
|
|
description: 'Explore the lab ruins',
|
|
type: 'location',
|
|
target: { x: 500, y: 500, radius: 50 },
|
|
current: 0,
|
|
required: 1,
|
|
completed: false
|
|
},
|
|
{
|
|
id: 'check_inventory',
|
|
description: 'Check your inventory (I key)',
|
|
type: 'action',
|
|
current: 0,
|
|
required: 1,
|
|
completed: false
|
|
}
|
|
],
|
|
|
|
rewards: {
|
|
xp: 100,
|
|
items: [
|
|
{ id: 'torn_journal', amount: 1 }
|
|
],
|
|
bondStrength: +5
|
|
},
|
|
|
|
nextQuest: 'quest_1_2_meet_grok',
|
|
|
|
startDialogue: {
|
|
speaker: 'Kai',
|
|
text: 'My head... what happened? The last thing I remember is the explosion... Ana! Where is she?!'
|
|
},
|
|
|
|
completeDialogue: {
|
|
speaker: 'Kai',
|
|
text: 'This journal... it\'s Ana\'s handwriting. She was here. I need to find her.'
|
|
}
|
|
},
|
|
|
|
// ===== QUEST 1.2: MEET GROK =====
|
|
'quest_1_2_meet_grok': {
|
|
id: 'quest_1_2_meet_grok',
|
|
title: 'The Zen Monk',
|
|
description: 'You hear the sound of a gong in the distance. Someone else survived?',
|
|
act: 1,
|
|
isMainQuest: true,
|
|
|
|
objectives: [
|
|
{
|
|
id: 'find_grok',
|
|
description: 'Follow the gong sound',
|
|
type: 'location',
|
|
target: { x: 1000, y: 800, radius: 100 },
|
|
current: 0,
|
|
required: 1,
|
|
completed: false
|
|
},
|
|
{
|
|
id: 'talk_to_grok',
|
|
description: 'Talk to the mysterious monk',
|
|
type: 'dialogue',
|
|
dialogueId: 'grok_first_meeting',
|
|
current: 0,
|
|
required: 1,
|
|
completed: false
|
|
}
|
|
],
|
|
|
|
rewards: {
|
|
xp: 150,
|
|
items: [
|
|
{ id: 'meditation_guide', amount: 1 }
|
|
],
|
|
bondStrength: +3,
|
|
unlocks: ['grok_shop', 'grok_quests']
|
|
},
|
|
|
|
nextQuest: 'quest_1_3_twin_bond',
|
|
|
|
startDialogue: {
|
|
speaker: 'Narrator',
|
|
text: '*BOOONG!* A deep gong echoes through the ruins. You\'re not alone...'
|
|
}
|
|
},
|
|
|
|
// ===== QUEST 1.3: FIRST TWIN BOND MESSAGE =====
|
|
'quest_1_3_twin_bond': {
|
|
id: 'quest_1_3_twin_bond',
|
|
title: 'The Twin Bond Awakens',
|
|
description: 'Ana\'s voice echoes in your mind. The Twin Bond is real!',
|
|
act: 1,
|
|
isMainQuest: true,
|
|
|
|
objectives: [
|
|
{
|
|
id: 'receive_message',
|
|
description: 'Listen to Ana\'s telepathic message',
|
|
type: 'event',
|
|
eventId: 'first_twin_bond_message',
|
|
current: 0,
|
|
required: 1,
|
|
completed: false
|
|
},
|
|
{
|
|
id: 'use_sense_pulse',
|
|
description: 'Use Sense Pulse ability (F key)',
|
|
type: 'ability',
|
|
abilityId: 'sense_pulse',
|
|
current: 0,
|
|
required: 1,
|
|
completed: false
|
|
}
|
|
],
|
|
|
|
rewards: {
|
|
xp: 200,
|
|
bondStrength: +10,
|
|
unlocks: ['twin_bond_ui', 'telepathy_ability']
|
|
},
|
|
|
|
nextQuest: 'quest_1_4_first_zombie',
|
|
|
|
triggerEvent: {
|
|
type: 'twin_bond_message',
|
|
delay: 5000, // 5 seconds after quest start
|
|
message: 'Kai... can you hear me? I\'m alive... but I don\'t know where I am...',
|
|
emotion: 'worried'
|
|
}
|
|
},
|
|
|
|
// ===== QUEST 1.4: TAME YOUR FIRST ZOMBIE =====
|
|
'quest_1_4_first_zombie': {
|
|
id: 'quest_1_4_first_zombie',
|
|
title: 'The Alfa Power',
|
|
description: 'Use your Alfa abilities to tame wild zombies. They can help you search for Ana.',
|
|
act: 1,
|
|
isMainQuest: true,
|
|
|
|
objectives: [
|
|
{
|
|
id: 'find_zombie',
|
|
description: 'Find a wild zombie',
|
|
type: 'entity',
|
|
entityType: 'wild_zombie',
|
|
current: 0,
|
|
required: 1,
|
|
completed: false
|
|
},
|
|
{
|
|
id: 'tame_zombie',
|
|
description: 'Tame the zombie (approach and press T)',
|
|
type: 'tame',
|
|
current: 0,
|
|
required: 1,
|
|
completed: false
|
|
},
|
|
{
|
|
id: 'command_zombie',
|
|
description: 'Give your zombie a command',
|
|
type: 'action',
|
|
actionId: 'zombie_command',
|
|
current: 0,
|
|
required: 1,
|
|
completed: false
|
|
}
|
|
],
|
|
|
|
rewards: {
|
|
xp: 250,
|
|
items: [
|
|
{ id: 'zombie_guide', amount: 1 }
|
|
],
|
|
bondStrength: +5,
|
|
unlocks: ['zombie_commands', 'grave_crafting']
|
|
},
|
|
|
|
nextQuest: 'quest_1_5_ana_grave',
|
|
|
|
tutorialText: {
|
|
'find': 'Wild zombies are attracted to your Alfa scent. They will approach you.',
|
|
'tame': 'Get close to a zombie and press T. Your Alfa power will bring them under control.',
|
|
'command': 'Use number keys 1-4 to give commands: Follow, Work, Guard, Rest'
|
|
}
|
|
},
|
|
|
|
// ===== QUEST 1.5: BUILD ANA'S GRAVE (MEMORIAL) =====
|
|
'quest_1_5_ana_grave': {
|
|
id: 'quest_1_5_ana_grave',
|
|
title: 'A Sister\'s Memorial',
|
|
description: 'Build a grave as a memorial for Ana. You will find her, but this represents your bond.',
|
|
act: 1,
|
|
isMainQuest: true,
|
|
|
|
objectives: [
|
|
{
|
|
id: 'gather_stone',
|
|
description: 'Gather 10 stones',
|
|
type: 'item',
|
|
itemId: 'stone',
|
|
current: 0,
|
|
required: 10,
|
|
completed: false
|
|
},
|
|
{
|
|
id: 'gather_dirt',
|
|
description: 'Gather 5 dirt',
|
|
type: 'item',
|
|
itemId: 'dirt',
|
|
current: 0,
|
|
required: 5,
|
|
completed: false
|
|
},
|
|
{
|
|
id: 'craft_grave',
|
|
description: 'Craft Ana\'s Memorial Grave',
|
|
type: 'craft',
|
|
recipeId: 'ana_memorial_grave',
|
|
current: 0,
|
|
required: 1,
|
|
completed: false
|
|
},
|
|
{
|
|
id: 'place_grave',
|
|
description: 'Place the grave at a meaningful location',
|
|
type: 'placement',
|
|
current: 0,
|
|
required: 1,
|
|
completed: false
|
|
}
|
|
],
|
|
|
|
rewards: {
|
|
xp: 300,
|
|
bondStrength: +15,
|
|
items: [
|
|
{ id: 'ana_locket', amount: 1 } // Special item
|
|
],
|
|
unlocks: ['ana_memorial_buff']
|
|
},
|
|
|
|
nextQuest: 'quest_1_6_search_lab',
|
|
|
|
emotionalMoment: {
|
|
text: 'You place flowers on the grave. "I will find you, Ana. I promise."',
|
|
emotion: 'determined',
|
|
bondPulse: true,
|
|
camera: 'zoom_in'
|
|
}
|
|
},
|
|
|
|
// ===== QUEST 1.6: SEARCH LAB RUINS =====
|
|
'quest_1_6_search_lab': {
|
|
id: 'quest_1_6_search_lab',
|
|
title: 'Back to the Beginning',
|
|
description: 'Return to the lab ruins and search for clues about Ana\'s location.',
|
|
act: 1,
|
|
isMainQuest: true,
|
|
|
|
objectives: [
|
|
{
|
|
id: 'search_lab_entrance',
|
|
description: 'Search the lab entrance',
|
|
type: 'location',
|
|
target: { x: 200, y: 300, radius: 30 },
|
|
current: 0,
|
|
required: 1,
|
|
completed: false
|
|
},
|
|
{
|
|
id: 'search_research_wing',
|
|
description: 'Search the research wing',
|
|
type: 'location',
|
|
target: { x: 400, y: 350, radius: 30 },
|
|
current: 0,
|
|
required: 1,
|
|
completed: false
|
|
},
|
|
{
|
|
id: 'search_security_office',
|
|
description: 'Search the security office',
|
|
type: 'location',
|
|
target: { x: 300, y: 450, radius: 30 },
|
|
current: 0,
|
|
required: 1,
|
|
completed: false
|
|
}
|
|
],
|
|
|
|
rewards: {
|
|
xp: 350,
|
|
bondStrength: +8,
|
|
items: [
|
|
{ id: 'lab_keycard', amount: 1 },
|
|
{ id: 'security_footage', amount: 1 }
|
|
]
|
|
},
|
|
|
|
nextQuest: 'quest_1_7_research_notes',
|
|
|
|
discoveries: [
|
|
{
|
|
location: 'lab_entrance',
|
|
text: 'Blood on the floor... Ana was injured during the attack.'
|
|
},
|
|
{
|
|
location: 'research_wing',
|
|
text: 'Her workstation is destroyed, but some data drives might still work.'
|
|
},
|
|
{
|
|
location: 'security_office',
|
|
text: 'Security footage! This could show what happened!'
|
|
}
|
|
]
|
|
},
|
|
|
|
// ===== QUEST 1.7: FIND ANA'S RESEARCH NOTES =====
|
|
'quest_1_7_research_notes': {
|
|
id: 'quest_1_7_research_notes',
|
|
title: 'Ana\'s Research',
|
|
description: 'Recover Ana\'s research notes. They might contain clues about who took her.',
|
|
act: 1,
|
|
isMainQuest: true,
|
|
|
|
objectives: [
|
|
{
|
|
id: 'decode_data_drive',
|
|
description: 'Decode the data drive',
|
|
type: 'puzzle',
|
|
puzzleId: 'data_drive_decode',
|
|
current: 0,
|
|
required: 1,
|
|
completed: false
|
|
},
|
|
{
|
|
id: 'watch_security_footage',
|
|
description: 'Watch security footage',
|
|
type: 'cutscene',
|
|
cutsceneId: 'security_footage_reveal',
|
|
current: 0,
|
|
required: 1,
|
|
completed: false
|
|
},
|
|
{
|
|
id: 'find_research_notes',
|
|
description: 'Find Ana\'s hidden research notes',
|
|
type: 'item',
|
|
itemId: 'ana_research_notes',
|
|
current: 0,
|
|
required: 1,
|
|
completed: false
|
|
}
|
|
],
|
|
|
|
rewards: {
|
|
xp: 400,
|
|
bondStrength: +12,
|
|
items: [
|
|
{ id: 'alfa_serum_blueprint', amount: 1 }
|
|
]
|
|
},
|
|
|
|
nextQuest: 'quest_1_8_decipher_clues',
|
|
|
|
cutscene: {
|
|
id: 'security_footage_reveal',
|
|
scenes: [
|
|
{
|
|
text: 'The footage is corrupted, but you can make out figures in heavy armor...',
|
|
speaker: 'Narrator'
|
|
},
|
|
{
|
|
text: 'They\'re dragging Ana away... she\'s fighting them...',
|
|
speaker: 'Kai',
|
|
emotion: 'anger'
|
|
},
|
|
{
|
|
text: 'Wait... that symbol on their armor... I\'ve seen it before!',
|
|
speaker: 'Kai',
|
|
emotion: 'shocked'
|
|
}
|
|
]
|
|
}
|
|
},
|
|
|
|
// ===== QUEST 1.8: DECIPHER THE CLUES =====
|
|
'quest_1_8_decipher_clues': {
|
|
id: 'quest_1_8_decipher_clues',
|
|
title: 'The Trail Grows Warm',
|
|
description: 'Use Ana\'s research and the security footage to figure out where they took her.',
|
|
act: 1,
|
|
isMainQuest: true,
|
|
|
|
objectives: [
|
|
{
|
|
id: 'read_notes',
|
|
description: 'Read Ana\'s research notes',
|
|
type: 'item_use',
|
|
itemId: 'ana_research_notes',
|
|
current: 0,
|
|
required: 1,
|
|
completed: false
|
|
},
|
|
{
|
|
id: 'consult_grok',
|
|
description: 'Ask Grok about the symbol',
|
|
type: 'dialogue',
|
|
dialogueId: 'grok_symbol_knowledge',
|
|
current: 0,
|
|
required: 1,
|
|
completed: false
|
|
},
|
|
{
|
|
id: 'find_map',
|
|
description: 'Find a map of the region',
|
|
type: 'item',
|
|
itemId: 'region_map',
|
|
current: 0,
|
|
required: 1,
|
|
completed: false
|
|
}
|
|
],
|
|
|
|
rewards: {
|
|
xp: 500,
|
|
bondStrength: +20,
|
|
items: [
|
|
{ id: 'coordinates_note', amount: 1 }
|
|
],
|
|
unlocks: ['act_2']
|
|
},
|
|
|
|
nextQuest: 'quest_2_1_journey_begins', // ACT 2!
|
|
|
|
revelation: {
|
|
text: 'The symbol... it\'s from a secret military facility. That\'s where they took Ana!',
|
|
speaker: 'Kai',
|
|
emotion: 'determined',
|
|
cameraEffect: 'dramatic_zoom',
|
|
bondPulse: true
|
|
},
|
|
|
|
endingDialogue: {
|
|
nodes: {
|
|
'ending': {
|
|
speaker: 'Ana (Twin Bond)',
|
|
emotion: 'hope',
|
|
text: 'Kai... I can feel you getting closer. Don\'t give up!',
|
|
next: 'kai_response'
|
|
},
|
|
'kai_response': {
|
|
speaker: 'Kai',
|
|
emotion: 'determined',
|
|
text: 'I\'m coming for you, Ana. Nothing will stop me.',
|
|
next: null
|
|
}
|
|
}
|
|
}
|
|
}
|
|
};
|
|
|
|
// Export for use in QuestSystem
|
|
if (typeof module !== 'undefined' && module.exports) {
|
|
module.exports = Act1QuestData;
|
|
}
|