Techtrees
-- ==========================================
-- TECH TREE SYSTEM
-- ==========================================
-- Tech trees are assigned per station/workbench via the techTrees field in config.lua
-- Example: techTrees = { 'basic_survival', 'technology' }
return {
enabled = true,
perWorkbenchType = true, -- If true, players have separate tech points and unlocks per workbench type
defaultTechPointsPerCraft = {
enabled = false, -- If false, recipes without techPoints specified will give no tech points
amount = 1, -- Default tech points amount when recipe doesn't specify
},
-- Shared tech tree for placed workbenches
-- When enabled, all players using the same placed workbench share tech points and unlocked nodes
-- This does NOT affect static workbenches (defined in Config.Stations) - those are always per-player
sharedPlacedWorkbench = {
enabled = true, -- If true, placed workbenches share tech progress between all users
},
-- ==========================================
-- TECH TREES
-- ==========================================
-- All available tech trees. Assign them to stations/workbenches in config.lua
-- using techTrees = { 'tree_id_1', 'tree_id_2' }
Trees = {
-- ==========================================
-- BASIC SURVIVAL TREE
-- ==========================================
['basic_survival'] = {
label = 'Basic Survival',
icon = 'heart-pulse',
color = '#ef4444',
nodes = {
{ id = 'firstaid_node', recipeId = 'firstaid', cost = 5, prerequisites = {}, position = { row = 1, col = 2 } },
{ id = 'hunting_bait_2_node', recipeId = 'hunting_bait_2', cost = 3, prerequisites = {}, position = { row = 1, col = 4 } },
{ id = 'splint_node', recipeId = 'splint', cost = 8, prerequisites = { 'firstaid_node' }, position = { row = 2, col = 2 } },
{ id = 'hunting_bait_3_node', recipeId = 'hunting_bait_3', cost = 8, prerequisites = { 'hunting_bait_2_node' }, position = { row = 2, col = 4 } },
{ id = 'hunting_trap_node', recipeId = 'hunting_trap', cost = 10, prerequisites = { 'hunting_bait_2_node' }, position = { row = 2, col = 5 } },
}
},
-- ==========================================
-- BASIC EXPLORATION TREE
-- ==========================================
['basic_exploration'] = {
label = 'Basic Exploration',
icon = 'compass',
color = '#06b6d4',
nodes = {
{ id = 'metaldetector_1_node', recipeId = 'metaldetector_1', cost = 6, prerequisites = {}, position = { row = 1, col = 2 } },
{ id = 'diving_gear_1_node', recipeId = 'diving_gear_1', cost = 8, prerequisites = {}, position = { row = 1, col = 4 } },
}
},
-- ==========================================
-- TOOLS & TECHNOLOGY (17 nodes)
-- ==========================================
['technology'] = {
label = 'Tools & Technology',
icon = 'microchip',
color = '#3b82f6',
nodes = {
-- Row 1: Entry Points
{ id = 'repair_advanced', recipeId = 'advancedrepairkit', cost = 8, prerequisites = {}, position = { row = 1, col = 3 } },
{ id = 'radio_node', recipeId = 'radio', cost = 6, prerequisites = {}, position = { row = 1, col = 5 } },
{ id = 'cryptostick_node', recipeId = 'cryptostick', cost = 10, prerequisites = {}, position = { row = 1, col = 7 } },
-- Row 2: Tier 2
{ id = 'drill_node', recipeId = 'drill', cost = 15, prerequisites = {}, position = { row = 2, col = 1 } },
{ id = 'powersaw_node', recipeId = 'powersaw', cost = 15, prerequisites = { 'repair_advanced' }, position = { row = 2, col = 3 } },
{ id = 'binoculars_node', recipeId = 'binoculars', cost = 12, prerequisites = { 'repair_advanced' }, position = { row = 2, col = 4 } },
{ id = 'jammer_node', recipeId = 'jammer', cost = 18, prerequisites = { 'radio_node' }, position = { row = 2, col = 5 } },
{ id = 'trojan_usb_node', recipeId = 'trojan_usb', cost = 18, prerequisites = { 'cryptostick_node' }, position = { row = 2, col = 7 } },
-- Row 3: Tier 3 - Convergence
{ id = 'welding_torch_node', recipeId = 'welding_torch', cost = 25, prerequisites = { 'drill_node', 'powersaw_node' }, position = { row = 3, col = 2 } },
{ id = 'signal_scanner_node', recipeId = 'signal_scanner', cost = 25, prerequisites = { 'jammer_node', 'trojan_usb_node' }, position = { row = 3, col = 6 } },
-- Row 4: Tier 4
{ id = 'plasma_cutter_node', recipeId = 'plasma_cutter', cost = 35, prerequisites = { 'welding_torch_node' }, position = { row = 4, col = 2 } },
{ id = 'night_vision_node', recipeId = 'night_vision', cost = 30, prerequisites = { 'binoculars_node', 'signal_scanner_node' }, position = { row = 4, col = 4 } },
{ id = 'gatecrack_node', recipeId = 'gatecrack', cost = 40, prerequisites = { 'signal_scanner_node' }, position = { row = 4, col = 6 } },
-- Row 5: Ultimate
{ id = 'master_toolkit_node', recipeId = 'master_toolkit', cost = 60, prerequisites = { 'plasma_cutter_node', 'gatecrack_node' }, position = { row = 5, col = 4 } },
}
},
-- ==========================================
-- EXPLORATION (15 nodes)
-- ==========================================
['exploration'] = {
label = 'Exploration',
icon = 'compass',
color = '#06b6d4',
nodes = {
-- Row 1: Entry points
{ id = 'metaldetector_2_node', recipeId = 'metaldetector_2', cost = 8, prerequisites = {}, position = { row = 1, col = 2 } },
{ id = 'diving_gear_2_node', recipeId = 'diving_gear_2', cost = 10, prerequisites = {}, position = { row = 1, col = 5 } },
-- Row 2
{ id = 'metaldetector_3_node', recipeId = 'metaldetector_3', cost = 15, prerequisites = { 'metaldetector_2_node' }, position = { row = 2, col = 2 } },
{ id = 'gps_tracker_node', recipeId = 'gps_tracker', cost = 20, prerequisites = { 'metaldetector_2_node', 'diving_gear_2_node' }, position = { row = 2, col = 3 } },
{ id = 'diving_gear_3_node', recipeId = 'diving_gear_3', cost = 18, prerequisites = { 'diving_gear_2_node' }, position = { row = 2, col = 5 } },
{ id = 'diving_fill_node', recipeId = 'diving_fill', cost = 12, prerequisites = { 'diving_gear_2_node' }, position = { row = 2, col = 6 } },
-- Row 3
{ id = 'metaldetector_4_node', recipeId = 'metaldetector_4', cost = 25, prerequisites = { 'metaldetector_3_node' }, position = { row = 3, col = 2 } },
{ id = 'diving_gear_4_node', recipeId = 'diving_gear_4', cost = 28, prerequisites = { 'diving_gear_3_node' }, position = { row = 3, col = 5 } },
{ id = 'underwater_flashlight_node', recipeId = 'underwater_flashlight', cost = 15, prerequisites = { 'diving_fill_node' }, position = { row = 3, col = 6 } },
-- Row 4
{ id = 'metaldetector_5_node', recipeId = 'metaldetector_5', cost = 40, prerequisites = { 'metaldetector_4_node' }, position = { row = 4, col = 2 } },
{ id = 'sonar_device_node', recipeId = 'sonar_device', cost = 35, prerequisites = { 'gps_tracker_node', 'underwater_flashlight_node' }, position = { row = 4, col = 4 } },
{ id = 'diving_gear_5_node', recipeId = 'diving_gear_5', cost = 45, prerequisites = { 'diving_gear_4_node' }, position = { row = 4, col = 5 } },
-- Row 5: Ultimate
{ id = 'treasure_hunter_kit_node', recipeId = 'treasure_hunter_kit', cost = 60, prerequisites = { 'metaldetector_5_node', 'diving_gear_5_node', 'sonar_device_node' }, position = { row = 5, col = 4 } },
}
},
-- ==========================================
-- SURVIVAL (18 nodes)
-- ==========================================
['survival'] = {
label = 'Survival',
icon = 'heart-pulse',
color = '#ef4444',
nodes = {
-- Row 1: Entry points (3 branches)
{ id = 'ifak_node', recipeId = 'ifaks', cost = 10, prerequisites = {}, position = { row = 1, col = 1 } },
{ id = 'hunting_bait_4_node', recipeId = 'hunting_bait_4', cost = 12, prerequisites = {}, position = { row = 1, col = 4 } },
{ id = 'parachute_node', recipeId = 'parachute', cost = 15, prerequisites = {}, position = { row = 1, col = 7 } },
-- Row 2
{ id = 'trauma_kit_node', recipeId = 'trauma_kit', cost = 20, prerequisites = { 'ifak_node' }, position = { row = 2, col = 1 } },
{ id = 'hunting_bait_5_node', recipeId = 'hunting_bait_5', cost = 20, prerequisites = { 'hunting_bait_4_node' }, position = { row = 2, col = 4 } },
{ id = 'ghillie_suit_node', recipeId = 'ghillie_suit', cost = 18, prerequisites = { 'hunting_bait_4_node' }, position = { row = 2, col = 5 } },
{ id = 'armour_node', recipeId = 'armour', cost = 30, prerequisites = { 'parachute_node' }, position = { row = 2, col = 7 } },
-- Row 3
{ id = 'field_surgery_kit_node', recipeId = 'field_surgery_kit', cost = 35, prerequisites = { 'trauma_kit_node' }, position = { row = 3, col = 1 } },
{ id = 'master_hunter_node', recipeId = 'master_hunter_kit', cost = 40, prerequisites = { 'hunting_bait_5_node', 'ghillie_suit_node' }, position = { row = 3, col = 4 } },
{ id = 'heavy_armour_node', recipeId = 'heavy_armour', cost = 45, prerequisites = { 'armour_node' }, position = { row = 3, col = 7 } },
-- Row 4: Convergence
{ id = 'combat_medic_kit_node', recipeId = 'combat_medic_kit', cost = 50, prerequisites = { 'field_surgery_kit_node', 'heavy_armour_node' }, position = { row = 4, col = 4 } },
-- Row 5: Ultimate
{ id = 'survivalist_pack_node', recipeId = 'survivalist_pack', cost = 70, prerequisites = { 'master_hunter_node', 'combat_medic_kit_node' }, position = { row = 5, col = 4 } },
}
},
-- ==========================================
-- ENGINEERING (11 nodes)
-- ==========================================
['engineering'] = {
label = 'Engineering',
icon = 'gears',
color = '#f97316',
nodes = {
-- Row 1: Entry points
{ id = 'jerry_can_node', recipeId = 'jerry_can', cost = 10, prerequisites = {}, position = { row = 1, col = 2 } },
{ id = 'thermite_node', recipeId = 'thermite', cost = 35, prerequisites = {}, position = { row = 1, col = 5 } },
-- Row 2
{ id = 'nitrous_node', recipeId = 'nitrous', cost = 25, prerequisites = { 'jerry_can_node' }, position = { row = 2, col = 1 } },
{ id = 'fuel_additive_node', recipeId = 'fuel_additive', cost = 18, prerequisites = { 'jerry_can_node' }, position = { row = 2, col = 3 } },
{ id = 'shaped_charge_node', recipeId = 'shaped_charge', cost = 45, prerequisites = { 'thermite_node' }, position = { row = 2, col = 5 } },
{ id = 'det_cord_node', recipeId = 'det_cord', cost = 30, prerequisites = { 'thermite_node' }, position = { row = 2, col = 6 } },
-- Row 3
{ id = 'turbo_kit_node', recipeId = 'turbo_kit', cost = 40, prerequisites = { 'nitrous_node', 'fuel_additive_node' }, position = { row = 3, col = 2 } },
{ id = 'breaching_charge_node', recipeId = 'breaching_charge', cost = 55, prerequisites = { 'shaped_charge_node', 'det_cord_node' }, position = { row = 3, col = 5 } },
-- Row 4
{ id = 'performance_kit_node', recipeId = 'performance_kit', cost = 55, prerequisites = { 'turbo_kit_node' }, position = { row = 4, col = 2 } },
{ id = 'demolition_kit_node', recipeId = 'demolition_kit', cost = 70, prerequisites = { 'breaching_charge_node' }, position = { row = 4, col = 5 } },
-- Row 5: Ultimate
{ id = 'master_engineer_kit_node', recipeId = 'master_engineer_kit', cost = 80, prerequisites = { 'performance_kit_node', 'demolition_kit_node' }, position = { row = 5, col = 3 } },
}
},
},
}
Last updated