mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 18:22:39 +00:00
Adds Config-Controlled Automated Solar Setup (#6107)
* Fixes autostart solars, adds new config-controlled solars. * Tweaks map to use config-controlled solar panels, and makes it work. * If true, Neerti finishes comment.
This commit is contained in:
@@ -237,6 +237,7 @@ var/list/gamemode_cache = list()
|
||||
var/radiation_lower_limit = 0.35 //If the radiation level for a turf would be below this, ignore it.
|
||||
|
||||
var/random_submap_orientation = FALSE // If true, submaps loaded automatically can be rotated.
|
||||
var/autostart_solars = FALSE // If true, specifically mapped in solar control computers will set themselves up when the round starts.
|
||||
|
||||
/datum/configuration/New()
|
||||
var/list/L = typesof(/datum/game_mode) - /datum/game_mode
|
||||
@@ -764,6 +765,9 @@ var/list/gamemode_cache = list()
|
||||
if("random_submap_orientation")
|
||||
config.random_submap_orientation = 1
|
||||
|
||||
if("autostart_solars")
|
||||
config.autostart_solars = TRUE
|
||||
|
||||
else
|
||||
log_misc("Unknown setting in configuration: '[name]'")
|
||||
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
#define SOLAR_MAX_DIST 40
|
||||
#define SOLAR_AUTO_START_NO 0 // Will never start itself.
|
||||
#define SOLAR_AUTO_START_YES 1 // Will always start itself.
|
||||
#define SOLAR_AUTO_START_CONFIG 2 // Will start itself if config allows it (default is no).
|
||||
|
||||
GLOBAL_VAR_INIT(solar_gen_rate, 1500)
|
||||
GLOBAL_LIST_EMPTY(solars_list)
|
||||
@@ -293,9 +296,23 @@ GLOBAL_LIST_EMPTY(solars_list)
|
||||
var/nexttime = 0 // time for a panel to rotate of 1<> in manual tracking
|
||||
var/obj/machinery/power/tracker/connected_tracker = null
|
||||
var/list/connected_panels = list()
|
||||
var/auto_start = SOLAR_AUTO_START_NO
|
||||
|
||||
/obj/machinery/power/solar_control/drain_power()
|
||||
return -1
|
||||
// Used for mapping in solar arrays which automatically start itself.
|
||||
// Generally intended for far away and remote locations, where player intervention is rare.
|
||||
// In the interest of backwards compatability, this isn't named auto_start, as doing so might break downstream maps.
|
||||
/obj/machinery/power/solar_control/autostart
|
||||
auto_start = SOLAR_AUTO_START_YES
|
||||
|
||||
// Similar to above but controlled by the configuration file.
|
||||
// Intended to be used for the main solar arrays, so individual servers can choose to have them start automatically or require manual intervention.
|
||||
/obj/machinery/power/solar_control/config_start
|
||||
auto_start = SOLAR_AUTO_START_CONFIG
|
||||
|
||||
/obj/machinery/power/solar_control/Initialize()
|
||||
. = ..()
|
||||
connect_to_network()
|
||||
set_panels(cdir)
|
||||
|
||||
/obj/machinery/power/solar_control/Destroy()
|
||||
for(var/obj/machinery/power/solar/M in connected_panels)
|
||||
@@ -304,6 +321,25 @@ GLOBAL_LIST_EMPTY(solars_list)
|
||||
connected_tracker.unset_control()
|
||||
return ..()
|
||||
|
||||
/obj/machinery/power/solar_control/proc/auto_start(forced = FALSE)
|
||||
// Automatically sets the solars, if allowed.
|
||||
if(forced || auto_start == SOLAR_AUTO_START_YES || (auto_start == SOLAR_AUTO_START_CONFIG && config.autostart_solars) )
|
||||
track = 2 // Auto tracking mode.
|
||||
search_for_connected()
|
||||
if(connected_tracker)
|
||||
connected_tracker.set_angle(SSsun.sun.angle)
|
||||
set_panels(cdir)
|
||||
|
||||
// This would use LateInitialize(), however the powernet does not appear to exist during that time.
|
||||
/hook/roundstart/proc/auto_start_solars()
|
||||
for(var/a in GLOB.solars_list)
|
||||
var/obj/machinery/power/solar_control/SC = a
|
||||
SC.auto_start()
|
||||
return TRUE
|
||||
|
||||
/obj/machinery/power/solar_control/drain_power()
|
||||
return -1
|
||||
|
||||
/obj/machinery/power/solar_control/disconnect_from_network()
|
||||
..()
|
||||
GLOB.solars_list.Remove(src)
|
||||
@@ -346,13 +382,6 @@ GLOBAL_LIST_EMPTY(solars_list)
|
||||
set_panels(cdir)
|
||||
updateDialog()
|
||||
|
||||
|
||||
/obj/machinery/power/solar_control/Initialize()
|
||||
. = ..()
|
||||
if(!powernet) return
|
||||
set_panels(cdir)
|
||||
connect_to_network()
|
||||
|
||||
/obj/machinery/power/solar_control/update_icon()
|
||||
if(stat & BROKEN)
|
||||
icon_state = "broken"
|
||||
@@ -528,18 +557,6 @@ GLOBAL_LIST_EMPTY(solars_list)
|
||||
broken()
|
||||
return
|
||||
|
||||
// Used for mapping in solar array which automatically starts itself (telecomms, for example)
|
||||
/obj/machinery/power/solar_control/autostart
|
||||
track = 2 // Auto tracking mode
|
||||
|
||||
/obj/machinery/power/solar_control/autostart/New()
|
||||
..()
|
||||
spawn(150) // Wait 15 seconds to ensure everything was set up properly (such as, powernets, solar panels, etc.
|
||||
src.search_for_connected()
|
||||
if(connected_tracker && track == 2)
|
||||
connected_tracker.set_angle(SSsun.sun.angle)
|
||||
src.set_panels(cdir)
|
||||
|
||||
//
|
||||
// MISC
|
||||
//
|
||||
|
||||
@@ -431,3 +431,7 @@ ENGINE_MAP Supermatter Engine,Edison's Bane
|
||||
## Note that this will make it possible for the AI to 'bootstrap' more AI Shells on their own by using the science module. If this is not acceptable for your server, you should not uncomment this.
|
||||
## The landmark object that spawns the shell will also need to be mapped in for this to work.
|
||||
# GIVE_FREE_AI_SHELL
|
||||
|
||||
## Uncomment to allow specific solar control computers to set themselves up.
|
||||
## This requires solar controller computers in the map to be set up to use it, with the auto_start variable.
|
||||
# AUTOSTART_SOLARS
|
||||
|
||||
@@ -324661,7 +324661,7 @@ aaa
|
||||
"dCC" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/airless,/area/solar/foreportsolar)
|
||||
"dCD" = (/obj/item/stack/cable_coil/yellow,/turf/simulated/floor/reinforced/airless,/area/thirddeck/roof)
|
||||
"dCE" = (/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/maintenance/solars/foreportsolar)
|
||||
"dCF" = (/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/power/solar_control{id = "foreportsolar"; name = "Fore Port Solar Control"; track = 0},/turf/simulated/floor/plating,/area/maintenance/solars/foreportsolar)
|
||||
"dCF" = (/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/power/solar_control{auto_start = 2; id = "foreportsolar"; name = "Fore Port Solar Control"; track = 0},/turf/simulated/floor/plating,/area/maintenance/solars/foreportsolar)
|
||||
"dCG" = (/obj/machinery/light/small{dir = 1},/obj/machinery/camera/network/engineering{c_tag = "ENG - Solar Fore Port"; dir = 2},/obj/item/stack/cable_coil/yellow,/turf/simulated/floor/plating,/area/maintenance/solars/foreportsolar)
|
||||
"dCH" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 21},/turf/simulated/floor/plating,/area/maintenance/solars/foreportsolar)
|
||||
"dCI" = (/turf/simulated/wall,/area/maintenance/solars/foreportsolar)
|
||||
@@ -324732,7 +324732,7 @@ aaa
|
||||
"dDV" = (/obj/machinery/atmospherics/pipe/manifold/hidden,/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/maintenance/solars/foreportsolar)
|
||||
"dDW" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/effect/floor_decal/industrial/outline/yellow,/obj/structure/sign/warning/airlock{pixel_y = -32},/obj/machinery/portable_atmospherics/canister/air/airlock,/turf/simulated/floor/plating,/area/maintenance/solars/foreportsolar)
|
||||
"dDX" = (/obj/machinery/power/terminal{dir = 4},/obj/structure/cable/yellow,/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/structure/table/steel,/obj/item/stack/cable_coil/yellow,/turf/simulated/floor/plating,/area/maintenance/solars/foreportsolar)
|
||||
"dDY" = (/obj/structure/cable,/obj/machinery/power/smes/buildable{charge = 0; RCon_tag = "Solar - Fore Port"},/turf/simulated/floor/plating,/area/maintenance/solars/foreportsolar)
|
||||
"dDY" = (/obj/structure/cable,/obj/machinery/power/smes/buildable{charge = 0; input_attempt = 1; input_level = 150000; output_level = 100000; RCon_tag = "Solar - Fore Port"},/turf/simulated/floor/plating,/area/maintenance/solars/foreportsolar)
|
||||
"dDZ" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/sign/warning/high_voltage{pixel_x = -32; pixel_y = 0},/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 1},/obj/machinery/camera/network/engineering{c_tag = "ENG - Solar Fore Port Access"; dir = 4},/turf/simulated/floor/plating,/area/maintenance/thirddeck/foreport)
|
||||
"dEa" = (/obj/structure/table/rack,/obj/item/weapon/extinguisher,/obj/item/clothing/head/hardhat/red,/obj/item/clothing/mask/gas,/obj/item/device/flashlight,/obj/item/clothing/glasses/meson,/obj/random/maintenance/cargo,/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 4},/obj/structure/railing{dir = 4},/turf/simulated/floor,/area/maintenance/thirddeck/foreport)
|
||||
"dEb" = (/obj/structure/lattice,/obj/structure/cable{d1 = 32; icon_state = "32-1"},/obj/machinery/door/firedoor/border_only,/turf/simulated/open,/area/maintenance/thirddeck/foreport)
|
||||
@@ -324740,7 +324740,7 @@ aaa
|
||||
"dEd" = (/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 1},/turf/simulated/floor/plating,/area/maintenance/thirddeck/forestarboard)
|
||||
"dEe" = (/obj/structure/ladder,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/plating,/area/maintenance/thirddeck/forestarboard)
|
||||
"dEf" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/sign/warning/high_voltage{pixel_x = 32; pixel_y = 0},/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 4},/obj/machinery/camera/network/engineering{c_tag = "ENG - Solar Fore Starboard Access"; dir = 8},/turf/simulated/floor/plating,/area/maintenance/thirddeck/forestarboard)
|
||||
"dEg" = (/obj/structure/cable,/obj/machinery/power/smes/buildable{charge = 0; RCon_tag = "Solar - Fore Starboard"},/turf/simulated/floor/plating,/area/maintenance/solars/forestarboardsolar)
|
||||
"dEg" = (/obj/structure/cable,/obj/machinery/power/smes/buildable{charge = 0; input_attempt = 1; input_level = 150000; output_level = 100000; RCon_tag = "Solar - Fore Starboard"},/turf/simulated/floor/plating,/area/maintenance/solars/forestarboardsolar)
|
||||
"dEh" = (/obj/machinery/power/terminal{dir = 8},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 4},/obj/structure/cable/yellow,/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor/plating,/area/maintenance/solars/forestarboardsolar)
|
||||
"dEi" = (/obj/effect/floor_decal/industrial/outline/yellow,/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/canister/air/airlock,/obj/structure/sign/warning/airlock{pixel_y = -32},/turf/simulated/floor/plating,/area/maintenance/solars/forestarboardsolar)
|
||||
"dEj" = (/obj/machinery/atmospherics/pipe/manifold/hidden,/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/maintenance/solars/forestarboardsolar)
|
||||
@@ -325488,7 +325488,7 @@ aaa
|
||||
"dSx" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 1; icon_state = "map"},/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/maintenance/solars/aftportsolar)
|
||||
"dSy" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/effect/floor_decal/industrial/outline/yellow,/obj/machinery/portable_atmospherics/canister/air/airlock,/obj/structure/sign/warning/airlock{pixel_y = 32},/turf/simulated/floor/plating,/area/maintenance/solars/aftportsolar)
|
||||
"dSz" = (/obj/machinery/power/terminal{dir = 4},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/alarm{pixel_y = 22},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/obj/item/stack/cable_coil/yellow,/obj/item/stack/cable_coil/yellow,/obj/item/stack/cable_coil/yellow,/turf/simulated/floor/plating,/area/maintenance/solars/aftportsolar)
|
||||
"dSA" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/smes/buildable{charge = 0; RCon_tag = "Solar - Aft Port"},/turf/simulated/floor/plating,/area/maintenance/solars/aftportsolar)
|
||||
"dSA" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/smes/buildable{charge = 0; input_attempt = 1; input_level = 150000; output_level = 100000; RCon_tag = "Solar - Aft Port"},/turf/simulated/floor/plating,/area/maintenance/solars/aftportsolar)
|
||||
"dSB" = (/turf/simulated/wall,/area/maintenance/solars/aftportsolar)
|
||||
"dSC" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/sign/warning/high_voltage{pixel_x = -32; pixel_y = 0},/obj/effect/floor_decal/industrial/warning/corner{dir = 8},/obj/machinery/camera/network/engineering{c_tag = "ENG - Solar Aft Port Access"; dir = 4},/turf/simulated/floor/plating,/area/maintenance/thirddeck/aftport)
|
||||
"dSD" = (/obj/item/stack/cable_coil/yellow,/turf/simulated/floor/plating,/area/maintenance/thirddeck/aftport)
|
||||
@@ -325520,7 +325520,7 @@ aaa
|
||||
"dTd" = (/obj/structure/table/rack,/obj/item/weapon/extinguisher,/obj/item/clothing/head/hardhat/red,/obj/item/clothing/mask/gas,/obj/item/device/flashlight,/obj/item/clothing/glasses/meson,/obj/random/maintenance/cargo,/obj/random/cash,/turf/simulated/floor,/area/maintenance/bar)
|
||||
"dTe" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/effect/floor_decal/industrial/warning/corner,/obj/structure/sign/warning/high_voltage{pixel_x = 32; pixel_y = 0},/obj/machinery/camera/network/engineering{c_tag = "ENG - Solar Aft Starboard Access"; dir = 8},/turf/simulated/floor/plating,/area/maintenance/thirddeck/aftstarboard)
|
||||
"dTf" = (/turf/simulated/wall,/area/maintenance/solars/aftstarboardsolar)
|
||||
"dTg" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/smes/buildable{charge = 0; RCon_tag = "Solar - Aft Starboard"},/turf/simulated/floor/plating,/area/maintenance/solars/aftstarboardsolar)
|
||||
"dTg" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/smes/buildable{charge = 0; input_attempt = 1; input_level = 150000; output_level = 100000; RCon_tag = "Solar - Aft Starboard"},/turf/simulated/floor/plating,/area/maintenance/solars/aftstarboardsolar)
|
||||
"dTh" = (/obj/machinery/alarm{pixel_y = 22},/obj/machinery/power/terminal{dir = 8},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 4},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/maintenance/solars/aftstarboardsolar)
|
||||
"dTi" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/effect/floor_decal/industrial/outline/yellow,/obj/machinery/portable_atmospherics/canister/air/airlock,/obj/structure/sign/warning/airlock{pixel_y = 32},/turf/simulated/floor/plating,/area/maintenance/solars/aftstarboardsolar)
|
||||
"dTj" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 1; icon_state = "map"},/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/maintenance/solars/aftstarboardsolar)
|
||||
@@ -325576,7 +325576,7 @@ aaa
|
||||
"dUh" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/airless,/area/solar/aftstarboardsolar)
|
||||
"dUi" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/airless,/area/solar/aftstarboardsolar)
|
||||
"dUj" = (/obj/machinery/power/tracker,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/airless,/area/solar/aftstarboardsolar)
|
||||
"dUk" = (/obj/structure/cable/yellow,/obj/machinery/power/solar_control{id = "aftportsolar"; name = "Aft Port Solar Control"; track = 0},/turf/simulated/floor/plating,/area/maintenance/solars/aftportsolar)
|
||||
"dUk" = (/obj/structure/cable/yellow,/obj/machinery/power/solar_control{auto_start = 2; id = "aftportsolar"; name = "Aft Port Solar Control"; track = 0},/turf/simulated/floor/plating,/area/maintenance/solars/aftportsolar)
|
||||
"dUl" = (/obj/machinery/camera/network/engineering{c_tag = "ENG - Solar Aft Port"; dir = 1},/obj/machinery/light/small,/obj/item/weapon/stool,/turf/simulated/floor/plating,/area/maintenance/solars/aftportsolar)
|
||||
"dUm" = (/obj/structure/cable,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 21},/turf/simulated/floor/plating,/area/maintenance/solars/aftportsolar)
|
||||
"dUn" = (/obj/machinery/light/small{dir = 8},/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 1},/turf/simulated/floor/plating,/area/maintenance/thirddeck/aftport)
|
||||
@@ -325591,7 +325591,7 @@ aaa
|
||||
"dUw" = (/obj/machinery/light/small{dir = 4; pixel_y = 0},/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 4},/turf/simulated/floor/plating,/area/maintenance/thirddeck/aftstarboard)
|
||||
"dUx" = (/obj/structure/cable,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/table/steel,/obj/item/stack/cable_coil/yellow,/obj/item/stack/cable_coil/yellow,/obj/item/stack/cable_coil/yellow,/obj/item/stack/cable_coil/yellow,/turf/simulated/floor/plating,/area/maintenance/solars/aftstarboardsolar)
|
||||
"dUy" = (/obj/machinery/light/small,/obj/machinery/camera/network/engineering{c_tag = "ENG - Solar Aft Starboard"; dir = 1},/turf/simulated/floor/plating,/area/maintenance/solars/aftstarboardsolar)
|
||||
"dUz" = (/obj/structure/cable/yellow,/obj/machinery/power/solar_control{id = "aftstarboardsolar"; name = "Aft Starboard Solar Control"; track = 0},/turf/simulated/floor/plating,/area/maintenance/solars/aftstarboardsolar)
|
||||
"dUz" = (/obj/structure/cable/yellow,/obj/machinery/power/solar_control{auto_start = 2; id = "aftstarboardsolar"; name = "Aft Starboard Solar Control"; track = 0},/turf/simulated/floor/plating,/area/maintenance/solars/aftstarboardsolar)
|
||||
"dUA" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/catwalk,/turf/simulated/floor/airless,/area/solar/aftportsolar)
|
||||
"dUB" = (/obj/structure/table/steel,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/turf/simulated/floor/plating,/area/maintenance/thirddeck/aftport)
|
||||
"dUC" = (/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/structure/table/steel,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/turf/simulated/floor/plating,/area/maintenance/thirddeck/aftport)
|
||||
|
||||
Reference in New Issue
Block a user