design config

This commit is contained in:
2026-06-12 18:00:04 +02:00
parent 282ace4c11
commit fba98c928f
5 changed files with 689 additions and 122 deletions

View File

@@ -1,122 +1,37 @@
[[module]]
id = "armor_plate"
unlock_at_station_level = -1
surface_mask = ["OO"]
materials = [{item = "armor_plate_module", amount = 1}]
player_production_level = 1
production_time_seconds = 3
fill_color = "#808080"
glyph = "A"
[module.health]
added_hp_formula = "40"
# modules.toml
#
# First real-content iteration: module ids and surface masks are the designed
# content; stats, materials, and threat costs are placeholders until the
# recipe and balancing passes.
#
# Surface mask footprint ladder — footprints gate which hulls can mount a
# module, purely through geometry (see ships.toml for the matching hull
# grids):
#
# 1x1 laser_cannon_s, salvager, repair_tool fits every hull, incl. drones
# 1x2 maneuvering_thrusters, sensor_booster,
# armor_plates frigate and up
# 1x3 afterburner frigate and up (eats most of a frigate)
# L-shape weapon_stabilizer, weapon_primer,
# weapon_upgrade frigate and up
# 2x2 laser_cannon_m, drone_bay cruiser and up (no 2x2 area on s hulls)
# 3x3 laser_cannon_l battleship and up (no 3x3 area on m hulls)
# 2x6 drone_hangar dreadnought and carrier only
# -----------------------------------------------------------------------------
# Weapons
# -----------------------------------------------------------------------------
[[module]]
id = "sensor_booster"
id = "laser_cannon_s"
unlock_at_station_level = -1
surface_mask = ["O"]
materials = [{item = "sensor_booster_module", amount = 1}]
player_production_level = 1
production_time_seconds = 2
fill_color = "#40A0FF"
glyph = "S"
[module.sensor]
added_sensor_range_m_formula = "50"
[[module]]
id = "manuvering_thrusters"
unlock_at_station_level = -1
surface_mask = ["O"]
materials = [{item = "manuvering_thrusters_module", amount = 1}]
player_production_level = 1
production_time_seconds = 2
fill_color = "#40A0FF"
glyph = "Mt"
[module.movement]
multiplied_speed_mps_formula = "1.2"
added_maneuvering_acceleration_mpss_formula = "10"
[[module]]
id = "afterburner"
unlock_at_station_level = -1
surface_mask = ["O"]
materials = [{item = "afterburner_module", amount = 1}]
player_production_level = 1
production_time_seconds = 2
fill_color = "#40A0FF"
glyph = "Ab"
[module.movement]
multiplied_speed_mps_formula = "1.6"
added_main_acceleration_mpss_formula = "60"
[[module]]
id = "weapon_upgrade"
unlock_at_station_level = -1
surface_mask = [
"OO",
"O ",
]
materials = [{item = "weapon_upgrade_module", amount = 1}]
player_production_level = 1
production_time_seconds = 4
fill_color = "#FF4040"
glyph = "Wu"
[module.weapon]
multiplied_damage_formula = "1.2"
[[module]]
id = "weapon_primer"
unlock_at_station_level = -1
surface_mask = [
"OO",
"O ",
]
materials = [{item = "weapon_primer_module", amount = 1}]
player_production_level = 1
production_time_seconds = 4
fill_color = "#FF4040"
glyph = "Wp"
[module.weapon]
multiplied_attack_rate_hz_formula = "1.2"
[[module]]
id = "weapon_stabilizer"
unlock_at_station_level = -1
surface_mask = [
"OO",
"O ",
]
materials = [{item = "weapon_stabilizer_module", amount = 1}]
player_production_level = 1
production_time_seconds = 4
fill_color = "#FF4040"
glyph = "Ws"
[module.weapon]
multiplied_attack_range_m_formula = "1.5"
multiplied_attack_rate_hz_formula = "0.8"
[[module]]
id = "laser_cannon_xs"
unlock_at_station_level = -1
surface_mask = ["O"]
materials = [{item = "iron_ore", amount = 1}]
materials = [{item = "laser_cannon_s_module", amount = 1}]
player_production_level = 1
production_time_seconds = 0.5
threat_cost = 5.0
fill_color = "#FF8040"
glyph = "L"
glyph = "Ls"
[module.weapon]
damage_formula = "2"
@@ -125,16 +40,17 @@ attack_rate_hz_formula = "2.0"
[[module]]
id = "laser_cannon_s"
id = "laser_cannon_m"
unlock_at_station_level = -1
surface_mask = [
"OO",
"OO"]
materials = [{item = "laser_cannon_s_module", amount = 1}]
materials = [{item = "laser_cannon_m_module", amount = 1}]
player_production_level = 1
production_time_seconds = 0.5
production_time_seconds = 2
threat_cost = 30.0
fill_color = "#FF8040"
glyph = "L"
glyph = "Lm"
[module.weapon]
damage_formula = "10"
@@ -142,6 +58,29 @@ attack_range_m_formula = "70"
attack_rate_hz_formula = "1.5"
[[module]]
id = "laser_cannon_l"
unlock_at_station_level = -1
surface_mask = [
"OOO",
"OOO",
"OOO"]
materials = [{item = "laser_cannon_l_module", amount = 1}]
player_production_level = 1
production_time_seconds = 8
threat_cost = 150.0
fill_color = "#FF8040"
glyph = "Ll"
[module.weapon]
damage_formula = "40"
attack_range_m_formula = "100"
attack_rate_hz_formula = "0.8"
# -----------------------------------------------------------------------------
# Utility tools
# -----------------------------------------------------------------------------
[[module]]
id = "salvager"
unlock_at_station_level = -1
@@ -149,6 +88,7 @@ surface_mask = ["O"]
materials = [{item = "salvager_module", amount = 1}]
player_production_level = 1
production_time_seconds = 2
threat_cost = 0.0
fill_color = "#AACC44"
glyph = "Sv"
@@ -165,9 +105,170 @@ surface_mask = ["O"]
materials = [{item = "repair_tool_module", amount = 1}]
player_production_level = 1
production_time_seconds = 2
threat_cost = 0.0
fill_color = "#66CCFF"
glyph = "Rp"
[module.repair]
repair_rate_hz_formula = "5 + x"
repair_range_m_formula = "800"
# -----------------------------------------------------------------------------
# Propulsion
# -----------------------------------------------------------------------------
[[module]]
id = "afterburner"
unlock_at_station_level = -1
surface_mask = ["OOO"]
materials = [{item = "afterburner_module", amount = 1}]
player_production_level = 1
production_time_seconds = 2
threat_cost = 1.0
fill_color = "#40A0FF"
glyph = "Ab"
[module.movement]
multiplied_speed_mps_formula = "1.6"
added_main_acceleration_mpss_formula = "60"
[[module]]
id = "maneuvering_thrusters"
unlock_at_station_level = -1
surface_mask = ["OO"]
materials = [{item = "maneuvering_thrusters_module", amount = 1}]
player_production_level = 1
production_time_seconds = 2
threat_cost = 1.0
fill_color = "#40A0FF"
glyph = "Mt"
[module.movement]
multiplied_speed_mps_formula = "1.2"
added_maneuvering_acceleration_mpss_formula = "10"
# -----------------------------------------------------------------------------
# Defense & sensors
# -----------------------------------------------------------------------------
[[module]]
id = "armor_plates"
unlock_at_station_level = -1
surface_mask = ["OO"]
materials = [{item = "armor_plates_module", amount = 1}]
player_production_level = 1
production_time_seconds = 3
threat_cost = 20.0
fill_color = "#808080"
glyph = "A"
[module.health]
added_hp_formula = "40"
[[module]]
id = "sensor_booster"
unlock_at_station_level = -1
surface_mask = ["OO"]
materials = [{item = "sensor_booster_module", amount = 1}]
player_production_level = 1
production_time_seconds = 2
threat_cost = 1.0
fill_color = "#40A0FF"
glyph = "S"
[module.sensor]
added_sensor_range_m_formula = "50"
# -----------------------------------------------------------------------------
# Weapon modifiers
# -----------------------------------------------------------------------------
[[module]]
id = "weapon_upgrade"
unlock_at_station_level = -1
surface_mask = [
"OO",
"OX",
]
materials = [{item = "weapon_upgrade_module", amount = 1}]
player_production_level = 1
production_time_seconds = 4
threat_cost = 10.0
fill_color = "#FF4040"
glyph = "Wu"
[module.weapon]
multiplied_damage_formula = "1.2"
[[module]]
id = "weapon_primer"
unlock_at_station_level = -1
surface_mask = [
"OO",
"OX",
]
materials = [{item = "weapon_primer_module", amount = 1}]
player_production_level = 1
production_time_seconds = 4
threat_cost = 10.0
fill_color = "#FF4040"
glyph = "Wp"
[module.weapon]
multiplied_attack_rate_hz_formula = "1.2"
[[module]]
id = "weapon_stabilizer"
unlock_at_station_level = -1
surface_mask = [
"OO",
"OX",
]
materials = [{item = "weapon_stabilizer_module", amount = 1}]
player_production_level = 1
production_time_seconds = 4
threat_cost = 10.0
fill_color = "#FF4040"
glyph = "Ws"
[module.weapon]
multiplied_attack_range_m_formula = "1.5"
multiplied_attack_rate_hz_formula = "0.8"
# -----------------------------------------------------------------------------
# Drone modules
#
# Footprint-only placeholders: the drone launching capability is not
# implemented yet, so these modules define no capability section.
# -----------------------------------------------------------------------------
[[module]]
id = "drone_bay"
unlock_at_station_level = -1
surface_mask = [
"OO",
"OO"]
materials = [{item = "drone_bay_module", amount = 1}]
player_production_level = 1
production_time_seconds = 5
threat_cost = 15.0
fill_color = "#CC66FF"
glyph = "Db"
[[module]]
id = "drone_hangar"
unlock_at_station_level = -1
surface_mask = [
"OOOOOO",
"OOOOOO"]
materials = [{item = "drone_hangar_module", amount = 1}]
player_production_level = 1
production_time_seconds = 20
threat_cost = 100.0
fill_color = "#9933CC"
glyph = "Dh"

View File

@@ -1,8 +1,26 @@
# ships.toml
#
# First real-content iteration: ship ids and layout grids are the designed
# content; stats, materials, and production times are placeholders until the
# recipe and balancing passes.
#
# Size classes:
# xs drone 1 cell — exactly one 1x1 module
# s frigate, destroyer no 2x2 area anywhere: only 1x1/1x2/1x3/L modules fit
# m cruiser, battlecruiser 2x2 areas (m guns, drone bays) but no 3x3 area
# l battleship fits exactly one 3x3 l gun, at heavy opportunity cost
# xl dreadnought, carrier dreadnought fits three l guns; carrier fits one
# drone hangar (2x6) but no l gun (its deck rows
# are broken up by elevator shafts)
#
# All new hulls have threat cost_formula = "0" so enemy waves do not spawn
# them until the balancing pass gives them real stats and default loadouts.
[[ship]]
id = "drone"
unlock_at_station_level = -1
layout = ["O"]
default_modules = [{type = "laser_cannon_xs", x = 0, y = 0, rotation = "east"}]
default_modules = [{type = "laser_cannon_s", x = 0, y = 0, rotation = "east"}]
[ship.schematic]
materials = [{item = "iron_ore", amount = 1}]
@@ -24,3 +42,272 @@ sensor_range_m_formula = "150"
[ship.loot]
scrap_drop = 2
# Frigate — 5 cells in a plus shape. Holds a couple of small guns plus at
# most one 1x2 support (every 1x2 placement crosses the center cell), or one
# L-shaped weapon modifier, or an afterburner spanning the full center line.
[[ship]]
id = "frigate"
unlock_at_station_level = -1
layout = [
"XOX",
"OOO",
"XOX",
]
[ship.schematic]
materials = [{item = "frigate_hull", amount = 1}]
player_production_level = 1
production_time_seconds = 10
[ship.threat]
cost_formula = "0"
[ship.health]
hp_formula = "30"
[ship.movement]
speed_mps_formula = "30"
main_acceleration_mpss_formula = "50"
maneuvering_acceleration_mpss_formula = "25"
angular_acceleration_radpss_formula = "8"
max_rotation_speed_radps_formula = "4"
[ship.sensor]
sensor_range_m_formula = "200"
[ship.loot]
scrap_drop = 5
# Destroyer — 8 cells: a long gun deck with three turret bumps on top.
# Still no 2x2 area, so it packs more small guns than a frigate but can never
# mount medium hardware.
[[ship]]
id = "destroyer"
unlock_at_station_level = -1
layout = [
"OXOXO",
"OOOOO",
]
[ship.schematic]
materials = [{item = "destroyer_hull", amount = 1}]
player_production_level = 1
production_time_seconds = 15
[ship.threat]
cost_formula = "0"
[ship.health]
hp_formula = "50"
[ship.movement]
speed_mps_formula = "25"
main_acceleration_mpss_formula = "40"
maneuvering_acceleration_mpss_formula = "20"
angular_acceleration_radpss_formula = "6"
max_rotation_speed_radps_formula = "3"
[ship.sensor]
sensor_range_m_formula = "220"
[ship.loot]
scrap_drop = 8
# Cruiser — 12 cells with notched corners. Fits at most two 2x2 m guns
# (stacked through the middle), leaving the four side cells for small
# supports; no 3x3 area exists for an l gun.
[[ship]]
id = "cruiser"
unlock_at_station_level = -1
layout = [
"XOOX",
"OOOO",
"OOOO",
"XOOX",
]
[ship.schematic]
materials = [{item = "cruiser_hull", amount = 1}]
player_production_level = 1
production_time_seconds = 25
[ship.threat]
cost_formula = "0"
[ship.health]
hp_formula = "120"
[ship.movement]
speed_mps_formula = "20"
main_acceleration_mpss_formula = "30"
maneuvering_acceleration_mpss_formula = "15"
angular_acceleration_radpss_formula = "4"
max_rotation_speed_radps_formula = "2"
[ship.sensor]
sensor_range_m_formula = "250"
[ship.loot]
scrap_drop = 15
# Battlecruiser — 16 cells: a wide bow split into two gun cheeks, tapering
# toward the stern. Fits three 2x2 m guns (two in the cheeks, one through
# the middle) with small support slots left over; the split bow and tapered
# stern leave no 3x3 area for an l gun and no 2x6 area for a drone hangar.
[[ship]]
id = "battlecruiser"
unlock_at_station_level = -1
layout = [
"OOXXOO",
"OOOOOO",
"XOOOOX",
"XXOOXX",
]
[ship.schematic]
materials = [{item = "battlecruiser_hull", amount = 1}]
player_production_level = 1
production_time_seconds = 35
[ship.threat]
cost_formula = "0"
[ship.health]
hp_formula = "180"
[ship.movement]
speed_mps_formula = "18"
main_acceleration_mpss_formula = "25"
maneuvering_acceleration_mpss_formula = "12"
angular_acceleration_radpss_formula = "3"
max_rotation_speed_radps_formula = "1.5"
[ship.sensor]
sensor_range_m_formula = "260"
[ship.loot]
scrap_drop = 20
# Battleship — 20 cells, 5 wide: at most ONE 3x3 l gun fits (the hull is too
# narrow for two), and mounting it consumes nearly half the grid, squeezing
# supports into the remaining strips. Without the l gun it flexibly fits
# several m guns instead. Too narrow for a drone hangar.
[[ship]]
id = "battleship"
unlock_at_station_level = -1
layout = [
"XOOOX",
"OOOOO",
"OOOOO",
"OOOOO",
"XOXOX",
]
[ship.schematic]
materials = [{item = "battleship_hull", amount = 1}]
player_production_level = 1
production_time_seconds = 60
[ship.threat]
cost_formula = "0"
[ship.health]
hp_formula = "350"
[ship.movement]
speed_mps_formula = "14"
main_acceleration_mpss_formula = "18"
maneuvering_acceleration_mpss_formula = "8"
angular_acceleration_radpss_formula = "2"
max_rotation_speed_radps_formula = "1"
[ship.sensor]
sensor_range_m_formula = "280"
[ship.loot]
scrap_drop = 35
# Dreadnought — 42 cells: an 11-wide, 3-deep main battery deck that fits
# three 3x3 l guns side by side with spacer columns left over, plus bow and
# stern strips for supports.
[[ship]]
id = "dreadnought"
unlock_at_station_level = -1
layout = [
"XXXOOOOOXXX",
"OOOOOOOOOOO",
"OOOOOOOOOOO",
"OOOOOOOOOOO",
"XXOOXXXOOXX",
]
[ship.schematic]
materials = [{item = "dreadnought_hull", amount = 1}]
player_production_level = 1
production_time_seconds = 120
[ship.threat]
cost_formula = "0"
[ship.health]
hp_formula = "800"
[ship.movement]
speed_mps_formula = "8"
main_acceleration_mpss_formula = "10"
maneuvering_acceleration_mpss_formula = "5"
angular_acceleration_radpss_formula = "1"
max_rotation_speed_radps_formula = "0.5"
[ship.sensor]
sensor_range_m_formula = "300"
[ship.loot]
scrap_drop = 60
# Carrier — 37 cells: the top flight deck (rows 0-1) is the only place wide
# enough for the 2x6 drone hangar, and exactly one fits. The middle deck row
# is broken up by elevator shafts (the X cells) so no 3x3 l gun can ever fit;
# the lower decks hold supports and 2x2 point-defense m guns.
[[ship]]
id = "carrier"
unlock_at_station_level = -1
layout = [
"XOOOOOOOOX",
"OOOOOOOOOO",
"OOXOOXOOXO",
"XOOOOOOOOX",
"XXXOOOOXXX",
]
[ship.schematic]
materials = [{item = "carrier_hull", amount = 1}]
player_production_level = 1
production_time_seconds = 120
[ship.threat]
cost_formula = "0"
[ship.health]
hp_formula = "700"
[ship.movement]
speed_mps_formula = "9"
main_acceleration_mpss_formula = "10"
maneuvering_acceleration_mpss_formula = "5"
angular_acceleration_radpss_formula = "1"
max_rotation_speed_radps_formula = "0.5"
[ship.sensor]
sensor_range_m_formula = "350"
[ship.loot]
scrap_drop = 60

View File

@@ -146,6 +146,10 @@ outline = "#1402b3"
fill = "#691313"
outline = "#f3ff4f"
[items.laser_cannon_s_module]
fill = "#691313"
outline = "#f3ff4f"
[items.salvager_module]
fill = "#b2cfdd"
outline = "#236137"
@@ -164,6 +168,34 @@ outline = "#689275"
fill = "#3366ff"
outline = "#ffffff"
[ships.frigate]
fill = "#44aaff"
outline = "#ffffff"
[ships.destroyer]
fill = "#33ccaa"
outline = "#ffffff"
[ships.cruiser]
fill = "#66cc33"
outline = "#ffffff"
[ships.battlecruiser]
fill = "#cccc33"
outline = "#ffffff"
[ships.battleship]
fill = "#ff9933"
outline = "#ffffff"
[ships.dreadnought]
fill = "#ff5533"
outline = "#ffffff"
[ships.carrier]
fill = "#cc66ff"
outline = "#ffffff"
# -----------------------------------------------------------------------------
# Laser beams (REQ-SHP-FIRING-BEAM)
# -----------------------------------------------------------------------------

View File

@@ -12,7 +12,7 @@ enemy_buffer_width_tiles = 10
level = 1
count = 5
modules = [
{type = "laser_cannon_xs", x = 1, y = 1, rotation = "east"},
{type = "laser_cannon_s", x = 1, y = 1, rotation = "east"},
]
[[arena.team]]
@@ -22,7 +22,7 @@ enemy_buffer_width_tiles = 10
level = 1
count = 2
modules = [
{type = "laser_cannon_xs", x = 1, y = 1, rotation = "east"},
{type = "laser_cannon_s", x = 1, y = 1, rotation = "east"},
{type = "weapon_stabilizer", x = 1, y = 1, rotation = "east"},
{type = "weapon_stabilizer", x = 1, y = 1, rotation = "east"},
{type = "weapon_upgrade", x = 1, y = 1, rotation = "east"},
@@ -44,7 +44,7 @@ enemy_buffer_width_tiles = 10
level = 1
count = 5
modules = [
{type = "laser_cannon_xs", x = 1, y = 1, rotation = "east"},
{type = "laser_cannon_s", x = 1, y = 1, rotation = "east"},
]
[[arena.team]]
@@ -54,7 +54,7 @@ enemy_buffer_width_tiles = 10
level = 1
count = 3
modules = [
{type = "laser_cannon_xs", x = 1, y = 1, rotation = "east"},
{type = "laser_cannon_s", x = 1, y = 1, rotation = "east"},
]
[[arena.team.ship]]
@@ -79,7 +79,7 @@ enemy_buffer_width_tiles = 15
level = 1
count = 3
modules = [
{type = "laser_cannon_xs", x = 1, y = 1, rotation = "east"},
{type = "laser_cannon_s", x = 1, y = 1, rotation = "east"},
]
[[arena.team.station]]
type = "player_station"
@@ -99,5 +99,5 @@ enemy_buffer_width_tiles = 15
level = 1
count = 8
modules = [
{type = "laser_cannon_xs", x = 1, y = 1, rotation = "east"},
{type = "laser_cannon_s", x = 1, y = 1, rotation = "east"},
]