P2 stone: stonecutter, cut stone, stone floors/walls/pillars/stairs/windows/doorway, hearth; wooden stairs, windows, posts, palisade and gate; stone support rules
This commit is contained in:
@@ -73,6 +73,9 @@ func balanced_diet() -> bool:
|
||||
return false
|
||||
return true
|
||||
|
||||
var stone_room := false ## sheltered by mostly stone walls (P2): a little warmer
|
||||
const STONE_ROOM_WARMTH := 6.0
|
||||
|
||||
var player: Node3D ## the local player, or a server_player.gd on a server
|
||||
var world: Node3D
|
||||
var _stamina_wait := 0.0
|
||||
@@ -92,6 +95,7 @@ func step(dt: float) -> void:
|
||||
_shelter_left = 0.25
|
||||
roofed = world.build.roofed_at(p)
|
||||
sheltered = roofed and world.build.enclosure_at(p) >= 0.74
|
||||
stone_room = sheltered and world.build.stone_walls_at(p) >= 0.5
|
||||
# Rain soaks you unless there's a roof over your head.
|
||||
if not roofed and world.weather.rain_at(p) > 0.25:
|
||||
wet = WET_SECONDS
|
||||
@@ -105,6 +109,8 @@ func step(dt: float) -> void:
|
||||
rested = maxf(rested - dt, 0.0)
|
||||
var wear: Dictionary = ItemDB.get_item(player.worn).get("wear", {}) if not player.worn.is_empty() else {}
|
||||
var target: float = world.air_warmth(p, sheltered) + heat * 70.0 + float(wear.get("warmth", 0.0))
|
||||
if stone_room:
|
||||
target += STONE_ROOM_WARMTH
|
||||
if wet > 0.0:
|
||||
target -= 22.0 * float(wear.get("wet_chill", 1.0))
|
||||
wet = maxf(wet - dt * (3.0 if heat > 0.3 else 1.0), 0.0) # fires dry you off
|
||||
|
||||
Reference in New Issue
Block a user