mirror of
https://github.com/SPLURT-Station/S.P.L.U.R.T-Station-13.git
synced 2025-12-10 18:02:57 +00:00
Merge pull request #13885 from raspy-on-osu/spaceheater-buff
Makes space heaters worth using
This commit is contained in:
@@ -18,7 +18,7 @@
|
|||||||
var/mode = HEATER_MODE_STANDBY
|
var/mode = HEATER_MODE_STANDBY
|
||||||
var/setMode = "auto" // Anything other than "heat" or "cool" is considered auto.
|
var/setMode = "auto" // Anything other than "heat" or "cool" is considered auto.
|
||||||
var/targetTemperature = T20C
|
var/targetTemperature = T20C
|
||||||
var/heatingPower = 40000
|
var/heatingPower = 10000
|
||||||
var/efficiency = 20000
|
var/efficiency = 20000
|
||||||
var/temperatureTolerance = 1
|
var/temperatureTolerance = 1
|
||||||
var/settableTemperatureMedian = 30 + T0C
|
var/settableTemperatureMedian = 30 + T0C
|
||||||
@@ -74,46 +74,55 @@
|
|||||||
|
|
||||||
if(cell && cell.charge > 0)
|
if(cell && cell.charge > 0)
|
||||||
var/turf/L = loc
|
var/turf/L = loc
|
||||||
if(!istype(L))
|
PerformHeating(L)
|
||||||
if(mode != HEATER_MODE_STANDBY)
|
|
||||||
mode = HEATER_MODE_STANDBY
|
|
||||||
update_icon()
|
|
||||||
return
|
|
||||||
|
|
||||||
var/datum/gas_mixture/env = L.return_air()
|
for(var/direction in GLOB.alldirs)
|
||||||
|
L=get_step(src,direction)
|
||||||
|
if(!locate(/turf/closed) in L) // we don't want to heat walls and cause jank
|
||||||
|
PerformHeating(L)
|
||||||
|
|
||||||
var/newMode = HEATER_MODE_STANDBY
|
|
||||||
if(setMode != HEATER_MODE_COOL && env.return_temperature() < targetTemperature - temperatureTolerance)
|
|
||||||
newMode = HEATER_MODE_HEAT
|
|
||||||
else if(setMode != HEATER_MODE_HEAT && env.return_temperature() > targetTemperature + temperatureTolerance)
|
|
||||||
newMode = HEATER_MODE_COOL
|
|
||||||
|
|
||||||
if(mode != newMode)
|
|
||||||
mode = newMode
|
|
||||||
update_icon()
|
|
||||||
|
|
||||||
if(mode == HEATER_MODE_STANDBY)
|
|
||||||
return
|
|
||||||
|
|
||||||
var/heat_capacity = env.heat_capacity()
|
|
||||||
var/requiredPower = abs(env.return_temperature() - targetTemperature) * heat_capacity
|
|
||||||
requiredPower = min(requiredPower, heatingPower)
|
|
||||||
|
|
||||||
if(requiredPower < 1)
|
|
||||||
return
|
|
||||||
|
|
||||||
var/deltaTemperature = requiredPower / heat_capacity
|
|
||||||
if(mode == HEATER_MODE_COOL)
|
|
||||||
deltaTemperature *= -1
|
|
||||||
if(deltaTemperature)
|
|
||||||
env.set_temperature(env.return_temperature() + deltaTemperature)
|
|
||||||
air_update_turf()
|
|
||||||
cell.use(requiredPower / efficiency)
|
|
||||||
else
|
else
|
||||||
on = FALSE
|
on = FALSE
|
||||||
update_icon()
|
update_icon()
|
||||||
return PROCESS_KILL
|
return PROCESS_KILL
|
||||||
|
|
||||||
|
/obj/machinery/space_heater/proc/PerformHeating(turf/L)
|
||||||
|
if(!istype(L))
|
||||||
|
if(mode != HEATER_MODE_STANDBY)
|
||||||
|
mode = HEATER_MODE_STANDBY
|
||||||
|
update_icon()
|
||||||
|
return
|
||||||
|
|
||||||
|
var/datum/gas_mixture/env = L.return_air()
|
||||||
|
|
||||||
|
var/newMode = HEATER_MODE_STANDBY
|
||||||
|
if(setMode != HEATER_MODE_COOL && env.return_temperature() < targetTemperature - temperatureTolerance)
|
||||||
|
newMode = HEATER_MODE_HEAT
|
||||||
|
else if(setMode != HEATER_MODE_HEAT && env.return_temperature() > targetTemperature + temperatureTolerance)
|
||||||
|
newMode = HEATER_MODE_COOL
|
||||||
|
|
||||||
|
if(mode != newMode)
|
||||||
|
mode = newMode
|
||||||
|
update_icon()
|
||||||
|
|
||||||
|
if(mode == HEATER_MODE_STANDBY)
|
||||||
|
return
|
||||||
|
|
||||||
|
var/heat_capacity = env.heat_capacity()
|
||||||
|
var/requiredPower = abs(env.return_temperature() - targetTemperature) * heat_capacity
|
||||||
|
requiredPower = min(requiredPower, heatingPower)
|
||||||
|
|
||||||
|
if(requiredPower < 1)
|
||||||
|
return
|
||||||
|
|
||||||
|
var/deltaTemperature = requiredPower / heat_capacity
|
||||||
|
if(mode == HEATER_MODE_COOL)
|
||||||
|
deltaTemperature *= -1
|
||||||
|
if(deltaTemperature)
|
||||||
|
env.set_temperature(env.return_temperature() + deltaTemperature)
|
||||||
|
air_update_turf()
|
||||||
|
cell.use(requiredPower / efficiency)
|
||||||
|
|
||||||
/obj/machinery/space_heater/RefreshParts()
|
/obj/machinery/space_heater/RefreshParts()
|
||||||
var/laser = 2
|
var/laser = 2
|
||||||
var/cap = 1
|
var/cap = 1
|
||||||
@@ -122,7 +131,7 @@
|
|||||||
for(var/obj/item/stock_parts/capacitor/M in component_parts)
|
for(var/obj/item/stock_parts/capacitor/M in component_parts)
|
||||||
cap += M.rating
|
cap += M.rating
|
||||||
|
|
||||||
heatingPower = laser * 40000
|
heatingPower = laser * 10000
|
||||||
|
|
||||||
settableTemperatureRange = cap * 30
|
settableTemperatureRange = cap * 30
|
||||||
efficiency = (cap + 1) * 10000
|
efficiency = (cap + 1) * 10000
|
||||||
|
|||||||
Reference in New Issue
Block a user