diff --git a/code/__DEFINES/atmospherics.dm b/code/__DEFINES/atmospherics.dm
index 8c22616db287..6514221720a9 100644
--- a/code/__DEFINES/atmospherics.dm
+++ b/code/__DEFINES/atmospherics.dm
@@ -210,8 +210,6 @@
#define KITCHEN_COLDROOM_ATMOS "o2=33;n2=124;TEMP=193.15"
/// used in the holodeck burn test program
#define BURNMIX_ATMOS "o2=2500;plasma=5000;TEMP=370"
-/// used in rockplanet
-#define ROCKPLANET_DEFAULT_ATMOS "co2=95;n2=3;TEMP=210.15"
//ATMOSPHERICS DEPARTMENT GAS TANK TURFS
#define ATMOS_TANK_N2O "n2o=6000;TEMP=293.15"
#define ATMOS_TANK_CO2 "co2=50000;TEMP=293.15"
@@ -226,11 +224,16 @@
//PLANETARY
/// what pressure you have to be under to increase the effect of equipment meant for lavaland
#define LAVALAND_EQUIPMENT_EFFECT_PRESSURE 90
-#define ICEMOON_DEFAULT_ATMOS "ICEMOON_ATMOS"
#define GAS_GIANT_ATMOS "GAS_GIANT_ATMOS"
#define PLASMA_GIANT_ATMOS "PLASMA_GIANT_ATMOS"
-#define WASTEPLANET_DEFAULT_ATMOS "WASTEPLANET_ATMOS"
+#define DEFAULT_ATMOS_DETECTOR "plasma=70000;TEMP=293.15"
#define LAVALAND_DEFAULT_ATMOS "LAVALAND_ATMOS"
+#define ICEMOON_DEFAULT_ATMOS "ICEMOON_ATMOS"
+#define WASTEPLANET_DEFAULT_ATMOS "WASTEPLANET_ATMOS"
+#define ROCKPLANET_DEFAULT_ATMOS "ROCKPLANET_ATMOS"
+#define BEACHPLANET_DEFAULT_ATMOS "BEACHPLANET_ATMOS"
+#define JUNGLEPLANET_DEFAULT_ATMOS "JUNGLEPLANET_ATMOS"
+#define SANDPLANET_DEFAULT_ATMOS "SANDPLANET_ATMOS"
//ATMOS MIX IDS
diff --git a/code/__DEFINES/species.dm b/code/__DEFINES/species.dm
index 1a8cd17d802a..d3cf27ac546e 100644
--- a/code/__DEFINES/species.dm
+++ b/code/__DEFINES/species.dm
@@ -1,12 +1,12 @@
// Pressure limits.
-/// This determins at what pressure the ultra-high pressure red icon is displayed. (This one is set as a constant)
-#define HAZARD_HIGH_PRESSURE 550
-/// This determins when the orange pressure icon is displayed (it is 0.7 * HAZARD_HIGH_PRESSURE)
-#define WARNING_HIGH_PRESSURE 325
-/// This is when the gray low pressure icon is displayed. (it is 2.5 * HAZARD_LOW_PRESSURE)
-#define WARNING_LOW_PRESSURE 50
-/// This is when the black ultra-low pressure icon is displayed. (This one is set as a constant)
-#define HAZARD_LOW_PRESSURE 20
+/// This determins at what pressure the ultra-high pressure red icon is displayed.
+#define HAZARD_HIGH_PRESSURE 303
+/// This determins when the orange pressure icon is displayed
+#define WARNING_HIGH_PRESSURE 202
+/// This is when the gray low pressure icon is displayed.
+#define WARNING_LOW_PRESSURE 60
+/// This is when the black ultra-low pressure icon is displayed.
+#define HAZARD_LOW_PRESSURE 40
/// This is used in handle_temperature_damage() for humans, and in reagents that affect body temperature. Temperature damage is multiplied by this amount.
#define TEMPERATURE_DAMAGE_COEFFICIENT 1.5
@@ -14,13 +14,13 @@
/// The natural temperature for a body
#define HUMAN_BODYTEMP_NORMAL 310.15
/// This is the divisor which handles how much of the temperature difference between the current body temperature and 310.15K (optimal temperature) humans auto-regenerate each tick. The higher the number, the slower the recovery. This is applied each tick, so long as the mob is alive.
-#define HUMAN_BODYTEMP_AUTORECOVERY_DIVISOR 11
+#define HUMAN_BODYTEMP_AUTORECOVERY_DIVISOR 22
/// Minimum amount of kelvin moved toward 310K per tick. So long as abs(310.15 - bodytemp) is more than 50.
#define HUMAN_BODYTEMP_AUTORECOVERY_MINIMUM 12
///Similar to the HUMAN_BODYTEMP_AUTORECOVERY_DIVISOR, but this is the divisor which is applied at the stage that follows autorecovery. This is the divisor which comes into play when the human's loc temperature is lower than their body temperature. Make it lower to lose bodytemp faster.
-#define HUMAN_BODYTEMP_COLD_DIVISOR 15
+#define HUMAN_BODYTEMP_COLD_DIVISOR 20
/// Similar to the HUMAN_BODYTEMP_AUTORECOVERY_DIVISOR, but this is the divisor which is applied at the stage that follows autorecovery. This is the divisor which comes into play when the human's loc temperature is higher than their body temperature. Make it lower to gain bodytemp faster.
-#define HUMAN_BODYTEMP_HEAT_DIVISOR 15
+#define HUMAN_BODYTEMP_HEAT_DIVISOR 10
/// The maximum number of degrees that your body can cool in 1 tick, due to the environment, when in a cold area.
#define HUMAN_BODYTEMP_COOLING_MAX -100
/// The maximum number of degrees that your body can heat up in 1 tick, due to the environment, when in a hot area.
@@ -28,11 +28,11 @@
/// The body temperature limit the human body can take before it starts taking damage from heat.
/// This also affects how fast the body normalises it's temperature when hot.
/// 340k is about 66c, and rather high for a human.
-#define HUMAN_BODYTEMP_HEAT_DAMAGE_LIMIT (HUMAN_BODYTEMP_NORMAL + 30)
+#define HUMAN_BODYTEMP_HEAT_DAMAGE_LIMIT (HUMAN_BODYTEMP_NORMAL + 3)
/// The body temperature limit the human body can take before it starts taking damage from cold.
/// This also affects how fast the body normalises it's temperature when cold.
/// 270k is about -3c, that is below freezing and would hurt over time.
-#define HUMAN_BODYTEMP_COLD_DAMAGE_LIMIT (HUMAN_BODYTEMP_NORMAL - 40)
+#define HUMAN_BODYTEMP_COLD_DAMAGE_LIMIT (HUMAN_BODYTEMP_NORMAL - 8)
//VOX DEFINES
diff --git a/code/_onclick/hud/alert.dm b/code/_onclick/hud/alert.dm
index b5026c71247f..26c6b0f2d865 100644
--- a/code/_onclick/hud/alert.dm
+++ b/code/_onclick/hud/alert.dm
@@ -211,7 +211,7 @@ Override makes it so the alert is not replaced until cleared by a clear_alert wi
/atom/movable/screen/alert/sweat
name = "Sweating"
- desc = "You're sweating and the heat is starting to hurt. Get somewhere cooler and take off any insulating clothing like a fire suit."
+ desc = "You're sweating and the heat is starting to hurt. Stay hydrated, get somewhere cooler, and take off any insulating clothing like a fire suit."
icon_state = "sweat"
/atom/movable/screen/alert/shiver
diff --git a/code/datums/atmosphere/planetary.dm b/code/datums/atmosphere/planetary.dm
index 85bbf13c52a9..8a2d37ab2471 100644
--- a/code/datums/atmosphere/planetary.dm
+++ b/code/datums/atmosphere/planetary.dm
@@ -13,8 +13,6 @@
)
restricted_gases = list(
GAS_BZ=10,
- GAS_PLASMA=0.1,
- GAS_H2O=0.1,
)
restricted_chance = 50
@@ -26,12 +24,65 @@
// even worse, occasionally there would be a perma-TRITFIRE, if oxygen
// concentration was high enough. this caused a bunch of lag and added nothing to the game whatsoever
// thus, the temperatures were reduced to 70-90 C
- minimum_temp = T20C + 50
- maximum_temp = T20C + 70
+ minimum_temp = T20C + 20
+ maximum_temp = T20C + 40
/datum/atmosphere/icemoon
id = ICEMOON_DEFAULT_ATMOS
+ base_gases = list(
+ GAS_O2=5,
+ GAS_N2=10,
+ )
+ normal_gases = list(
+ GAS_O2=10,
+ GAS_N2=10,
+ GAS_CO2=10,
+ )
+ restricted_gases = list(
+ GAS_CO2=0.1,
+ )
+ restricted_chance = 50
+
+ minimum_pressure = HAZARD_LOW_PRESSURE + 10
+ maximum_pressure = LAVALAND_EQUIPMENT_EFFECT_PRESSURE - 1
+
+
+ minimum_temp = 200 //fucking cold to
+ maximum_temp = 240 //still cold
+
+
+//wasteplanet
+
+/datum/atmosphere/wasteplanet
+ id = WASTEPLANET_DEFAULT_ATMOS
+
+
+ base_gases = list(
+ GAS_O2=7,
+ GAS_N2=10,
+ )
+ normal_gases = list(
+ GAS_O2=7,
+ GAS_O2=3,
+ GAS_N2=5,
+ GAS_N2=2
+ )
+ restricted_gases = list(
+ GAS_O2=1,
+ )
+ restricted_chance = 0
+
+ minimum_pressure = ONE_ATMOSPHERE - 30
+ maximum_pressure = ONE_ATMOSPHERE + 100
+
+ minimum_temp = T20C - 10
+ maximum_temp = T20C + 20
+
+//sandplanet
+/datum/atmosphere/whitesands
+ id = SANDPLANET_DEFAULT_ATMOS
+
base_gases = list(
GAS_O2=5,
GAS_N2=10,
@@ -43,16 +94,89 @@
)
restricted_gases = list(
GAS_PLASMA=0.1,
- GAS_H2O=0.1,
)
restricted_chance = 50
minimum_pressure = HAZARD_LOW_PRESSURE + 10
maximum_pressure = LAVALAND_EQUIPMENT_EFFECT_PRESSURE - 1
- minimum_temp = 180
- maximum_temp = 180
+ minimum_temp = 233
+ maximum_temp = 263 //No longer always 180
+
+//Jungleplanet
+
+/datum/atmosphere/jungleplanet
+ id = JUNGLEPLANET_DEFAULT_ATMOS
+ base_gases = list(
+ GAS_O2=15,
+ GAS_N2=60,
+ GAS_CO2=1,
+ )
+ normal_gases = list(
+ GAS_O2=1,
+ GAS_N2=4,
+ )
+ restricted_gases = list(
+ GAS_CO2=0.1,
+ )
+ restricted_chance = 0
+
+ minimum_pressure = 101.3
+ maximum_pressure = 135.7 //Nonsense values
+
+ minimum_temp = T20C + 10
+ maximum_temp = T20C + 20
+
+//welcome to the beach
+
+/datum/atmosphere/beach
+ id = BEACHPLANET_DEFAULT_ATMOS
+
+ base_gases = list(
+ GAS_O2=10,
+ GAS_N2=40,
+ )
+ normal_gases = list(
+ GAS_O2=1,
+ GAS_N2=4,
+ )
+ restricted_gases = list(
+ GAS_PLASMA=0.1,
+ )
+ restricted_chance = 0
+
+ minimum_pressure = 101.3
+ maximum_pressure = 135.7
+
+ minimum_temp = T20C - 10
+ maximum_temp = T20C + 10
+
+//rockplanets have lots of CO2 and are moderately cold.
+/datum/atmosphere/rockplanet
+
+ id = ROCKPLANET_DEFAULT_ATMOS
+
+ base_gases = list(
+ GAS_CO2=5,
+ GAS_N2=1,
+ )
+ normal_gases = list(
+ GAS_CO2=3,
+ GAS_N2=1,
+ )
+ restricted_gases = list(
+ GAS_PLASMA=0.1,
+ )
+ restricted_chance = 0
+
+ minimum_pressure = 101.3
+ maximum_pressure = 135.7
+
+ minimum_temp = T0C - 20
+ maximum_temp = T0C
+
+// gas giants
/datum/atmosphere/gas_giant
id = GAS_GIANT_ATMOS
@@ -92,28 +216,3 @@
GAS_PLASMA=0.1,
)
restricted_chance = 1
-
-/datum/atmosphere/wasteplanet
- id = WASTEPLANET_DEFAULT_ATMOS
-
-
- base_gases = list(
- GAS_O2=7,
- GAS_N2=10,
- )
- normal_gases = list(
- GAS_O2=7,
- GAS_O2=3,
- GAS_N2=5,
- GAS_N2=2
- )
- restricted_gases = list(
- GAS_H2O=1,
- )
- restricted_chance = 10
-
- minimum_pressure = ONE_ATMOSPHERE - 30
- maximum_pressure = ONE_ATMOSPHERE + 100
-
- minimum_temp = T20C + 1
- maximum_temp = T20C + 80
diff --git a/code/datums/mapgen/Whitesandsatmos.dm b/code/datums/mapgen/Whitesandsatmos.dm
index 87d4ef33b881..231a9c9eec14 100644
--- a/code/datums/mapgen/Whitesandsatmos.dm
+++ b/code/datums/mapgen/Whitesandsatmos.dm
@@ -1,28 +1,3 @@
#define WHITESANDS_WALL_ENV "rock"
#define WHITESANDS_SAND_ENV "sand"
#define WHITESANDS_DRIED_ENV "dried_up"
-#define WHITESANDS_ATMOS "ws_atmos"
-
-/datum/atmosphere/whitesands
- id = WHITESANDS_ATMOS
-
- base_gases = list(
- GAS_O2=5,
- GAS_N2=10,
- )
- normal_gases = list(
- GAS_O2=10,
- GAS_N2=10,
- GAS_CO2=10,
- )
- restricted_gases = list(
- GAS_PLASMA=0.1,
- GAS_H2O=0.1,
- )
- restricted_chance = 50
-
- minimum_pressure = HAZARD_LOW_PRESSURE + 10
- maximum_pressure = LAVALAND_EQUIPMENT_EFFECT_PRESSURE - 1
-
- minimum_temp = 180
- maximum_temp = 180
diff --git a/code/datums/weather/weather_types/hailstorm.dm b/code/datums/weather/weather_types/hailstorm.dm
index 127a92f03567..ef0cd70b2dba 100644
--- a/code/datums/weather/weather_types/hailstorm.dm
+++ b/code/datums/weather/weather_types/hailstorm.dm
@@ -32,5 +32,5 @@
/// Think of some good solution of how weather should affect monsters and how they should be resistant to things like this
if(isanimal(living_mob))
return
- living_mob.adjust_bodytemperature(-rand(3,6))
+ living_mob.adjust_bodytemperature(-rand(1,2))
living_mob.adjustBruteLoss(rand(2,4))
diff --git a/code/datums/weather/weather_types/snow_storm.dm b/code/datums/weather/weather_types/snow_storm.dm
index ba74a39ddb47..db11f26e753b 100644
--- a/code/datums/weather/weather_types/snow_storm.dm
+++ b/code/datums/weather/weather_types/snow_storm.dm
@@ -29,5 +29,5 @@
sound_weak_inside = /datum/looping_sound/weak_inside_ashstorm
/datum/weather/snow_storm/weather_act(mob/living/living_mob)
- living_mob.adjust_bodytemperature(-rand(5,15))
+ living_mob.adjust_bodytemperature(-rand(2,4))
diff --git a/code/datums/weather/weather_types/snowfall.dm b/code/datums/weather/weather_types/snowfall.dm
index 5600547705b2..d3eab8b1099a 100644
--- a/code/datums/weather/weather_types/snowfall.dm
+++ b/code/datums/weather/weather_types/snowfall.dm
@@ -43,4 +43,4 @@
thunder_chance = 2
/datum/weather/snowfall/heavy/weather_act(mob/living/living_mob)
- living_mob.adjust_bodytemperature(-rand(2,4))
+ living_mob.adjust_bodytemperature(-rand(1,2))
diff --git a/code/game/objects/effects/particles/smoke.dm b/code/game/objects/effects/particles/smoke.dm
index 72807e778f56..40edb4a52d6d 100644
--- a/code/game/objects/effects/particles/smoke.dm
+++ b/code/game/objects/effects/particles/smoke.dm
@@ -64,3 +64,16 @@
fadein = 0.7 SECONDS
position = generator(GEN_VECTOR, list(-3, 5, 0), list(3, 6.5, 0), NORMAL_RAND)
velocity = generator(GEN_VECTOR, list(-0.1, 0.4, 0), list(0.1, 0.5, 0), NORMAL_RAND)
+
+/particles/fog
+ icon = 'icons/effects/particles/smoke.dmi'
+ icon_state = list("chill_1" = 2, "chill_2" = 2, "chill_3" = 1)
+
+/particles/fog/breath
+ count = 1
+ spawning = 1
+ lifespan = 1 SECONDS
+ fade = 0.5 SECONDS
+ grow = 0.05
+ spin = 2
+ color = "#fcffffff"
diff --git a/code/game/objects/structures/shower.dm b/code/game/objects/structures/shower.dm
index 16cf7af6ce81..b7c6285d7962 100644
--- a/code/game/objects/structures/shower.dm
+++ b/code/game/objects/structures/shower.dm
@@ -134,11 +134,11 @@
if(current_temperature == SHOWER_FREEZING)
if(iscarbon(L))
- C.adjust_bodytemperature(-80, 80)
+ C.adjust_bodytemperature(-5, 280)
to_chat(L, "[src] is freezing!")
else if(current_temperature == SHOWER_BOILING)
if(iscarbon(L))
- C.adjust_bodytemperature(35, 0, 500)
+ C.adjust_bodytemperature(5, 0, 350)
L.adjustFireLoss(5)
to_chat(L, "[src] is searing!")
diff --git a/code/game/objects/structures/traps.dm b/code/game/objects/structures/traps.dm
index 4c6c3173cded..9649812f40f8 100644
--- a/code/game/objects/structures/traps.dm
+++ b/code/game/objects/structures/traps.dm
@@ -116,7 +116,7 @@
/obj/structure/trap/chill/trap_effect(mob/living/L)
to_chat(L, "You're frozen solid!")
L.Paralyze(20)
- L.adjust_bodytemperature(-300)
+ L.adjust_bodytemperature(-20)
L.apply_status_effect(/datum/status_effect/freon)
diff --git a/code/game/turfs/closed/minerals.dm b/code/game/turfs/closed/minerals.dm
index a8c64aea67f6..1d6020490840 100644
--- a/code/game/turfs/closed/minerals.dm
+++ b/code/game/turfs/closed/minerals.dm
@@ -677,7 +677,7 @@
environment_type = WHITESANDS_WALL_ENV
turf_type = /turf/open/floor/plating/asteroid/whitesands
baseturfs = /turf/open/floor/plating/asteroid/whitesands/dried
- initial_gas_mix = WHITESANDS_ATMOS
+ initial_gas_mix = SANDPLANET_DEFAULT_ATMOS
defer_change = TRUE
has_borders = TRUE
@@ -687,7 +687,7 @@
environment_type = WHITESANDS_WALL_ENV
turf_type = /turf/open/floor/plating/asteroid/whitesands
baseturfs = /turf/open/floor/plating/asteroid/whitesands/dried
- initial_gas_mix = WHITESANDS_ATMOS
+ initial_gas_mix = SANDPLANET_DEFAULT_ATMOS
defer_change = TRUE
has_borders = TRUE
@@ -697,7 +697,7 @@
environment_type = WHITESANDS_WALL_ENV
turf_type = /turf/open/floor/plating/asteroid/whitesands
baseturfs = /turf/open/floor/plating/asteroid/whitesands/dried
- initial_gas_mix = WHITESANDS_ATMOS
+ initial_gas_mix = SANDPLANET_DEFAULT_ATMOS
defer_change = TRUE
has_borders = TRUE
@@ -707,7 +707,7 @@
environment_type = WHITESANDS_WALL_ENV
turf_type = /turf/open/floor/plating/asteroid/whitesands
baseturfs = /turf/open/floor/plating/asteroid/whitesands/dried
- initial_gas_mix = WHITESANDS_ATMOS
+ initial_gas_mix = SANDPLANET_DEFAULT_ATMOS
defer_change = TRUE
has_borders = TRUE
@@ -717,7 +717,7 @@
environment_type = WHITESANDS_WALL_ENV
turf_type = /turf/open/floor/plating/asteroid/whitesands
baseturfs = /turf/open/floor/plating/asteroid/whitesands/dried
- initial_gas_mix = WHITESANDS_ATMOS
+ initial_gas_mix = SANDPLANET_DEFAULT_ATMOS
defer_change = TRUE
has_borders = TRUE
@@ -727,7 +727,7 @@
environment_type = WHITESANDS_WALL_ENV
turf_type = /turf/open/floor/plating/asteroid/whitesands
baseturfs = /turf/open/floor/plating/asteroid/whitesands/dried
- initial_gas_mix = WHITESANDS_ATMOS
+ initial_gas_mix = SANDPLANET_DEFAULT_ATMOS
defer_change = TRUE
has_borders = TRUE
@@ -743,7 +743,7 @@
mineralSpawnChanceList = list(/obj/item/stack/ore/uranium = 5, /obj/item/stack/ore/diamond = 3, /obj/item/stack/ore/gold = 10,
/obj/item/stack/ore/silver = 10, /obj/item/stack/ore/plasma = 15, /obj/item/stack/ore/iron = 45, /obj/item/stack/ore/titanium = 11,
/turf/closed/mineral/gibtonite/whitesands = 4, /turf/open/floor/plating/asteroid/whitesands = 2, /obj/item/stack/ore/bluespace_crystal = 4)
- initial_gas_mix = WHITESANDS_ATMOS
+ initial_gas_mix = SANDPLANET_DEFAULT_ATMOS
defer_change = TRUE
has_borders = TRUE
@@ -754,7 +754,7 @@
environment_type = WHITESANDS_WALL_ENV
turf_type = /turf/open/floor/plating/asteroid/whitesands
baseturfs = /turf/open/floor/plating/asteroid/whitesands/dried
- initial_gas_mix = WHITESANDS_ATMOS
+ initial_gas_mix = SANDPLANET_DEFAULT_ATMOS
defer_change = TRUE
has_borders = TRUE
@@ -764,7 +764,7 @@
environment_type = WHITESANDS_WALL_ENV
turf_type = /turf/open/floor/plating/asteroid/whitesands
baseturfs = /turf/open/floor/plating/asteroid/whitesands/dried
- initial_gas_mix = WHITESANDS_ATMOS
+ initial_gas_mix = SANDPLANET_DEFAULT_ATMOS
defer_change = TRUE
has_borders = TRUE
@@ -774,7 +774,7 @@
environment_type = WHITESANDS_WALL_ENV
turf_type = /turf/open/floor/plating/asteroid/whitesands
baseturfs = /turf/open/floor/plating/asteroid/whitesands/dried
- initial_gas_mix = WHITESANDS_ATMOS
+ initial_gas_mix = SANDPLANET_DEFAULT_ATMOS
defer_change = TRUE
has_borders = TRUE
diff --git a/code/game/turfs/open/acid.dm b/code/game/turfs/open/acid.dm
index 86260871c522..c9f5472fa4fb 100644
--- a/code/game/turfs/open/acid.dm
+++ b/code/game/turfs/open/acid.dm
@@ -145,4 +145,4 @@
/turf/open/water/acid/whitesands
planetary_atmos = TRUE
- initial_gas_mix = WHITESANDS_ATMOS
+ initial_gas_mix = SANDPLANET_DEFAULT_ATMOS
diff --git a/code/game/turfs/open/floor/plating/asteroid.dm b/code/game/turfs/open/floor/plating/asteroid.dm
index 996d122a4ac9..12fe214deb83 100644
--- a/code/game/turfs/open/floor/plating/asteroid.dm
+++ b/code/game/turfs/open/floor/plating/asteroid.dm
@@ -27,6 +27,7 @@
/// Whether the turf has been dug or not
var/dug
+
/turf/open/floor/plating/asteroid/Initialize(mapload, inherited_virtual_z)
var/proper_name = name
. = ..()
diff --git a/code/game/turfs/open/floor/plating/beach.dm b/code/game/turfs/open/floor/plating/beach.dm
index 485a5cc58a8c..9b4aa8cf156f 100644
--- a/code/game/turfs/open/floor/plating/beach.dm
+++ b/code/game/turfs/open/floor/plating/beach.dm
@@ -6,7 +6,7 @@
icon_state = "sand"
base_icon_state = "sand"
baseturfs = /turf/open/floor/plating/asteroid/sand
- initial_gas_mix = OPENTURF_DEFAULT_ATMOS
+ initial_gas_mix = BEACHPLANET_DEFAULT_ATMOS //custom atmos? lots of oxygen, hot?
planetary_atmos = TRUE
digResult = /obj/item/stack/ore/glass/beach
light_color = COLOR_BEACHPLANET_LIGHT
diff --git a/code/game/turfs/open/floor/plating/jungle.dm b/code/game/turfs/open/floor/plating/jungle.dm
index 79121704001c..19139d782c0e 100644
--- a/code/game/turfs/open/floor/plating/jungle.dm
+++ b/code/game/turfs/open/floor/plating/jungle.dm
@@ -1,9 +1,12 @@
/turf/open/floor/plating/dirt/jungle
slowdown = 0.5
baseturfs = /turf/open/floor/plating/dirt/jungle
- initial_gas_mix = OPENTURF_DEFAULT_ATMOS
+ initial_gas_mix = JUNGLEPLANET_DEFAULT_ATMOS
light_color = COLOR_JUNGLEPLANET_LIGHT
+/turf/open/floor/plating/dirt/jungle/MakeSlippery(wet_setting, min_wet_time, wet_time_to_add, max_wet_time, permanent)
+ return
+
/turf/open/floor/plating/dirt/jungle/lit
baseturfs = /turf/open/floor/plating/dirt/jungle/lit
light_range = 2
@@ -45,6 +48,10 @@
smooth_icon = 'icons/turf/floors/junglegrass.dmi'
baseturfs = /turf/open/floor/plating/grass/jungle
light_color = COLOR_JUNGLEPLANET_LIGHT
+ initial_gas_mix = JUNGLEPLANET_DEFAULT_ATMOS
+
+/turf/open/floor/plating/grass/jungle/MakeSlippery(wet_setting, min_wet_time, wet_time_to_add, max_wet_time, permanent)
+ return
/turf/open/floor/plating/grass/jungle/lit
baseturfs = /turf/open/floor/plating/dirt/jungle/lit
diff --git a/code/game/turfs/open/floor/plating/planet.dm b/code/game/turfs/open/floor/plating/planet.dm
index f360ac611267..5609547928c6 100644
--- a/code/game/turfs/open/floor/plating/planet.dm
+++ b/code/game/turfs/open/floor/plating/planet.dm
@@ -16,6 +16,7 @@
/turf/open/floor/plating/dirt/dark
icon_state = "greenerdirt"
baseturfs = /turf/open/floor/plating/dirt/dark
+ initial_gas_mix = JUNGLEPLANET_DEFAULT_ATMOS
/turf/open/floor/plating/dirt/try_replace_tile(obj/item/stack/tile/T, mob/user, params)
return
diff --git a/code/game/turfs/open/floor/plating/whitesands.dm b/code/game/turfs/open/floor/plating/whitesands.dm
index 2607d6f174c0..40094890c53c 100644
--- a/code/game/turfs/open/floor/plating/whitesands.dm
+++ b/code/game/turfs/open/floor/plating/whitesands.dm
@@ -8,7 +8,7 @@
icon_plating = "sand"
planetary_atmos = TRUE
base_icon_state = WHITESANDS_SAND_ENV
- initial_gas_mix = WHITESANDS_ATMOS
+ initial_gas_mix = SANDPLANET_DEFAULT_ATMOS
digResult = /obj/item/stack/ore/glass/whitesands
light_color = COLOR_SANDPLANET_LIGHT
@@ -36,7 +36,7 @@
///basalt
/turf/open/floor/plating/asteroid/basalt/whitesands
- initial_gas_mix = WHITESANDS_ATMOS
+ initial_gas_mix = SANDPLANET_DEFAULT_ATMOS
planetary_atmos = TRUE
baseturfs = /turf/open/floor/plating/asteroid/whitesands/dried
icon_state = "whitesands_basalt0"
@@ -58,7 +58,7 @@
base_icon_state = "grass"
baseturfs = /turf/open/floor/plating/asteroid/whitesands
turf_type = /turf/open/floor/plating/asteroid/whitesands/grass
- initial_gas_mix = WHITESANDS_ATMOS
+ initial_gas_mix = SANDPLANET_DEFAULT_ATMOS
planetary_atmos = TRUE
smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_TURF_OPEN, SMOOTH_GROUP_FLOOR_GRASS)
@@ -90,10 +90,10 @@
/turf/open/floor/plating/asteroid/snow/lit/whitesands
light_color = COLOR_SANDPLANET_LIGHT
baseturfs = /turf/open/floor/plating/asteroid/whitesands/lit
- initial_gas_mix = WHITESANDS_ATMOS
+ initial_gas_mix = SANDPLANET_DEFAULT_ATMOS
/turf/open/floor/concrete/whitesands
- initial_gas_mix = WHITESANDS_ATMOS
+ initial_gas_mix = SANDPLANET_DEFAULT_ATMOS
light_color = COLOR_SANDPLANET_LIGHT
/turf/open/floor/concrete/whitesands/lit
@@ -101,7 +101,7 @@
light_power = 0.6
/turf/open/floor/concrete/reinforced/whitesands
- initial_gas_mix = WHITESANDS_ATMOS
+ initial_gas_mix = SANDPLANET_DEFAULT_ATMOS
light_color = COLOR_SANDPLANET_LIGHT
/turf/open/floor/concrete/reinforced/whitesands/lit
@@ -109,7 +109,7 @@
light_power = 0.6
/turf/open/floor/concrete/pavement/whitesands
- initial_gas_mix = WHITESANDS_ATMOS
+ initial_gas_mix = SANDPLANET_DEFAULT_ATMOS
light_color = COLOR_SANDPLANET_LIGHT
/turf/open/floor/concrete/pavement/whitesands/lit
@@ -117,7 +117,7 @@
light_power = 0.6
/turf/open/floor/concrete/slab_1/whitesands
- initial_gas_mix = WHITESANDS_ATMOS
+ initial_gas_mix = SANDPLANET_DEFAULT_ATMOS
light_color = COLOR_SANDPLANET_LIGHT
/turf/open/floor/concrete/slab_1/whitesands/lit
@@ -125,7 +125,7 @@
light_power = 0.6
/turf/open/floor/plating/whitesands
- initial_gas_mix = WHITESANDS_ATMOS
+ initial_gas_mix = SANDPLANET_DEFAULT_ATMOS
light_color = COLOR_SANDPLANET_LIGHT
/turf/open/floor/plating/whitesands/lit
diff --git a/code/game/turfs/open/water.dm b/code/game/turfs/open/water.dm
index f94db41d4713..5a78c24dc1fe 100644
--- a/code/game/turfs/open/water.dm
+++ b/code/game/turfs/open/water.dm
@@ -70,6 +70,7 @@
light_range = 2
light_power = 0.6
light_color = COLOR_VERY_LIGHT_GRAY
+ initial_gas_mix = JUNGLEPLANET_DEFAULT_ATMOS
/turf/open/water/jungle/Initialize(mapload)
. = ..()
diff --git a/code/modules/antagonists/wizard/equipment/artefact.dm b/code/modules/antagonists/wizard/equipment/artefact.dm
index b50c6dc1ea8b..fc6af55b3b41 100644
--- a/code/modules/antagonists/wizard/equipment/artefact.dm
+++ b/code/modules/antagonists/wizard/equipment/artefact.dm
@@ -282,7 +282,7 @@
if(target && cooldown < world.time)
if(I.get_temperature())
to_chat(target, "You suddenly feel very hot!")
- target.adjust_bodytemperature(50)
+ target.adjust_bodytemperature(10)
GiveHint(target)
else if(is_pointed(I))
to_chat(target, "You feel a stabbing pain in [parse_zone(user.zone_selected)]!")
diff --git a/code/modules/awaymissions/mission_code/snowdin.dm b/code/modules/awaymissions/mission_code/snowdin.dm
index c159e19da9ec..c205746b16f3 100644
--- a/code/modules/awaymissions/mission_code/snowdin.dm
+++ b/code/modules/awaymissions/mission_code/snowdin.dm
@@ -66,7 +66,7 @@
L.adjustFireLoss(2)
if(L)
L.adjust_fire_stacks(20) //dipping into a stream of plasma would probably make you more flammable than usual
- L.adjust_bodytemperature(-rand(50,65)) //its cold, man
+ L.adjust_bodytemperature(-rand(10,20)) //its cold, man
if(ishuman(L))//are they a carbon?
var/list/plasma_parts = list()//a list of the organic parts to be turned into plasma limbs
var/list/robo_parts = list()//keep a reference of robotic parts so we know if we can turn them into a plasmaman
diff --git a/code/modules/hydroponics/grown/chili.dm b/code/modules/hydroponics/grown/chili.dm
index bbb1379bcc74..bb5049415652 100644
--- a/code/modules/hydroponics/grown/chili.dm
+++ b/code/modules/hydroponics/grown/chili.dm
@@ -98,7 +98,7 @@
if(held_mob.is_holding(src))
if(istype(held_mob) && held_mob.gloves)
return
- held_mob.adjust_bodytemperature(15 * TEMPERATURE_DAMAGE_COEFFICIENT)
+ held_mob.adjust_bodytemperature(1 * TEMPERATURE_DAMAGE_COEFFICIENT)
if(prob(10))
to_chat(held_mob, "Your hand holding [src] burns!")
else
diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index 3e02a1c1e386..cb812d45b34b 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -120,6 +120,7 @@
if(istype(L, /obj/item/organ/lungs))
var/obj/item/organ/lungs/lun = L
lun.check_breath(breath,src)
+ lun.handle_breath_temperature(breath,src)
/// Environment handlers for species
/mob/living/carbon/human/handle_environment(datum/gas_mixture/environment)
diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm
index f8807a2fa392..aba7fc9ff611 100644
--- a/code/modules/mob/living/carbon/human/species.dm
+++ b/code/modules/mob/living/carbon/human/species.dm
@@ -149,9 +149,9 @@ GLOBAL_LIST_EMPTY(roundstart_races)
/// Minimum amount of kelvin moved toward normal body temperature per tick.
var/bodytemp_autorecovery_min = HUMAN_BODYTEMP_AUTORECOVERY_MINIMUM
/// The maximum temperature the species is comfortable at. Going above this does not apply any effects, but warns players that the temperture is hot
- var/max_temp_comfortable = (HUMAN_BODYTEMP_NORMAL + 7)
+ var/max_temp_comfortable = (HUMAN_BODYTEMP_NORMAL) //20 c will always be below human bodytemp, this just makes it so when it can sustain that its higher
/// The minimum temperature the species is comfortable at. Going below this does not apply any effects, but warns players that the temperture is chilly
- var/min_temp_comfortable = (HUMAN_BODYTEMP_NORMAL - 5)
+ var/min_temp_comfortable = (HUMAN_BODYTEMP_NORMAL - 1)
/// This is the divisor which handles how much of the temperature difference between the current body temperature and 310.15K (optimal temperature) humans auto-regenerate each tick. The higher the number, the slower the recovery.
var/bodytemp_autorecovery_divisor = HUMAN_BODYTEMP_AUTORECOVERY_DIVISOR
///Similar to the autorecovery_divsor, but this is the divisor which is applied at the stage that follows autorecovery. This is the divisor which comes into play when the human's loc temperature is higher than their body temperature. Make it lower to lose bodytemp faster.
@@ -497,6 +497,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)
fly.Grant(C)
C.add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/species, multiplicative_slowdown=speedmod)
+ C.bodytemperature = bodytemp_normal
SEND_SIGNAL(C, COMSIG_SPECIES_GAIN, src, old_species)
@@ -1883,44 +1884,31 @@ GLOBAL_LIST_EMPTY(roundstart_races)
/// Traits for resitance to heat or cold are handled here.
/datum/species/proc/handle_body_temperature(mob/living/carbon/human/H)
var/body_temp = H.bodytemperature
- var/total_change = bodytemp_natural_stabilization + bodytemp_environment_change
//tempature is no longer comfy, throw alert
if(body_temp > max_temp_comfortable && !HAS_TRAIT(H, TRAIT_RESISTHEAT))
SEND_SIGNAL(H, COMSIG_CLEAR_MOOD_EVENT, "cold")
if(body_temp > bodytemp_heat_damage_limit)
var/burn_damage = calculate_burn_damage(H)
- if(burn_damage < 2)
+ if(burn_damage > 2)
H.throw_alert("tempfeel", /atom/movable/screen/alert/hot, 3)
else
H.throw_alert("tempfeel", /atom/movable/screen/alert/hot, 2)
else
- if(body_temp < (bodytemp_heat_damage_limit - 10))
- // you are cooling down and exiting the danger zone
- if(total_change < 0)
- H.throw_alert("tempfeel", /atom/movable/screen/alert/warm)
- else
- H.throw_alert("tempfeel", /atom/movable/screen/alert/hot, 2)
- else if(total_change > 1)
- H.throw_alert("tempfeel", /atom/movable/screen/alert/warm)
+ if(body_temp < (bodytemp_heat_damage_limit - 3))
+ H.throw_alert("tempfeel", /atom/movable/screen/alert/hot, 1)
else
- H.clear_alert("tempfeel")
+ H.throw_alert("tempfeel", /atom/movable/screen/alert/warm)
else if (body_temp < min_temp_comfortable && !HAS_TRAIT(H, TRAIT_RESISTCOLD))
SEND_SIGNAL(H, COMSIG_CLEAR_MOOD_EVENT, "hot")
- if(body_temp < 200)
+ if(body_temp < bodytemp_cold_damage_limit -7)
H.throw_alert("tempfeel", /atom/movable/screen/alert/cold, 3)
else if(body_temp < bodytemp_cold_damage_limit)
H.throw_alert("tempfeel", /atom/movable/screen/alert/cold, 2)
- else if(body_temp < (bodytemp_cold_damage_limit + 10))
- // you are warming up and exiting the danger zone
- if(total_change > 0)
- H.throw_alert("tempfeel", /atom/movable/screen/alert/chilly)
- else
- H.throw_alert("tempfeel", /atom/movable/screen/alert/cold, 2)
- else if(total_change < -1)
- H.throw_alert("tempfeel", /atom/movable/screen/alert/chilly)
+ else if(body_temp < (bodytemp_cold_damage_limit + 5))
+ H.throw_alert("tempfeel", /atom/movable/screen/alert/cold, 1)
else
- H.clear_alert("tempfeel")
+ H.throw_alert("tempfeel", /atom/movable/screen/alert/chilly)
else
H.clear_alert("tempfeel")
@@ -1939,21 +1927,28 @@ GLOBAL_LIST_EMPTY(roundstart_races)
if(burn_damage)
if(H.mob_biotypes & MOB_ROBOTIC) //robors have a alternative cooling fan graphic
switch(burn_damage)
- if(0 to 2)
+ if(0 to 1)
H.throw_alert("temp", /atom/movable/screen/alert/fans, 1)
- if(2 to 4)
+ if(2 to 3)
H.throw_alert("temp", /atom/movable/screen/alert/fans, 2)
else
H.throw_alert("temp", /atom/movable/screen/alert/fans, 3)
else
switch(burn_damage)
- if(0 to 2)
+ if(0 to 1)
H.throw_alert("temp", /atom/movable/screen/alert/sweat, 1)
- if(2 to 4)
+ if(2 to 3)
H.throw_alert("temp", /atom/movable/screen/alert/sweat, 2)
else
H.throw_alert("temp", /atom/movable/screen/alert/sweat, 3)
+ //Stay hydrated.
+ if(!(H.mob_biotypes & MOB_ROBOTIC) && H.reagents.has_reagent(/datum/reagent/water) && H.stat != DEAD)
+ burn_damage -= clamp(H.reagents.get_reagent_amount(/datum/reagent/water) /10, 0, 2)
+ // if youre dead, no need to sweat?
+ if(H.stat != DEAD)
+ burn_damage -= (max(burn_damage - 2.5, 0))
+
// Apply species and physiology modifiers to heat damage
burn_damage = burn_damage * heatmod * H.physiology.heat_mod
@@ -1974,17 +1969,25 @@ GLOBAL_LIST_EMPTY(roundstart_races)
// Display alerts based on the amount of cold damage being taken
// Apply more damage based on how cold you are
- if(body_temp < 120)
+ if(body_temp < bodytemp_cold_damage_limit - 15)
H.throw_alert("temp", /atom/movable/screen/alert/shiver, 3)
- H.apply_damage(COLD_DAMAGE_LEVEL_3 * coldmod * H.physiology.cold_mod, BURN)
+ if(H.stat != DEAD) // probably can store them in cold storage like this
+ H.apply_damage(COLD_DAMAGE_LEVEL_3 * coldmod * H.physiology.cold_mod, BURN)
+ H.emote("shiver")
- else if(body_temp < 200)
+ else if(body_temp < bodytemp_cold_damage_limit - 7)
H.throw_alert("temp", /atom/movable/screen/alert/shiver, 2)
- H.apply_damage(COLD_DAMAGE_LEVEL_2 * coldmod * H.physiology.cold_mod, BURN)
+ if(H.stat != DEAD) // when you think about it, being cold wouldnt do skin damaage if there nothing even alive?
+ H.apply_damage(COLD_DAMAGE_LEVEL_2 * coldmod * H.physiology.cold_mod, BURN)
+ if(prob(30))
+ H.emote("shiver")
else
H.throw_alert("temp", /atom/movable/screen/alert/shiver, 1)
- H.apply_damage(COLD_DAMAGE_LEVEL_1 * coldmod * H.physiology.cold_mod, BURN)
+ if(H.stat != DEAD) // to prevent a bug where bodies at room tempertue actually take damage from their body being cold
+ H.apply_damage(COLD_DAMAGE_LEVEL_1 * coldmod * H.physiology.cold_mod, BURN)
+ if(prob(10))
+ H.emote("shiver")
// We are not to hot or cold, remove status and moods
else
@@ -2000,7 +2003,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)
firemodifier = min(firemodifier, 0)
// this can go below 5 at log 2.5
- burn_damage = max(log(2 - firemodifier, (current_human.bodytemperature - current_human.get_body_temp_normal(apply_change=FALSE))) - 5,0)
+ burn_damage = max(log(2 - firemodifier, (current_human.bodytemperature - current_human.get_body_temp_normal(apply_change=FALSE))) - 2,0)
return burn_damage
/// Handle the air pressure of the environment
@@ -2057,25 +2060,21 @@ GLOBAL_LIST_EMPTY(roundstart_races)
var/body_temp = H.bodytemperature // Get current body temperature
var/body_temperature_difference = H.get_body_temp_normal() - body_temp
var/natural_change = 0
-
- // We are very cold, increate body temperature
- if(body_temp <= bodytemp_cold_damage_limit)
- natural_change = max((body_temperature_difference * H.metabolism_efficiency / bodytemp_autorecovery_divisor), \
- bodytemp_autorecovery_min)
+ var/recovery_temp = bodytemp_autorecovery_min
+ //if in crit, we struggle to regulate temperture. this will make extreme tempertures more dangerous to injured
+ if (H.stat > SOFT_CRIT)
+ recovery_temp = recovery_temp / 2
// we are cold, reduce the minimum increment and do not jump over the difference
- else if(body_temp > bodytemp_cold_damage_limit && body_temp < H.get_body_temp_normal())
+ if(body_temp > bodytemp_cold_damage_limit && body_temp < H.get_body_temp_normal())
natural_change = max(body_temperature_difference * H.metabolism_efficiency / bodytemp_autorecovery_divisor, \
- min(body_temperature_difference, bodytemp_autorecovery_min / 4))
+ min(body_temperature_difference, recovery_temp / 4))
// We are hot, reduce the minimum increment and do not jump below the difference
else if(body_temp > H.get_body_temp_normal() && body_temp <= bodytemp_heat_damage_limit)
natural_change = min(body_temperature_difference * H.metabolism_efficiency / bodytemp_autorecovery_divisor, \
- max(body_temperature_difference, -(bodytemp_autorecovery_min / 4)))
+ max(body_temperature_difference, -(recovery_temp / 4)))
- // We are very hot, reduce the body temperature
- else if(body_temp >= bodytemp_heat_damage_limit)
- natural_change = min((body_temperature_difference / bodytemp_autorecovery_divisor), -bodytemp_autorecovery_min)
var/thermal_protection = H.get_insulation_protection(body_temp + natural_change)
if(areatemp > body_temp) // It is hot here
@@ -2163,9 +2162,9 @@ GLOBAL_LIST_EMPTY(roundstart_races)
if(thermal_protection >= FIRE_IMMUNITY_MAX_TEMP_PROTECT && !no_protection)
return
if(thermal_protection >= FIRE_SUIT_MAX_TEMP_PROTECT && !no_protection)
- H.adjust_bodytemperature(11)
+ H.adjust_bodytemperature(3)
else
- H.adjust_bodytemperature(bodytemp_heating_rate_max + (H.fire_stacks * 12))
+ H.adjust_bodytemperature(bodytemp_heating_rate_max + (H.fire_stacks * 5))
SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "on_fire", /datum/mood_event/on_fire)
/datum/species/proc/CanIgniteMob(mob/living/carbon/human/H)
diff --git a/code/modules/mob/living/carbon/human/species_types/ethereal.dm b/code/modules/mob/living/carbon/human/species_types/ethereal.dm
index 2eeba6ea96ea..2a0b2709bde8 100644
--- a/code/modules/mob/living/carbon/human/species_types/ethereal.dm
+++ b/code/modules/mob/living/carbon/human/species_types/ethereal.dm
@@ -26,11 +26,12 @@
toxic_food = NONE
// Body temperature for ethereals is much higher then humans as they like hotter environments
bodytemp_normal = (HUMAN_BODYTEMP_NORMAL + 50)
- bodytemp_heat_damage_limit = FIRE_MINIMUM_TEMPERATURE_TO_SPREAD // about 150C
+ bodytemp_heat_damage_limit = (HUMAN_BODYTEMP_NORMAL + 65)
// Cold temperatures hurt faster as it is harder to move with out the heat energy
- bodytemp_cold_damage_limit = (T20C - 10) // about 10c
+ bodytemp_cold_damage_limit = (HUMAN_BODYTEMP_NORMAL - 20)
- max_temp_comfortable = HUMAN_BODYTEMP_NORMAL + 100
+ min_temp_comfortable = (HUMAN_BODYTEMP_NORMAL - 10)
+ max_temp_comfortable = HUMAN_BODYTEMP_NORMAL + 55
hair_color = "fixedmutcolor"
hair_alpha = 140
diff --git a/code/modules/mob/living/carbon/human/species_types/kepori.dm b/code/modules/mob/living/carbon/human/species_types/kepori.dm
index 76bedbb8828f..bb3e1cb167d8 100644
--- a/code/modules/mob/living/carbon/human/species_types/kepori.dm
+++ b/code/modules/mob/living/carbon/human/species_types/kepori.dm
@@ -21,11 +21,16 @@
// brutemod = 1.5
// burnmod = 1.5
speedmod = -0.10
- bodytemp_normal = HUMAN_BODYTEMP_NORMAL + 30
- bodytemp_heat_damage_limit = HUMAN_BODYTEMP_HEAT_DAMAGE_LIMIT + 30
- bodytemp_cold_damage_limit = HUMAN_BODYTEMP_COLD_DAMAGE_LIMIT + 30
- max_temp_comfortable = HUMAN_BODYTEMP_NORMAL + 40
- min_temp_comfortable = HUMAN_BODYTEMP_NORMAL - 3
+
+ bodytemp_heat_damage_limit = HUMAN_BODYTEMP_HEAT_DAMAGE_LIMIT + 35
+ bodytemp_cold_damage_limit = HUMAN_BODYTEMP_COLD_DAMAGE_LIMIT + 3
+
+ max_temp_comfortable = HUMAN_BODYTEMP_NORMAL + 15
+ min_temp_comfortable = HUMAN_BODYTEMP_NORMAL - 1
+
+ bodytemp_autorecovery_divisor = HUMAN_BODYTEMP_AUTORECOVERY_DIVISOR - 4
+
+
mutanttongue = /obj/item/organ/tongue/kepori
species_language_holder = /datum/language_holder/kepori
var/datum/action/innate/keptackle/keptackle
diff --git a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm
index 5ee7441e2f54..f3e460aa356f 100644
--- a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm
+++ b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm
@@ -45,12 +45,11 @@
robotic_eyes = /obj/item/organ/eyes/robotic/lizard
- // Lizards are coldblooded and can stand a greater temperature range than humans
- bodytemp_heat_damage_limit = HUMAN_BODYTEMP_HEAT_DAMAGE_LIMIT + 20 // This puts lizards 10 above lavaland max heat for ash lizards.
+ // Sarathi are coldblooded and can stand a greater temperature range than humans
+ bodytemp_heat_damage_limit = HUMAN_BODYTEMP_HEAT_DAMAGE_LIMIT + 30
bodytemp_cold_damage_limit = HUMAN_BODYTEMP_COLD_DAMAGE_LIMIT - 10
-
- max_temp_comfortable = HUMAN_BODYTEMP_NORMAL + 25
- min_temp_comfortable = HUMAN_BODYTEMP_NORMAL - 3
+ max_temp_comfortable = HUMAN_BODYTEMP_NORMAL + 20
+ min_temp_comfortable = HUMAN_BODYTEMP_NORMAL
loreblurb = "The Sarathi are a cold-blooded reptilian species originating from the planet Kalixcis, where they evolved alongside the Elzuosa. Kalixcian culture places no importance on blood-bonds, and those from it tend to consider their family anyone they are sufficiently close to, and choose their own names."
ass_image = 'icons/ass/asslizard.png'
diff --git a/code/modules/mob/living/carbon/human/species_types/mothmen.dm b/code/modules/mob/living/carbon/human/species_types/mothmen.dm
index 10375f424e82..e612b3bbe2fc 100644
--- a/code/modules/mob/living/carbon/human/species_types/mothmen.dm
+++ b/code/modules/mob/living/carbon/human/species_types/mothmen.dm
@@ -30,6 +30,9 @@
species_l_leg = /obj/item/bodypart/leg/left/moth
species_r_leg = /obj/item/bodypart/leg/right/moth
+ min_temp_comfortable = HUMAN_BODYTEMP_NORMAL - 2
+ bodytemp_cold_damage_limit = HUMAN_BODYTEMP_COLD_DAMAGE_LIMIT - 2
+
/datum/species/moth/regenerate_organs(mob/living/carbon/C, datum/species/old_species,replace_current=TRUE, list/excluded_zones, robotic = FALSE)
. = ..()
if(ishuman(C))
diff --git a/code/modules/mob/living/carbon/human/species_types/vox.dm b/code/modules/mob/living/carbon/human/species_types/vox.dm
index bdd95ef18b3e..a462c00d7708 100644
--- a/code/modules/mob/living/carbon/human/species_types/vox.dm
+++ b/code/modules/mob/living/carbon/human/species_types/vox.dm
@@ -26,9 +26,12 @@
bodytemp_cold_divisor = VOX_BODYTEMP_COLD_DIVISOR
bodytemp_autorecovery_min = VOX_BODYTEMP_AUTORECOVERY_MIN
- max_temp_comfortable = HUMAN_BODYTEMP_NORMAL + 20
+ max_temp_comfortable = HUMAN_BODYTEMP_NORMAL + 1
min_temp_comfortable = HUMAN_BODYTEMP_NORMAL - 20
+ bodytemp_heat_damage_limit = HUMAN_BODYTEMP_HEAT_DAMAGE_LIMIT + 10
+ bodytemp_cold_damage_limit = HUMAN_BODYTEMP_COLD_DAMAGE_LIMIT - 20
+
bodytype = BODYTYPE_VOX
custom_overlay_icon = 'icons/mob/species/vox/vox_overlays.dmi'
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm
index d3040bc7717c..5e953c74119a 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm
@@ -44,10 +44,10 @@
damage_type = BURN
nodamage = TRUE
flag = "energy"
- temperature = -50 // Cools you down! per hit!
+ temperature = -5 // Cools you down! per hit!
/obj/projectile/temp/basilisk/super
- temperature = -100
+ temperature = -20
damage = 5
nodamage = FALSE
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/brimdemon.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/brimdemon.dm
index 769f6ce3d5fa..6495b967fb88 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/brimdemon.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/brimdemon.dm
@@ -242,7 +242,7 @@
/datum/reagent/brimdust/on_mob_life(mob/living/carbon/carbon, delta_time, times_fired)
. = ..()
carbon.adjustFireLoss((ispodperson(carbon) ? -1 : 1) * delta_time)
- carbon.adjust_bodytemperature(55 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, carbon.get_body_temp_normal())
+ carbon.adjust_bodytemperature(5 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, carbon.get_body_temp_normal())
/datum/reagent/brimdust/on_hydroponics_apply(obj/item/seeds/myseed, datum/reagents/chems, obj/machinery/hydroponics/mytray)
. = ..()
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/ice_demon.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/ice_demon.dm
index 786cdaa80966..17f189080d75 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/ice_demon.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/ice_demon.dm
@@ -45,7 +45,7 @@
name = "ice blast"
damage = 5
nodamage = FALSE
- temperature = -75
+ temperature = -2
/mob/living/simple_animal/hostile/asteroid/ice_demon/OpenFire()
// Sentient ice demons teleporting has been linked to server crashes
diff --git a/code/modules/projectiles/projectile/energy/misc.dm b/code/modules/projectiles/projectile/energy/misc.dm
index c9e113455387..e7b689cce2d5 100644
--- a/code/modules/projectiles/projectile/energy/misc.dm
+++ b/code/modules/projectiles/projectile/energy/misc.dm
@@ -33,7 +33,7 @@
icon_state = "blastwave"
color = "#00ff00"
hitsound = 'sound/weapons/sear.ogg'
- var/heatpwr = 350
+ var/heatpwr = 6
/obj/projectile/energy/plasmabolt/on_hit(atom/target, blocked = FALSE)
. = ..()
@@ -56,4 +56,4 @@
icon_state = "blastwave"
color = "#00ff00"
hitsound = 'sound/weapons/sear.ogg'
- heatpwr = 700
+ heatpwr = 11
diff --git a/code/modules/projectiles/projectile/special/temperature.dm b/code/modules/projectiles/projectile/special/temperature.dm
index 53a4bb62b9e1..65b7ad1d4dd7 100644
--- a/code/modules/projectiles/projectile/special/temperature.dm
+++ b/code/modules/projectiles/projectile/special/temperature.dm
@@ -5,7 +5,7 @@
damage_type = BURN
nodamage = FALSE
flag = "energy"
- var/temperature = -50 // reduce the body temperature by 50 points
+ var/temperature = -5 // reduce the body temperature by 5c
/obj/projectile/temp/on_hit(atom/target, blocked = 0)
. = ..()
@@ -29,12 +29,12 @@
/obj/projectile/temp/hot
name = "heat beam"
- temperature = 100 // Raise the body temp by 100 points
+ temperature = 10 // Raise the body temp by 10c
/obj/projectile/temp/cryo
name = "cryo beam"
range = 3
- temperature = -240 // Single slow shot reduces temp greatly
+ temperature = -20 // Single slow shot reduces temp greatly
/obj/projectile/temp/cryo/on_range()
var/turf/T = get_turf(src)
diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm
index ad27b15207a8..b4319025e484 100644
--- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm
@@ -218,7 +218,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/vimukti/on_mob_life(mob/living/carbon/M)
M.drowsyness = max(0,M.drowsyness-7)
M.AdjustSleeping(-40)
- M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal())
+ M.adjust_bodytemperature(-1 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal())
if(!HAS_TRAIT(M, TRAIT_ALCOHOL_TOLERANCE))
M.Jitter(5)
return ..()
@@ -655,7 +655,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
shot_glass_icon_state = "toxinsspecialglass"
/datum/reagent/consumable/ethanol/toxins_special/on_mob_life(mob/living/M)
- M.adjust_bodytemperature(15 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal() + 20) //310.15 is the normal bodytemp.
+ M.adjust_bodytemperature(1 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal() + 20) //310.15 is the normal bodytemp.
return ..()
/datum/reagent/consumable/ethanol/beepsky_smash
@@ -846,7 +846,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "Vodka, cream, and ice. No actual antifreeze included, of course."
/datum/reagent/consumable/ethanol/antifreeze/on_mob_life(mob/living/carbon/M)
- M.adjust_bodytemperature(20 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal() + 20) //310.15 is the normal bodytemp.
+ M.adjust_bodytemperature(1 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal() + 20) //310.15 is the normal bodytemp.
return ..()
/datum/reagent/consumable/ethanol/barefoot
@@ -959,7 +959,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "Vodka with capsaicin for the extra feeling of intense warmth. Difficult to take large swallows."
/datum/reagent/consumable/ethanol/sbiten/on_mob_life(mob/living/carbon/M)
- M.adjust_bodytemperature(50 * TEMPERATURE_DAMAGE_COEFFICIENT, 0 , M.dna.species.bodytemp_heat_damage_limit) //310.15 is the normal bodytemp.
+ M.adjust_bodytemperature(1 * TEMPERATURE_DAMAGE_COEFFICIENT, 0 , M.dna.species.bodytemp_heat_damage_limit) //310.15 is the normal bodytemp.
return ..()
/datum/reagent/consumable/ethanol/red_mead
@@ -996,7 +996,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "Iced beer, served in a chilled glass. It's cold enough to leave a trail in the air."
/datum/reagent/consumable/ethanol/iced_beer/on_mob_life(mob/living/carbon/M)
- M.adjust_bodytemperature(-20 * TEMPERATURE_DAMAGE_COEFFICIENT, T0C) //310.15 is the normal bodytemp.
+ M.adjust_bodytemperature(-1 * TEMPERATURE_DAMAGE_COEFFICIENT, T0C) //310.15 is the normal bodytemp.
return ..()
/datum/reagent/consumable/ethanol/grog
@@ -1625,7 +1625,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/peppermint_patty/on_mob_life(mob/living/carbon/M)
M.apply_status_effect(/datum/status_effect/throat_soothed)
- M.adjust_bodytemperature(5 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal())
+ M.adjust_bodytemperature(1 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal())
..()
/datum/reagent/consumable/ethanol/alexander
@@ -1809,7 +1809,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/branca_menta/on_mob_life(mob/living/carbon/M)
- M.adjust_bodytemperature(-20 * TEMPERATURE_DAMAGE_COEFFICIENT, T0C)
+ M.adjust_bodytemperature(-1 * TEMPERATURE_DAMAGE_COEFFICIENT, T0C)
return ..()
/datum/reagent/consumable/ethanol/branca_menta/on_mob_metabolize(mob/living/M)
@@ -2121,7 +2121,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/mauna_loa/on_mob_life(mob/living/carbon/M)
// Heats the user up while the reagent is in the body. Occasionally makes you burst into flames.
- M.adjust_bodytemperature(25 * TEMPERATURE_DAMAGE_COEFFICIENT)
+ M.adjust_bodytemperature(2 * TEMPERATURE_DAMAGE_COEFFICIENT)
if (prob(5))
M.adjust_fire_stacks(1)
M.IgniteMob()
diff --git a/code/modules/reagents/chemistry/reagents/drink_reagents.dm b/code/modules/reagents/chemistry/reagents/drink_reagents.dm
index bb6bafc9e74c..281b15d2e6b5 100644
--- a/code/modules/reagents/chemistry/reagents/drink_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/drink_reagents.dm
@@ -257,7 +257,7 @@
M.drowsyness = max(0,M.drowsyness-3)
M.AdjustSleeping(-40)
//310.15 is the normal bodytemp.
- M.adjust_bodytemperature(25 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal())
+ M.adjust_bodytemperature(3 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal())
if(holder.has_reagent(/datum/reagent/consumable/frostoil))
holder.remove_reagent(/datum/reagent/consumable/frostoil, 5)
..()
@@ -280,7 +280,7 @@
M.AdjustSleeping(-20)
if(M.getToxLoss() && prob(20))
M.adjustToxLoss(-1, 0)
- M.adjust_bodytemperature(20 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal())
+ M.adjust_bodytemperature(2 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal())
..()
. = 1
@@ -330,7 +330,7 @@
M.dizziness = max(0,M.dizziness-5)
M.drowsyness = max(0,M.drowsyness-3)
M.AdjustSleeping(-40)
- M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal())
+ M.adjust_bodytemperature(-1 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal())
..()
. = 1
@@ -354,7 +354,7 @@
M.dizziness = max(0,M.dizziness-5)
M.drowsyness = max(0,M.drowsyness-3)
M.AdjustSleeping(-60)
- M.adjust_bodytemperature(-20 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal())
+ M.adjust_bodytemperature(-1 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal())
M.adjustToxLoss(1*REM, 0)
..()
. = TRUE
@@ -375,7 +375,7 @@
M.AdjustSleeping(-40)
if(M.getToxLoss() && prob(20))
M.adjustToxLoss(-1, 0)
- M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal())
+ M.adjust_bodytemperature(-1 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal())
..()
. = 1
@@ -390,7 +390,7 @@
/datum/reagent/consumable/space_cola/on_mob_life(mob/living/carbon/M)
M.drowsyness = max(0,M.drowsyness-5)
- M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal())
+ M.adjust_bodytemperature(-1 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal())
..()
/datum/reagent/consumable/crosstalk
@@ -416,7 +416,7 @@
M.dizziness +=1
M.drowsyness = 0
M.AdjustSleeping(-40)
- M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal())
+ M.adjust_bodytemperature(-1 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal())
..()
/datum/reagent/consumable/comet_trail
@@ -431,7 +431,7 @@
/datum/reagent/consumable/comet_trail/on_mob_life(mob/living/carbon/M)
M.drowsyness = max(0,M.drowsyness-7)
M.AdjustSleeping(-20)
- M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal())
+ M.adjust_bodytemperature(-1 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal())
M.Jitter(5)
..()
. = 1
@@ -447,7 +447,7 @@
/datum/reagent/consumable/tadrixx/on_mob_life(mob/living/carbon/M)
M.drowsyness = max(0,M.drowsyness-6)
- M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal())
+ M.adjust_bodytemperature(-1 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal())
..()
/datum/reagent/consumable/space_up
@@ -461,7 +461,7 @@
/datum/reagent/consumable/space_up/on_mob_life(mob/living/carbon/M)
- M.adjust_bodytemperature(-8 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal())
+ M.adjust_bodytemperature(-2 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal())
..()
/datum/reagent/consumable/molten
@@ -476,9 +476,9 @@
/datum/reagent/consumable/molten/on_mob_life(mob/living/carbon/M)
M.heal_bodypart_damage(1,1,0)
if(M.bodytemperature > M.get_body_temp_normal(apply_change=FALSE))
- M.adjust_bodytemperature(-10 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal(apply_change=FALSE))
+ M.adjust_bodytemperature(-2 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal(apply_change=FALSE))
else if(M.bodytemperature < (M.get_body_temp_normal(apply_change=FALSE) + 1))
- M.adjust_bodytemperature(10 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal(apply_change=FALSE))
+ M.adjust_bodytemperature(2 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal(apply_change=FALSE))
..()
/datum/reagent/consumable/molten/plasma_fizz
@@ -509,7 +509,7 @@
/datum/reagent/consumable/lemon_lime/on_mob_life(mob/living/carbon/M)
- M.adjust_bodytemperature(-8 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal())
+ M.adjust_bodytemperature(-2 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal())
..()
@@ -530,7 +530,7 @@
You feel as though a great secret of the universe has been made known to you...")
/datum/reagent/consumable/pacfuel/on_mob_life(mob/living/carbon/M)
- M.adjust_bodytemperature(-8 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal())
+ M.adjust_bodytemperature(-2 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal())
if(prob(10))
M?.mind.adjust_experience(/datum/skill/gaming, 5)
..()
@@ -545,7 +545,7 @@
glass_desc = "It's hard to imagine all those fruits getting condensed into a cup like this."
/datum/reagent/consumable/shoal_punch/on_mob_life(mob/living/carbon/M)
- M.adjust_bodytemperature(-8 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal())
+ M.adjust_bodytemperature(-2 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal())
..()
/datum/reagent/consumable/sodawater
name = "Soda Water"
@@ -559,7 +559,7 @@
/datum/reagent/consumable/sodawater/on_mob_life(mob/living/carbon/M)
M.dizziness = max(0,M.dizziness-5)
M.drowsyness = max(0,M.drowsyness-3)
- M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal())
+ M.adjust_bodytemperature(-1 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal())
..()
/datum/reagent/consumable/tonic
@@ -575,7 +575,7 @@
M.dizziness = max(0,M.dizziness-5)
M.drowsyness = max(0,M.drowsyness-3)
M.AdjustSleeping(-40)
- M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal())
+ M.adjust_bodytemperature(-1 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal())
..()
. = 1
@@ -594,7 +594,7 @@
M.dizziness +=1
M.drowsyness = 0
M.AdjustSleeping(-40)
- M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal())
+ M.adjust_bodytemperature(-1 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal())
..()
/datum/reagent/consumable/xeno_energy/on_mob_metabolize(mob/living/L)
@@ -617,7 +617,7 @@
glass_desc = "Generally, you're supposed to put something else in there, too..."
/datum/reagent/consumable/ice/on_mob_life(mob/living/carbon/M)
- M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal())
+ M.adjust_bodytemperature(-1 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal())
..()
/datum/reagent/consumable/soy_latte
@@ -639,7 +639,7 @@
M.dizziness = max(0,M.dizziness-5)
M.drowsyness = max(0,M.drowsyness-3)
M.SetSleeping(0)
- M.adjust_bodytemperature(5 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal())
+ M.adjust_bodytemperature(1 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal())
if(M.getBruteLoss() && prob(20))
M.heal_bodypart_damage(1,0, 0)
..()
@@ -664,7 +664,7 @@
M.dizziness = max(0,M.dizziness-5)
M.drowsyness = max(0,M.drowsyness-3)
M.SetSleeping(0)
- M.adjust_bodytemperature(5 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal())
+ M.adjust_bodytemperature(1 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal())
if(M.getBruteLoss() && prob(20))
M.heal_bodypart_damage(1,0, 0)
..()
@@ -788,7 +788,7 @@
glass_desc = "It's grape soda!"
/datum/reagent/consumable/grape_soda/on_mob_life(mob/living/carbon/M)
- M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal())
+ M.adjust_bodytemperature(-1 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal())
..()
/datum/reagent/consumable/milk/chocolate_milk
@@ -817,7 +817,7 @@
glass_desc = "A favorite winter drink from the Solar Confederation. Good for warming yourself up."
/datum/reagent/consumable/hot_coco/on_mob_life(mob/living/carbon/M)
- M.adjust_bodytemperature(5 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal())
+ M.adjust_bodytemperature(1 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal())
..()
/datum/reagent/consumable/hot_coco/on_mob_life(mob/living/carbon/M)
@@ -884,7 +884,7 @@
glass_desc = "A classic vanilla flavored soft drink."
/datum/reagent/consumable/cream_soda/on_mob_life(mob/living/carbon/M)
- M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal())
+ M.adjust_bodytemperature(-1 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal())
..()
/datum/reagent/consumable/sol_dry
diff --git a/code/modules/reagents/chemistry/reagents/food_reagents.dm b/code/modules/reagents/chemistry/reagents/food_reagents.dm
index 82bda376fc3c..8b06736dbce2 100644
--- a/code/modules/reagents/chemistry/reagents/food_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/food_reagents.dm
@@ -223,24 +223,24 @@
if(holder.has_reagent(/datum/reagent/consumable/capsaicin))
holder.remove_reagent(/datum/reagent/consumable/capsaicin, 5)
if(isslime(M))
- cooling = -rand(5,20)
+ cooling = -rand(1,2)
if(15 to 25)
cooling = -20 * TEMPERATURE_DAMAGE_COEFFICIENT
if(isslime(M))
- cooling = -rand(10,20)
+ cooling = -rand(2,4)
if(25 to 35)
cooling = -30 * TEMPERATURE_DAMAGE_COEFFICIENT
if(prob(1))
M.emote("shiver")
if(isslime(M))
- cooling = -rand(15,20)
+ cooling = -rand(4,8)
if(35 to INFINITY)
cooling = -40 * TEMPERATURE_DAMAGE_COEFFICIENT
if(prob(5))
M.emote("shiver")
if(isslime(M))
- cooling = -rand(20,25)
- M.adjust_bodytemperature(cooling, 50)
+ cooling = -rand(8,10)
+ M.adjust_bodytemperature(cooling, 10)
..()
/datum/reagent/consumable/frostoil/expose_turf(turf/T, reac_volume)
@@ -428,7 +428,7 @@
taste_description = "your imprisonment"
/datum/reagent/consumable/hot_ramen/on_mob_life(mob/living/carbon/M)
- M.adjust_bodytemperature(10 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal())
+ M.adjust_bodytemperature(1 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal())
..()
/datum/reagent/consumable/hell_ramen
@@ -439,7 +439,7 @@
taste_description = "wet and cheap noodles on fire"
/datum/reagent/consumable/hell_ramen/on_mob_life(mob/living/carbon/M)
- M.adjust_bodytemperature(10 * TEMPERATURE_DAMAGE_COEFFICIENT)
+ M.adjust_bodytemperature(1 * TEMPERATURE_DAMAGE_COEFFICIENT)
..()
/datum/reagent/consumable/flour
@@ -776,7 +776,7 @@
..()
/datum/reagent/consumable/pyre_elementum/on_mob_life(mob/living/carbon/M)
- M.adjust_bodytemperature(20 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal()) // Doesn't kill you like capsaicin
+ M.adjust_bodytemperature(2 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal()) // Doesn't kill you like capsaicin
if(!ingested) // Unless you didn't eat it
M.adjustFireLoss(0.25*REM, 0)
..()
diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm
index 1e37b9b1ee85..5715e7a0bd71 100644
--- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm
@@ -22,9 +22,9 @@
/datum/reagent/medicine/leporazine/on_mob_life(mob/living/carbon/M)
if(M.bodytemperature > M.get_body_temp_normal(apply_change=FALSE))
- M.adjust_bodytemperature(-40 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal(apply_change=FALSE))
+ M.adjust_bodytemperature(-4 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal(apply_change=FALSE))
else if(M.bodytemperature < (M.get_body_temp_normal(apply_change=FALSE) + 1))
- M.adjust_bodytemperature(40 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal(apply_change=FALSE))
+ M.adjust_bodytemperature(4 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal(apply_change=FALSE))
..()
/datum/reagent/medicine/adminordrazine //An OP chemical for admins
@@ -1857,7 +1857,7 @@
/datum/reagent/medicine/rhigoxane/on_mob_life(mob/living/carbon/M)
M.adjustFireLoss(-2*REM, 0.)
- M.adjust_bodytemperature(-20 * TEMPERATURE_DAMAGE_COEFFICIENT, M.dna.species.bodytemp_normal)
+ M.adjust_bodytemperature(-0.2 * TEMPERATURE_DAMAGE_COEFFICIENT, M.dna.species.bodytemp_normal)
..()
. = 1
@@ -1865,7 +1865,7 @@
if(method != VAPOR)
return
- M.adjust_bodytemperature(-reac_volume * TEMPERATURE_DAMAGE_COEFFICIENT * 20, 200)
+ M.adjust_bodytemperature(-reac_volume * TEMPERATURE_DAMAGE_COEFFICIENT * 0.5, 200)
M.adjust_fire_stacks(-reac_volume / 2)
if(reac_volume >= metabolization_rate)
M.ExtinguishMob()
@@ -1874,7 +1874,7 @@
/datum/reagent/medicine/rhigoxane/overdose_process(mob/living/carbon/M)
M.adjustFireLoss(3*REM, 0.)
- M.adjust_bodytemperature(-35 * TEMPERATURE_DAMAGE_COEFFICIENT, 50)
+ M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, 50)
..()
diff --git a/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm b/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm
index 14ded3b571f9..792831c37fd8 100644
--- a/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm
@@ -230,7 +230,7 @@
/datum/reagent/cryostylane/on_mob_life(mob/living/carbon/M) //TODO: code freezing into an ice cube
if(M.reagents.has_reagent(/datum/reagent/oxygen))
M.reagents.remove_reagent(/datum/reagent/oxygen, 0.5)
- M.adjust_bodytemperature(-15)
+ M.adjust_bodytemperature(-5)
..()
/datum/reagent/cryostylane/expose_turf(turf/T, reac_volume)
@@ -251,7 +251,7 @@
/datum/reagent/pyrosium/on_mob_life(mob/living/carbon/M)
if(M.reagents.has_reagent(/datum/reagent/oxygen))
M.reagents.remove_reagent(/datum/reagent/oxygen, 0.5)
- M.adjust_bodytemperature(15)
+ M.adjust_bodytemperature(5)
..()
/datum/reagent/teslium //Teslium. Causes periodic shocks, and makes shocks against the target much more effective.
diff --git a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm
index 6045779f6030..e1553a6dffcf 100644
--- a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm
@@ -132,7 +132,7 @@
if(holder.has_reagent(/datum/reagent/medicine/epinephrine))
holder.remove_reagent(/datum/reagent/medicine/epinephrine, 2*REM)
M.adjustPlasma(20)
- M.adjust_bodytemperature(-7 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal())
+ M.adjust_bodytemperature(-2 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal())
return ..()
/datum/reagent/toxin/lexorin
diff --git a/code/modules/reagents/chemistry/reagents/trickwine_reagents.dm b/code/modules/reagents/chemistry/reagents/trickwine_reagents.dm
index 434082d2f0ae..380c049adcb0 100644
--- a/code/modules/reagents/chemistry/reagents/trickwine_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/trickwine_reagents.dm
@@ -62,7 +62,7 @@
paralyze_dur = reac_volume
else
paralyze_dur = 50 + ((reac_volume - 50) / 4)
- M.adjust_bodytemperature((-20*reac_volume) * TEMPERATURE_DAMAGE_COEFFICIENT, 50)
+ M.adjust_bodytemperature((-1*reac_volume) * TEMPERATURE_DAMAGE_COEFFICIENT, 50)
M.Paralyze(paralyze_dur)
walk(M, 0) //stops them mid pathing even if they're stunimmunee
M.apply_status_effect(/datum/status_effect/ice_block_talisman, paralyze_dur)
diff --git a/code/modules/surgery/organs/lungs.dm b/code/modules/surgery/organs/lungs.dm
index e522449b7101..fabc1bb3ab26 100644
--- a/code/modules/surgery/organs/lungs.dm
+++ b/code/modules/surgery/organs/lungs.dm
@@ -53,18 +53,22 @@
var/gas_stimulation_min = 0.002 //Nitryl, Stimulum and Freon
var/cold_message = "your face freezing and an icicle forming"
- var/cold_level_1_threshold = 260
- var/cold_level_2_threshold = 200
- var/cold_level_3_threshold = 120
+ var/chilly_message = "chilly air"
+ var/chlly_threshold = T20C-7
+ var/cold_level_1_threshold = 240
+ var/cold_level_2_threshold = 220
+ var/cold_level_3_threshold = 200
var/cold_level_1_damage = COLD_GAS_DAMAGE_LEVEL_1 //Keep in mind with gas damage levels, you can set these to be negative, if you want someone to heal, instead.
var/cold_level_2_damage = COLD_GAS_DAMAGE_LEVEL_2
var/cold_level_3_damage = COLD_GAS_DAMAGE_LEVEL_3
var/cold_damage_type = BURN
var/hot_message = "your face burning and a searing heat"
- var/heat_level_1_threshold = 360
- var/heat_level_2_threshold = 400
- var/heat_level_3_threshold = 1000
+ var/warm_message = "warm air"
+ var/warm_threshold = T20C+10
+ var/heat_level_1_threshold = 316
+ var/heat_level_2_threshold = 323
+ var/heat_level_3_threshold = 343
var/heat_level_1_damage = HEAT_GAS_DAMAGE_LEVEL_1
var/heat_level_2_damage = HEAT_GAS_DAMAGE_LEVEL_2
var/heat_level_3_damage = HEAT_GAS_DAMAGE_LEVEL_3
@@ -85,7 +89,7 @@
damage_type = safe_damage_type
)
-/obj/item/organ/lungs/proc/check_breath(datum/gas_mixture/breath, mob/living/carbon/human/H)
+/obj/item/organ/lungs/proc/check_breath (datum/gas_mixture/breath, mob/living/carbon/human/H)
//TODO: add lung damage = less oxygen gains
var/breathModifier = (5-(5*(damage/maxHealth)/2)) //range 2.5 - 5
if(H.status_flags & GODMODE)
@@ -212,6 +216,8 @@
H.reagents.add_reagent(R, breath.get_moles(gas) * 2) // 2 represents molarity of O2, we don't have citadel molarity
mole_adjustments[gas] = (gas in mole_adjustments) ? mole_adjustments[gas] - breath.get_moles(gas) : -breath.get_moles(gas)
+ handle_smell(breath, H)
+
for(var/gas in mole_adjustments)
breath.adjust_moles(gas, mole_adjustments[gas])
@@ -298,6 +304,8 @@
if (gas_breathed > gas_stimulation_min)
H.reagents.add_reagent(/datum/reagent/hydrogen_chloride)
+ breath.adjust_moles(GAS_HYDROGEN_CHLORIDE, -gas_breathed)
+
// Carbon Monoxide
var/carbon_monoxide_pp = PP(breath,GAS_CO)
if (carbon_monoxide_pp > gas_stimulation_min)
@@ -327,6 +335,7 @@
if(monoxide_reagent)
monoxide_reagent.accumulation = min(monoxide_reagent.accumulation, 150)
monoxide_reagent.metabolization_rate = 10 //purges 10 per tick
+ breath.adjust_moles(GAS_CO, -gas_breathed)
// Sulfur Dioxide
var/sulfur_dioxide_pp = PP(breath,GAS_SO2)
@@ -344,6 +353,8 @@
if (gas_breathed > gas_stimulation_min)
H.reagents.add_reagent(/datum/reagent/sulfur_dioxide,1)
+ breath.adjust_moles(GAS_SO2, -gas_breathed)
+
// Ozone
var/ozone_pp = PP(breath,GAS_O3)
if (prob(ozone_pp))
@@ -358,6 +369,8 @@
if (gas_breathed > gas_stimulation_min)
H.reagents.add_reagent(/datum/reagent/ozone,1)
+ breath.adjust_moles(GAS_O3, -gas_breathed)
+
// Ammonia
var/ammonia_pp = PP(breath,GAS_AMMONIA)
if (prob(ammonia_pp)*2)
@@ -379,7 +392,7 @@
//ammonia is actually disposed of naturally by humans, but extremely poorly by non mammals, maybe we can make it toxic ONLY to certain species (plural) sometime?
H.reagents.add_reagent(/datum/reagent/ammonia,1)
- handle_smell(breath, H)
+ breath.adjust_moles(GAS_AMMONIA, -gas_breathed)
///handles the smell a few gases have
/obj/item/organ/lungs/proc/handle_smell(datum/gas_mixture/breath, mob/living/carbon/human/H)
@@ -436,35 +449,115 @@
H.failed_last_breath = TRUE
-/obj/item/organ/lungs/proc/handle_breath_temperature(datum/gas_mixture/breath, mob/living/carbon/human/H) // called by human/life, handles temperatures
+/obj/item/organ/lungs/proc/handle_breath_temperature(datum/gas_mixture/breath, mob/living/carbon/human/breather) // called by human/life, handles temperatures
+ if(!breath)
+ return
var/breath_temperature = breath.return_temperature()
- if(!HAS_TRAIT(H, TRAIT_RESISTCOLD)) // COLD DAMAGE
- var/cold_modifier = H.dna.species.coldmod
+ if(!HAS_TRAIT(breather, TRAIT_RESISTCOLD)) // COLD DAMAGE
+ var/cold_modifier = breather.dna.species.coldmod
+ var/breath_effect_prob = 0
+ var/part_count = 0
if(breath_temperature < cold_level_3_threshold)
- H.apply_damage_type(cold_level_3_damage*cold_modifier, cold_damage_type)
+ breather.apply_damage(cold_level_3_damage * cold_modifier, cold_damage_type, spread_damage = TRUE)
+ breath_effect_prob = 100
+ part_count = 8
if(breath_temperature > cold_level_3_threshold && breath_temperature < cold_level_2_threshold)
- H.apply_damage_type(cold_level_2_damage*cold_modifier, cold_damage_type)
+ breather.apply_damage(cold_level_2_damage * cold_modifier, cold_damage_type, spread_damage = TRUE)
+ breath_effect_prob = 75
+ part_count = 5
if(breath_temperature > cold_level_2_threshold && breath_temperature < cold_level_1_threshold)
- H.apply_damage_type(cold_level_1_damage*cold_modifier, cold_damage_type)
- if(breath_temperature < cold_level_1_threshold)
- if(prob(20))
- to_chat(H, "You feel [cold_message] in your [name]!")
+ breather.apply_damage(cold_level_1_damage * cold_modifier, cold_damage_type, spread_damage = TRUE)
+ breath_effect_prob = 50
+ part_count = 3
+ if(breath_temperature > cold_level_1_threshold)
+ breath_effect_prob = 25
+ part_count = 2
- if(!HAS_TRAIT(H, TRAIT_RESISTHEAT)) // HEAT DAMAGE
- var/heat_modifier = H.dna.species.heatmod
+ if(breath_temperature < cold_level_1_threshold)
+ if(prob(sqrt(breath_effect_prob) * 6))
+ to_chat(breather, "You feel [cold_message] in your [name]!")
+ else if(breath_temperature < chlly_threshold)
+ if(!breath_effect_prob)
+ breath_effect_prob = 20
+ part_count = 1
+ if(prob(sqrt(breath_effect_prob) * 6))
+ to_chat(breather, "You feel [chilly_message] in your [name].")
+ if(breath_temperature < chlly_threshold)
+ if(breath_effect_prob)
+ // Breathing into your mask, no particle. We can add fogged up glasses later
+ if(breather.is_mouth_covered())
+ return
+ // Even though breathing via internals TECHNICALLY exhales into the environment, we'll still block it
+ if(breather.internal)
+ return
+ emit_breath_particle(breather, /particles/fog/breath, part_count)
+
+ if(!HAS_TRAIT(breather, TRAIT_RESISTHEAT)) // HEAT DAMAGE
+ var/heat_modifier = breather.dna.species.heatmod
+ var/heat_message_prob = 0
if(breath_temperature > heat_level_1_threshold && breath_temperature < heat_level_2_threshold)
- H.apply_damage_type(heat_level_1_damage*heat_modifier, heat_damage_type)
+ breather.apply_damage(heat_level_1_damage * heat_modifier, heat_damage_type, spread_damage = TRUE)
+ heat_message_prob = 100
if(breath_temperature > heat_level_2_threshold && breath_temperature < heat_level_3_threshold)
- H.apply_damage_type(heat_level_2_damage*heat_modifier, heat_damage_type)
+ breather.apply_damage(heat_level_2_damage * heat_modifier, heat_damage_type, spread_damage = TRUE)
+ heat_message_prob = 75
if(breath_temperature > heat_level_3_threshold)
- H.apply_damage_type(heat_level_3_damage*heat_modifier, heat_damage_type)
+ breather.apply_damage(heat_level_3_damage * heat_modifier, heat_damage_type, spread_damage = TRUE)
+ heat_message_prob = 50
if(breath_temperature > heat_level_1_threshold)
- if(prob(20))
- to_chat(H, "You feel [hot_message] in your [name]!")
+ heat_message_prob = 25
+
+ if(breath_temperature > heat_level_1_threshold)
+ if(prob(sqrt(heat_message_prob) * 6))
+ to_chat(breather, "You feel [hot_message] in your [name]!")
+ else if(breath_temperature > warm_threshold)
+ if(!heat_message_prob)
+ heat_message_prob = 20
+ if(prob(sqrt(heat_message_prob) * 6))
+ to_chat(breather, "You feel [warm_message] in your [name].")
+
+
// The air you breathe out should match your body temperature
- breath.set_temperature(H.bodytemperature)
+ breath.set_temperature(breather.bodytemperature)
+
+/// Creates a particle effect off the mouth of the passed mob.
+/obj/item/organ/lungs/proc/emit_breath_particle(mob/living/carbon/human/breather, particle_type, part_count)
+ ASSERT(ispath(particle_type, /particles))
+
+ var/obj/effect/abstract/particle_holder/holder = new(breather, particle_type)
+ var/particles/breath_particle = holder.particles
+ var/breath_dir = breather.dir
+
+ var/list/particle_grav = list(0, 0.1, 0)
+ var/list/particle_pos = list(0, 10, 0)
+ if(breath_dir & NORTH)
+ particle_grav[2] = 0.2
+ breath_particle.rotation = pick(-45, 45)
+ // Layer it behind the mob since we're facing away from the camera
+ holder.pixel_w -= 4
+ holder.pixel_y += 4
+ if(breath_dir & WEST)
+ particle_grav[1] = -0.2
+ particle_pos[1] = -5
+ breath_particle.rotation = -45
+ if(breath_dir & EAST)
+ particle_grav[1] = 0.2
+ particle_pos[1] = 5
+ breath_particle.rotation = 45
+ if(breath_dir & SOUTH)
+ particle_grav[2] = 0.2
+ breath_particle.rotation = pick(-45, 45)
+ // Shouldn't be necessary but just for parity
+ holder.pixel_w += 4
+ holder.pixel_y -= 4
+
+ breath_particle.gravity = particle_grav
+ breath_particle.position = particle_pos
+ breath_particle.count = part_count
+
+ QDEL_IN(holder, breath_particle.lifespan)
/obj/item/organ/lungs/on_life()
. = ..()
diff --git a/code/modules/surgery/organs/vocal_cords.dm b/code/modules/surgery/organs/vocal_cords.dm
index 3ec636e41b5f..4c69dd532a89 100644
--- a/code/modules/surgery/organs/vocal_cords.dm
+++ b/code/modules/surgery/organs/vocal_cords.dm
@@ -288,14 +288,14 @@
cooldown = COOLDOWN_DAMAGE
for(var/V in listeners)
var/mob/living/L = V
- L.adjust_bodytemperature(50 * power_multiplier)
+ L.adjust_bodytemperature(5 * power_multiplier)
//COLD
else if((findtext(message, cold_words)))
cooldown = COOLDOWN_DAMAGE
for(var/V in listeners)
var/mob/living/L = V
- L.adjust_bodytemperature(-50 * power_multiplier)
+ L.adjust_bodytemperature(-5 * power_multiplier)
//REPULSE
else if((findtext(message, repulse_words)))
diff --git a/icons/effects/particles/smoke.dmi b/icons/effects/particles/smoke.dmi
index 4a3239499b96..99123beeb59a 100644
Binary files a/icons/effects/particles/smoke.dmi and b/icons/effects/particles/smoke.dmi differ
diff --git a/icons/hud/screen_alert.dmi b/icons/hud/screen_alert.dmi
index 99de0dbf9441..6e12eadc662b 100644
Binary files a/icons/hud/screen_alert.dmi and b/icons/hud/screen_alert.dmi differ