# modules.toml # # Production tree v2: all weapons are railguns for now — the implementation # (instant damage, no projectile, no ammunition) stays as-is and the beam # visual reads as a tracer round. Lasers are reserved for a future distinct # weapon type (see docs/content_design.md, "Production tree v2 — Weapons"). # Combat stats are placeholders until the arena balancing pass; # production_time_seconds values come from the numbers pass. # # Unlock progression is mostly disabled (unlock_at_station_level = -1) pending # the pacing pass. The railguns are the exception: railgun_m is gated to # station level 1, and railgun_l requires railgun_m to be unlocked first # (unlock_requires) — a demonstration of the prerequisite chain. # # Surface mask footprint ladder — footprints gate which hulls can mount a # module, purely through geometry (see ships.toml for the matching hull # grids): # # 1x1 railgun_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 railgun_m, drone_bay cruiser and up (no 2x2 area on s hulls) # 3x3 railgun_l battleship and up (no 3x3 area on m hulls) # 2x6 drone_hangar carrier only # ----------------------------------------------------------------------------- # Weapons # ----------------------------------------------------------------------------- [[module]] id = "railgun_s" unlock_at_station_level = -1 surface_mask = ["O"] materials = [{item = "railgun_s_module", amount = 1}] production_time_seconds = 1 fill_color = "#FF8040" glyph = "Rs" [module.weapon] damage = 2 attack_range_m = 50 attack_rate_hz = 2.0 [[module]] id = "railgun_m" unlock_at_station_level = 1 surface_mask = [ "OO", "OO"] materials = [{item = "railgun_m_module", amount = 1}] production_time_seconds = 3 fill_color = "#FF8040" glyph = "Rm" [module.weapon] damage = 10 attack_range_m = 70 attack_rate_hz = 1.5 [[module]] id = "railgun_l" unlock_at_station_level = 1 unlock_requires = ["railgun_m"] surface_mask = [ "OOO", "OOO", "OOO"] materials = [{item = "railgun_l_module", amount = 1}] production_time_seconds = 4 fill_color = "#FF8040" glyph = "Rl" [module.weapon] damage = 40 attack_range_m = 100 attack_rate_hz = 0.8 # ----------------------------------------------------------------------------- # Utility tools # ----------------------------------------------------------------------------- [[module]] id = "salvager" unlock_at_station_level = -1 surface_mask = ["O"] materials = [{item = "salvager_module", amount = 1}] production_time_seconds = 1 fill_color = "#AACC44" glyph = "Sv" [module.salvage] collection_range_m = 500 cargo_capacity = 10 collection_rate_hz = 0.5 [[module]] id = "repair_tool" unlock_at_station_level = -1 surface_mask = ["O"] materials = [{item = "repair_tool_module", amount = 1}] production_time_seconds = 1 fill_color = "#66CCFF" glyph = "Rp" [module.repair] repair_rate_hz = 1 repair_amount_hp = 6 repair_range_m = 80 # ----------------------------------------------------------------------------- # Propulsion # ----------------------------------------------------------------------------- [[module]] id = "afterburner" unlock_at_station_level = -1 surface_mask = ["OOO"] materials = [{item = "afterburner_module", amount = 1}] production_time_seconds = 1 fill_color = "#40A0FF" glyph = "Ab" [module.movement] multiplied_speed_mps = 1.6 added_main_acceleration_mpss = 60 [[module]] id = "maneuvering_thrusters" unlock_at_station_level = -1 surface_mask = ["OO"] materials = [{item = "maneuvering_thrusters_module", amount = 1}] production_time_seconds = 1 fill_color = "#40A0FF" glyph = "Mt" [module.movement] multiplied_speed_mps = 1.2 added_maneuvering_acceleration_mpss = 10 # ----------------------------------------------------------------------------- # Defense & sensors # ----------------------------------------------------------------------------- [[module]] id = "armor_plates" unlock_at_station_level = -1 surface_mask = ["OO"] materials = [{item = "armor_plates_module", amount = 1}] production_time_seconds = 1 fill_color = "#808080" glyph = "A" [module.health] added_hp = 40 [[module]] id = "sensor_booster" unlock_at_station_level = -1 surface_mask = ["OO"] materials = [{item = "sensor_booster_module", amount = 1}] production_time_seconds = 1 fill_color = "#40A0FF" glyph = "S" [module.sensor] added_sensor_range_m = 50 # ----------------------------------------------------------------------------- # Weapon modifiers # ----------------------------------------------------------------------------- [[module]] id = "weapon_upgrade" unlock_at_station_level = -1 surface_mask = [ "OO", "OX", ] materials = [{item = "weapon_upgrade_module", amount = 1}] production_time_seconds = 2 fill_color = "#FF4040" glyph = "Wu" [module.weapon] multiplied_damage = 1.2 [[module]] id = "weapon_primer" unlock_at_station_level = -1 surface_mask = [ "OO", "OX", ] materials = [{item = "weapon_primer_module", amount = 1}] production_time_seconds = 2 fill_color = "#FF4040" glyph = "Wp" [module.weapon] multiplied_attack_rate_hz = 1.2 [[module]] id = "weapon_stabilizer" unlock_at_station_level = -1 surface_mask = [ "OO", "OX", ] materials = [{item = "weapon_stabilizer_module", amount = 1}] production_time_seconds = 1 fill_color = "#FF4040" glyph = "Ws" [module.weapon] multiplied_attack_range_m = 1.5 multiplied_attack_rate_hz = 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}] production_time_seconds = 3 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}] production_time_seconds = 6 fill_color = "#9933CC" glyph = "Dh"