Merge branch 'master' into upstream-merge-33246
This commit is contained in:
@@ -8,7 +8,6 @@ SUBSYSTEM_DEF(atoms)
|
||||
init_order = INIT_ORDER_ATOMS
|
||||
flags = SS_NO_FIRE
|
||||
|
||||
var/initialized = INITIALIZATION_INSSATOMS
|
||||
var/old_initialized
|
||||
|
||||
var/list/late_loaders
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
SUBSYSTEM_DEF(input)
|
||||
name = "Input"
|
||||
wait = 1 //SS_TICKER means this runs every tick
|
||||
flags = SS_TICKER | SS_NO_INIT
|
||||
priority = 1000
|
||||
runlevels = RUNLEVELS_DEFAULT | RUNLEVEL_LOBBY
|
||||
|
||||
/datum/controller/subsystem/input/fire()
|
||||
var/list/clients = GLOB.clients // Let's sing the list cache song
|
||||
for(var/i in 1 to clients.len)
|
||||
var/client/C = clients[i]
|
||||
C.keyLoop()
|
||||
@@ -8,8 +8,6 @@ SUBSYSTEM_DEF(lighting)
|
||||
init_order = INIT_ORDER_LIGHTING
|
||||
flags = SS_TICKER
|
||||
|
||||
var/initialized = FALSE
|
||||
|
||||
/datum/controller/subsystem/lighting/stat_entry()
|
||||
..("L:[GLOB.lighting_update_lights.len]|C:[GLOB.lighting_update_corners.len]|O:[GLOB.lighting_update_objects.len]")
|
||||
|
||||
|
||||
@@ -1,14 +1,18 @@
|
||||
SUBSYSTEM_DEF(mobs)
|
||||
name = "Mobs"
|
||||
priority = 100
|
||||
flags = SS_KEEP_TIMING|SS_NO_INIT
|
||||
flags = SS_KEEP_TIMING
|
||||
runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME
|
||||
|
||||
var/list/currentrun = list()
|
||||
var/static/list/clients_by_zlevel[][]
|
||||
|
||||
/datum/controller/subsystem/mobs/stat_entry()
|
||||
..("P:[GLOB.mob_living_list.len]")
|
||||
|
||||
/datum/controller/subsystem/mobs/Initialize(start_timeofday)
|
||||
clients_by_zlevel = new /list(world.maxz,0)
|
||||
return ..()
|
||||
|
||||
/datum/controller/subsystem/mobs/fire(resumed = 0)
|
||||
var/seconds = wait * 0.1
|
||||
|
||||
@@ -10,7 +10,6 @@ SUBSYSTEM_DEF(overlays)
|
||||
var/list/stats
|
||||
var/list/overlay_icon_state_caches
|
||||
var/list/overlay_icon_cache
|
||||
var/initialized = FALSE
|
||||
|
||||
/datum/controller/subsystem/overlays/PreInit()
|
||||
overlay_icon_state_caches = list()
|
||||
|
||||
@@ -44,10 +44,20 @@ PROCESSING_SUBSYSTEM_DEF(circuit)
|
||||
|
||||
|
||||
circuit_fabricator_recipe_list["Assemblies"] = list(
|
||||
/obj/item/device/electronic_assembly,
|
||||
/obj/item/device/electronic_assembly/medium,
|
||||
/obj/item/device/electronic_assembly/large,
|
||||
/obj/item/device/electronic_assembly/drone
|
||||
/obj/item/device/electronic_assembly/default,
|
||||
/obj/item/device/electronic_assembly/calc,
|
||||
/obj/item/device/electronic_assembly/clam,
|
||||
/obj/item/device/electronic_assembly/simple,
|
||||
/obj/item/device/electronic_assembly/medium/default,
|
||||
/obj/item/device/electronic_assembly/medium/box,
|
||||
/obj/item/device/electronic_assembly/medium/clam,
|
||||
/obj/item/device/electronic_assembly/medium/medical,
|
||||
/obj/item/device/electronic_assembly/large/default,
|
||||
/obj/item/device/electronic_assembly/large/scope,
|
||||
/obj/item/device/electronic_assembly/large/terminal,
|
||||
/obj/item/device/electronic_assembly/large/arm,
|
||||
/obj/item/device/electronic_assembly/drone/default,
|
||||
/obj/item/device/electronic_assembly/drone/arms
|
||||
///obj/item/weapon/implant/integrated_circuit
|
||||
)
|
||||
|
||||
|
||||
@@ -0,0 +1,75 @@
|
||||
|
||||
SUBSYSTEM_DEF(research)
|
||||
name = "Research"
|
||||
flags = SS_KEEP_TIMING
|
||||
priority = 15 //My powergame is priority.
|
||||
wait = 10
|
||||
init_order = INIT_ORDER_RESEARCH
|
||||
var/list/invalid_design_ids = list() //associative id = number of times
|
||||
var/list/invalid_node_ids = list() //associative id = number of times
|
||||
var/list/invalid_node_boost = list() //associative id = error message
|
||||
var/list/obj/machinery/rnd/server/servers = list()
|
||||
var/datum/techweb/science/science_tech
|
||||
var/datum/techweb/admin/admin_tech
|
||||
var/list/techweb_nodes = list() //associative id = node datum
|
||||
var/list/techweb_categories = list() //category name = list(node.id = node)
|
||||
var/list/techweb_designs = list() //associative id = node datum
|
||||
var/list/techweb_nodes_starting = list() //associative id = node datum
|
||||
var/list/techweb_boost_items = list() //associative double-layer path = list(id = point_discount)
|
||||
var/list/techweb_nodes_hidden = list() //Nodes that should be hidden by default.
|
||||
var/list/techweb_point_items = list() //path = value
|
||||
var/list/errored_datums = list()
|
||||
//----------------------------------------------
|
||||
var/single_server_income = 40.7
|
||||
var/multiserver_calculation = FALSE
|
||||
var/last_income = 0
|
||||
//^^^^^^^^ ALL OF THESE ARE PER SECOND! ^^^^^^^^
|
||||
|
||||
//Aiming for 1.5 hours to max R&D
|
||||
//[88nodes * 5000points/node] / [1.5hr * 90min/hr * 60s/min]
|
||||
//Around 450000 points max???
|
||||
|
||||
var/bomb_research_point_scaling = 1800
|
||||
|
||||
/datum/controller/subsystem/research/Initialize()
|
||||
initialize_all_techweb_designs()
|
||||
initialize_all_techweb_nodes()
|
||||
science_tech = new /datum/techweb/science
|
||||
admin_tech = new /datum/techweb/admin
|
||||
autosort_categories()
|
||||
return ..()
|
||||
|
||||
/datum/controller/subsystem/research/fire()
|
||||
handle_research_income()
|
||||
|
||||
/datum/controller/subsystem/research/proc/handle_research_income()
|
||||
var/bitcoins = 0
|
||||
if(multiserver_calculation)
|
||||
var/eff = calculate_server_coefficient()
|
||||
for(var/obj/machinery/rnd/server/miner in servers)
|
||||
bitcoins += (miner.mine() * eff) //SLAVE AWAY, SLAVE.
|
||||
else
|
||||
for(var/obj/machinery/rnd/server/miner in servers)
|
||||
if(miner.working)
|
||||
bitcoins = single_server_income
|
||||
break //Just need one to work.
|
||||
var/income_time_difference = world.time - last_income
|
||||
bitcoins *= income_time_difference / 10
|
||||
science_tech.research_points += bitcoins
|
||||
last_income = world.time
|
||||
|
||||
/datum/controller/subsystem/research/proc/calculate_server_coefficient() //Diminishing returns.
|
||||
var/amt = servers.len
|
||||
if(!amt)
|
||||
return 0
|
||||
var/coeff = 100
|
||||
coeff = sqrt(coeff / amt)
|
||||
return coeff
|
||||
|
||||
/datum/controller/subsystem/research/proc/autosort_categories()
|
||||
for(var/i in techweb_nodes)
|
||||
var/datum/techweb_node/I = techweb_nodes[i]
|
||||
if(techweb_categories[I.category])
|
||||
techweb_categories[I.category][I.id] = I
|
||||
else
|
||||
techweb_categories[I.category] = list(I.id = I)
|
||||
@@ -307,6 +307,9 @@ SUBSYSTEM_DEF(shuttle)
|
||||
return 1
|
||||
|
||||
/datum/controller/subsystem/shuttle/proc/autoEvac()
|
||||
if (!SSticker.IsRoundInProgress())
|
||||
return
|
||||
|
||||
var/callShuttle = 1
|
||||
|
||||
for(var/thing in GLOB.shuttle_caller_list)
|
||||
|
||||
@@ -80,7 +80,7 @@ SUBSYSTEM_DEF(throwing)
|
||||
last_move = world.time
|
||||
|
||||
//calculate how many tiles to move, making up for any missed ticks.
|
||||
var/tilestomove = Ceiling(min(((((world.time+world.tick_lag) - start_time + delayed_time) * speed) - (dist_travelled ? dist_travelled : -1)), speed*MAX_TICKS_TO_MAKE_UP) * (world.tick_lag * SSthrowing.wait))
|
||||
var/tilestomove = CEILING(min(((((world.time+world.tick_lag) - start_time + delayed_time) * speed) - (dist_travelled ? dist_travelled : -1)), speed*MAX_TICKS_TO_MAKE_UP) * (world.tick_lag * SSthrowing.wait), 1)
|
||||
while (tilestomove-- > 0)
|
||||
if ((dist_travelled >= maxrange || AM.loc == target_turf) && AM.has_gravity(AM.loc))
|
||||
finalize()
|
||||
|
||||
@@ -165,7 +165,7 @@ SUBSYSTEM_DEF(vote)
|
||||
|
||||
var/admin = FALSE
|
||||
var/ckey = ckey(initiator_key)
|
||||
if((GLOB.admin_datums[ckey]) || (ckey in GLOB.deadmins))
|
||||
if(GLOB.admin_datums[ckey])
|
||||
admin = TRUE
|
||||
|
||||
if(next_allowed_time > world.time && !admin)
|
||||
|
||||
Reference in New Issue
Block a user