Files
Polaris/code/modules/organs/internal/robotic/heatsink.dm
Neerti fdabe51ee8 Linter Introduction + Cleanup (#8085)
* Adds linter defines to repo.

* Uncomments linter defines already in the code.

* Resolves unreachable code linter errors.

* Nukes decade+ old syndie specops code except for computer since that's mapped in?????

* Resolves procs has no parent linter error.

* Proc signature fixes

* Bad comments

* "In" danger

* Type safety

* Implied nested list abuse

* Top level ..() usage

* Sleepy coder typos

* Invalid kwargs calls

* Pointless returns

* Linter hacks (see full message)

Byond doesn't care and it has no effect but linter doesn't like var/proc
for holding references to procs, despite that it's valid byond code.

Also, the linter seems to have serious issues figuring out relative
proc names. This commit is a sort of take-it-or-leave-it thing. It's not
required, it just cuts down on warnings, but this code is valid DM code.

* WHATEVER THIS IS

* Trick dreamchecker linter into ignoring this file's sins in it's weird use of vars

* Fix list decoration syntax - Its a list, not list of lists

- To declare that a var is a list you can `var/list/blah = list()` syntax or the `var/blah[0]` syntax.  Both do exactly the same thing. But if you do `var/list/blah[0]` that is just like doing `var/list/list/blah = list()`

* Hopefully stops the ai holder subtype folder from going quantum and sometimes changes capitalization over time, and incidentally causing 20+ linter errors.

* Fixes unwrapped negated object in list linter error.

* Resolves colon-like list accessing linter error.

* Turns linter on in linter config.

* Fixes closet indentation properly and cleans up suit storage unit switch.

Co-authored-by: Aronai Sieyes <arokha@arokha.com>
Co-authored-by: Leshana <Leshana@users.noreply.github.com>
2021-05-25 18:17:26 -09:00

60 lines
1.9 KiB
Plaintext

/obj/item/organ/internal/robotic/heatsink
name = "heatsink"
icon_state = "heatsink"
organ_tag = O_HEATSINK
/obj/item/organ/internal/robotic/heatsink/handle_organ_proc_special()
if(owner && owner.stat != DEAD)
owner.bodytemperature += round(owner.robobody_count * 0.75, 0.1)
var/thermostat = owner.species.body_temperature
var/turf/T = get_turf(src)
var/datum/gas_mixture/environment = T.return_air()
var/efficiency = max(0,(1 - owner.get_pressure_weakness(environment.return_pressure())) * (1 - damage / max_damage))
var/temp_adj = 0
var/env_temp = get_environment_temperature()
var/thermal_protection = owner.get_heat_protection(env_temp)
if(thermal_protection < 1)
temp_adj = min(owner.bodytemperature - max(thermostat, env_temp), owner.robobody_count * 2)
else
temp_adj = min(owner.bodytemperature - thermostat, owner.robobody_count * 2)
if(temp_adj < 0)
return
owner.bodytemperature -= temp_adj*efficiency
if(owner.bodytemperature > owner.species.heat_level_2) // If you're already overheating to the point of melting, the heatsink starts causing problems.
owner.adjustToxLoss(2 * damage / max_damage)
take_damage(max(0.5,round(damage / max_damage, 0.1)))
return
/obj/item/organ/internal/robotic/heatsink/proc/get_environment_temperature()
if(istype(owner.loc, /obj/mecha))
var/obj/mecha/M = owner.loc
return M.return_temperature()
else if(istype(owner.loc, /obj/machinery/atmospherics/unary/cryo_cell))
var/obj/machinery/atmospherics/unary/cryo_cell/cc = owner.loc
return cc.air_contents.temperature
var/turf/T = get_turf(src)
var/datum/gas_mixture/environment = T.return_air()
var/efficiency = 1
if(environment)
efficiency = (1 - owner.get_pressure_weakness(environment.return_pressure())) * (1 - damage / max_damage)
if(istype(T, /turf/space))
return owner.species.heat_level_2 * efficiency
if(!environment)
return owner.species.heat_level_2 * efficiency
return environment.temperature