Search the Community
Showing results for tags 'freezing'.
Found 4 results
My first non-beefalo forums guide! I've been doing a lot of research about winter temperature, thermal stone, insulation, etc via testing and looking through code and I now have too much knowledge and power that I must release through forums. Now updated with insulation and heat source comparison tables! How to properly warm up thermal stones Since most of y'all won't give up your rock no matter what possibly better options I present, might as well learn to use them properly. The only realistic ways to warm up a thermal stone to it's max of 90 degrees is burning trees and lava ponds. A 4 furnace set up can also warm them up to a good 80 degrees. Most people keep the stone on them and warm themselves up until they overheat. Don't do it this way. YOUR temperature doesn't impact the thermal stone, and by the time you're overheating the thermal stone still can use more time. For every extra second you can heat your stone you'll get 5 seconds of warmth. Set it on the ground right next to the burning tree when you're warming it up. 1 tree won't burn long enough either, you'll want to burn a second one afterwards. A 90 degree thermal stone should last about 8.5 minutes. Wearing insulation clothing won't help an orange or yellow thermal stone. But when the thermal stone runs out, you will have about 20 degrees left which you can get some value out of with insulation. If you're wearing a tam it'll give you another ~80 seconds at the end and therefore more of a warning before you start freezing. You could even pop on a beefalo hat right before your thermal runs out to give you an extra ~160 seconds. How to properly warm up without thermal stones Insulation clothing is amazing. It's really simple and straightforward, and can stack to last a really long time. A beefalo hat gives you 9 seconds of warmth for each second you warm yourself up, keeping you warm for up to 10.5 minutes! A beefalo hat + puffy/hibearnation vest gives you 17 seconds for each second you warm up, lasting almost 2.5 days if you overheat! Not to mention characters with beards getting even more. I especially like using insulated clothing on a beefalo because you often don't have as much competition for the equip slots. IMO, clothing easily wins over pet rocks if you're not switching or bundling them. Insulation Comparison/Cheatsheet/Whatever Bundling and Switching Thermals and Sunfish Bundling thermals is amazing. They won't cool down while bundled. Bundle them at max temperature or close to it and when 1 runs out swap it with a fresh hot stone in the bundle or your 4 furnace heating station if you're nearby. However, scorching sunfish are even better! You'll have to go sea fishing in summer and catch one. Each one lives for 2.66 days in winter in an insulated pack, and they keep you warm as long as they're alive with no complications. Swap the fish with a fresh one in your bundle or in your tin fishin bin if you're nearby. You theoretically can also use thermal stones or sunfish to warm up, then bundle them and use double clothing to stay warm for a while, and repeat to theoretically last the whole winter without needing to go to base to switch or stop to warm up. But you need multiple thermals or ideally sunfish (warmer) in your inventory to warm up to a decent temperature, and at that point you might as well just do the above. Hot Food This is obviously not generally recommended but it is technically viable. Living off of spicy chili (2 per day) with double clothing gives you exactly enough warmth and hunger to survive! Also 2 warly chili spiced foods a day work the same and is exactly enough to give you a perma 20% damage boost. And of course there's hot dragon chili salad that can actually keep you warm. Everything else loses it's heat over time if you're wearing an insulated pack and you can't wear a hibearnation vest if you're wearing an insulated pack. EDIT: apparently spicy chili is also susceptible to losing it's heat over time. So only Warly's chili spiced dishes or hot dragon chili salad is reasonably doable because of this. Heat source comparison table MECHANICS IF YOU'RE INTERESTED World Temperature In winter, the world temperature is around -20 degrees, but it can dip to -30 and even beyond during night. Generally, the player temperature (and thermal stone temp) is trying to match the world temperature. Player Temperature While above 70 degrees, you take 1.25 overheating damage each second, and the warning for this of orange color around your screen happens once you reach 65 degrees. At 5 degrees, frozen marks appear as a warning, and below 0 degrees you take 1.25 freezing damage each second. Thermal Stone Temperature The thermal stone also has it's own internal temperature, actually separate from the temperature of the heat it emits. It has a range of -20 to 90 degrees. It turns yellow when it cools to 30 degrees above the world temperature (~10 degrees). And turns white when it cools to 10 degrees above world temp (around -10 degrees). This means the thermal stone actually stays yellow a bit longer while world temp is lower, and during the very middle of the winter night when world temp is just under -30 degrees, it can't even run out because it can't go below -20 degrees. While orange it keeps you at around 35 degrees and while yellow it keeps you around 20 degrees (a fixed temperature throughout each stage, not directly dependent on it's own temp). It works exactly the same as a player with 120 insulation in terms of warming up and cooling down. Warming up While within 2.5 tiles of a heat source (fires, hot thermal stones, burning trees, etc), the heat source can warm players and thermal stones. While above 0 degrees, the player is always warmed 1 degree per second (5 degrees per second when freezing/below 0 degrees). The maximum temperature that the heat source can warm the player to is determined by world temperature, distance to the heat source, and how hot said heat source is. The way this is calculated seems weird and inconsistent so I'm leaving this for @Hornete to figure out. EDIT: A few notes about thermal stones: they act as 2.1x weaker heat sources when on the ground instead of in your inventory, and thermal stones can't warm other thermal stones for obvious reasons. Oh and they don't warm up faster on the ground, idk where that myth came from. In this VERY technical and thorough post I explain how to calculate the temperature that heat source(s) can warm a player or thermal stones to. But here are some actually potentially useful notes: With additional heat sources, you're not only warmed to a higher temperature, but it's a more consistent temperature because ambient temp shifts have less of an effect. So lets say ambient temperature decreases by 15 degrees. 1 furnace would be able to heat you up 7.5 degrees less. 2 furnaces would lose 5 degrees. And with 4 furnaces, players and thermal stones would only lose 3 degrees of what they could otherwise get to with a higher ambient temp. The heat thermal stones emit in your inventory is also less based on ambient temp, and therefore more consistent. How close you are to the heat source has a pretty negligible effect as long as you stay within a couple units of it; there's very little difference between being directly on the heat source (which you can't do with many) and being 1 or 2 units next to it. Cooling down While not near a heat source during winter, players and thermal stones cool down at a rate determined by insulation. This loss is very straightforward and easy to calculate. Just add 30 to your total insulation and divide by 30 (willow and wes also have -30 insulation with clothing). This value is how many seconds it takes to lose 1 degree. So a thermal stone or player wearing winter hat loses 1 degree every 5 seconds (120+30)/30. A fully bearded Wilson with a beefalo hat and hibearnation/puffy vest loses 1 degree every 21.5 seconds (135+240+240+30)/30 lasting over 3 days.
Here I will walk through the code and explain how to calculate the exact temperature any combination of any number of heating and/or cooling sources, on the ground or in your inventory, at any distance, wet or dry, in any world ambient temperature, etc, can warm players and/or thermal stones. So first, it's important to understand the "self.delta" variable in the temperature.lua script. It's calculated every frame and can be almost any number. It starts as the ambient temperature subtracted by the player temp with possibly a couple other modifiers, and then the game goes through every single nearby heat source and cooling source within a 10 unit (2.5 tile) radius and each of these add or subtract to the self.delta. It will often end up with some crazy number but more or less all that matters to the game at the moment is if it's positive or negative. The delta mostly just determines whether the player will be warmed, cooled, or stay about the same temperature. But I've figured out an easy way to use it to calculate how much the nearby heat sources can warm/cool the player to, too. Before nearby heat sources are calculated or when there aren't any, this is what self.delta is: self.delta = ambient_temperature + self.totalmodifiers + self:GetMoisturePenalty() - self.current Unless you're wet or under the effect of fire nettles, you can ignore self.totalmodifiers and self:GetMoisturePenalty() to simplify it to just the ambient temperature minus the player temperature. With fire nettles, add 60. I'm doing a simple example in winter. Let's say ambient temp is -20 degrees and the player's temperature is currently 0 degrees. self.delta = -20 + 0 + 0 - 0 self.delta = -20 Every warming and cooling source has a "heat" in the code. You can also find them on the wiki pages for freezing and overheating or asking me. I'm using the scaled furnace which has a "heat" of 115 degrees. local heat = v.components.heater:GetHeat() --Get the heat of the heat source heat = 115 Next, heatfactor is calculated based on the distance to the center of the heat source. A player standing right next to a scaled furnace is 1 unit (wall unit) away from it's center. This distance is squared so if you were 2 units away the DistanceSquared would be 4. But 1 squared is still 1. local heatfactor = 1 - DistanceSquared_To_Player / 100 heatfactor = 1 - 1 / 100 heatfactor = 0.99 Next the heatfactor is multiplied by the heat of the heat source. In this case the heatfactor only reduces the heat by 1% but if you were, say, 7 units away it would be a 49% reduction. local warmingtemp = heat * heatfactor --multiply the heat factor and the heat warmingtemp = 115 * 0.99 warmingtemp = 113.85 Things are slightly different with a cooling source, however, because it has to be based around the overheat temperature of 70 degrees. This doesn't have to be done with warming because the freezing temp is 0 degrees. local coolingtemp = (heat - self.overheattemp) * heatfactor + self.overheattemp --selfoverheattemp = 70 Back to the scaled furnace. The warmingtemp of 113.85 is definitely higher than the player temperature of 10 degrees so this next "if" statement is passed. Of course with a coolingtemp, it has to be less than the player temp. if warmingtemp > self.current then --If the warming temperature is higher than the current player temperature, do this -- 113.85 > 0 -- Endothermic heat sources if coolingtemp < self.current then But now self.delta is being warmed by warmingtemp subtracted again by self.current. Thermal stones in your inventory also have a 2.1x multiplier, and scorching sunfish a 2x multiplier to (warmingtemp - currenttemp) in the form of carriedmult. But for a scaled furnace, we ignore this value. And the formula is the exact same for a coolingtemp, by the way. self.delta = self.delta + (warmingtemp - self.current) * carriedmult --carriedmult only for heat sources in your inventory, ignore it otherwise self.delta = -20 + (113.85 - 0) self.delta = 93.85 So with just 1 scaled furnace nearby, self.delta is 93.85 degrees. Obviously a scaled furnace can't warm you that high during winter. So what we have to do is divide it by 2. That's because the player temperature is actually being subtracted from self.delta twice in total; once in the beginning calculation and once subtracted from the scaled furnace's warmingtemp here. With a second valid heat source, we'd divide by 3. 93.85 / 2 = 46.93 degrees But what if there was also say, a level 1 (small) endothermic fire nearby? It has a heat of -10 degrees. It's 3 units away from the player so the heatfactor would look like this: local heatfactor = 1 - DistanceSquared_To_Player / 100 heatfactor = 1 - 9 / 100 heatfactor = 0.91 This heatfactor is used to calculate the coolingtemp like so. local coolingtemp = (heat - self.overheattemp) * heatfactor + self.overheattemp coolingtemp = (-10 - 70) * 0.91 + 70 coolingtemp = -2.8 And this is added to self.delta along with the players temperature being subtracted--self.delta starts equal to 83.85 because of the scaled furnace --self.delta starts equal to 93.85 because of the scaled furnace self.delta = self.delta + coolingtemp - self.current self.delta = 93.85 + (-2.8 - 0) self.delta = 91.05 The delta only decreased by like 2 degrees, but that's misleading. Now, the player is only warmed to about 30 degrees instead of 47. For every additional valid heat source, increase the number you're dividing by, by 1. For thermal stones and scorching sunfish in your inventory, this number is actually instead increased by 2.1 and 2 respectively. So with a scaled furnace + thermal in inventory, you'd divide the self.delta by 3.1. 91.05 / 3 = 30.35 --max temp a scaled furnace + small endo fire can warm you to in winter NOTE: If a heat source's warming temp is less than the temperature that the other nearby heat sources can warm you to, or if a cooling temp is greater than this temperature, IGNORE it. For example, a thermal stone has a "heat" of 60 degrees. If other nearby heat sources can warm you past 60 degrees, the thermal stone does nothing. if warmingtemp > self.current then self.delta = self.delta + warmingtemp - self.current end if coolingtemp < self.current then self.delta = self.delta + coolingtemp - self.current end WETNESS is actually pretty straightforward??? When the player is wet, self.delta is decreased by up to 30 based on the wetness level. It's just the percentage of your wetness as a decimal multiplied by -30. So 100 wetness is -30 and 50 wetness is -15. When there aren't any heat sources nearby, this effectively decreases the world temp for the player by (up to) 30 degrees. The heatfactor (the decimal value reducing the effectiveness of the heat source) is multiplied by 0.75 if the heat source player is wet. So if a wet player is 4 units away from a heat source, the heatfactor is 0.63. Thank you for correction hornet. local heatfactor = 1 - self.inst:GetDistanceSqToInst(v) / ZERO_DISTSQ heatfactor = 1 - 16/100 --4 unit distance heatfactor = 0.84 * 0.75 --wetness penalty heatfactor = 0.63 OTHER NOTES for the 3 people that made it to the end of this in one piece... Ambient temp and world temp are the same thing and I used them interchangeably I said "player temp" but what would be more accurate is "player or thermal stone temp". Thermal stone's internal temperature works exactly like a player's. And this can be used to calculate how high heat source(s) raise a thermal stone's temperature as well. The only difference is that thermal stones can NOT warm other thermal stones for obvious reasons. So ignore those heat sources when calculating a thermal stone's temperature. @Hornete is evil but thanks for explaining things to me even through your 3+ mental breakdowns If you actually find this useful or are curious about it for some reason feel free to ask any questions here or on the discord Definitely good that I'm making this into a seperate post instead of a giant spoiler on my winter warmth strat post
^ title. Can't find it! In temperature.lua, the overheating threshold is "self.overheattemp" and is declared as "TUNING.OVERHEAT_TEMP" (which in tuning is declared as 70). But neither in tuning nor in temperature.lua can I find any variable that defines the freezing temperature threshold. Anyone has any ideas? Oh, and, I also couldn't find where the overheating and freezing warning temperatures are declared. For freezing it's 5 and for overheating it's 65 or something along the lines, but I can't find it anywhere