P4 hazards: food spoilage with rot speed setting, smoking rack and salt, food poisoning, harsher blizzards, hard winters with lake ice, lightning on trees, snow on roofs (protocol 11)
This commit is contained in:
@@ -116,6 +116,13 @@ static func build(key: String) -> ArrayMesh:
|
||||
"bear_fat": m = _pebble(271, Color(0.92, 0.86, 0.68), Vector3(0.1, 0.06, 0.08), 0.1)
|
||||
"fur_rug": m = _rug()
|
||||
"barrow_key": m = _barrow_key()
|
||||
"rotten_food": m = _pebble(321, Color(0.33, 0.3, 0.16), Vector3(0.11, 0.06, 0.1), 0.45)
|
||||
"salt": m = _salt()
|
||||
"smoking_rack": m = _smoking_rack()
|
||||
"smoked_meat": m = _meat(Color(0.36, 0.17, 0.1))
|
||||
"salted_meat": m = _meat(Color(0.68, 0.42, 0.38))
|
||||
"smoked_fish": m = _fish(Color(0.72, 0.5, 0.22), 0.2, true)
|
||||
"salted_fish": m = _fish(Color(0.75, 0.73, 0.66), 0.2, false)
|
||||
"berry_bush": m = _berry_bush(true)
|
||||
"berry_bush_bare": m = _berry_bush(false)
|
||||
_:
|
||||
@@ -1019,3 +1026,39 @@ static func _barrow_key() -> ArrayMesh:
|
||||
_box(st, c + Vector3(0, 0.02, 0), Vector3(w, 0.04, 0.12), P._mul(Color(0.45, 0.46, 0.44), r.randf_range(0.9, 1.05)), Basis(Vector3.UP, (a0 + a1) * 0.5))
|
||||
_box(st, Vector3(0, 0.042, 0.1), Vector3(0.1, 0.006, 0.02), Color(0.82, 0.8, 0.7))
|
||||
return P._commit(st)
|
||||
|
||||
# --- P4 food keeping ---------------------------------------------------------------------
|
||||
|
||||
## A crust of white salt crystals.
|
||||
static func _salt() -> ArrayMesh:
|
||||
var st := P._begin()
|
||||
var r := _rng(331)
|
||||
for i in range(7):
|
||||
var c := Vector3(r.randf_range(-0.07, 0.07), 0.02, r.randf_range(-0.06, 0.06))
|
||||
_box(st, c, Vector3.ONE * r.randf_range(0.025, 0.05), P._mul(Color(0.93, 0.93, 0.9), r.randf_range(0.9, 1.05)),
|
||||
Basis(Vector3(r.randf(), r.randf(), r.randf()).normalized(), r.randf() * TAU))
|
||||
return P._commit(st)
|
||||
|
||||
## Two forked posts with a crossbar, strips of meat hanging from it, embers
|
||||
## below. The fire sits at the origin.
|
||||
static func _smoking_rack() -> ArrayMesh:
|
||||
var st := P._begin()
|
||||
var r := _rng(333)
|
||||
var n := FastNoiseLite.new()
|
||||
n.seed = 333
|
||||
for sx in [-0.7, 0.7]:
|
||||
P._cylinder(st, Vector3(sx, 0.0, 0), Vector3(sx, 1.35, 0), 0.05, 0.04, 6, P.BARK, r, -1.0, PLANK)
|
||||
P._cylinder(st, Vector3(sx, 1.25, 0), Vector3(sx + 0.08 * signf(sx), 1.45, 0), 0.03, 0.02, 4, P.BARK, r)
|
||||
P._cylinder(st, Vector3(-0.8, 1.32, 0), Vector3(0.8, 1.32, 0), 0.035, 0.035, 6, P.BARK, r, -1.0, PLANK)
|
||||
for i in range(5):
|
||||
var x := -0.48 + 0.24 * i
|
||||
_box(st, Vector3(x, 1.12, 0), Vector3(0.12, 0.32 + 0.06 * sin(i * 2.1), 0.03), P._mul(Color(0.42, 0.18, 0.12), r.randf_range(0.8, 1.1)))
|
||||
for i in range(6):
|
||||
var a := TAU * i / 6.0
|
||||
P._blob(st, Vector3(cos(a) * 0.32, 0.05, sin(a) * 0.32), Vector3(0.1, 0.07, 0.09), n, 0.3, STONE, r, 1)
|
||||
P._blob(st, Vector3(0, 0.03, 0), Vector3(0.24, 0.035, 0.24), n, 0.2, ASH, r, 1)
|
||||
for i in range(3):
|
||||
var a := 0.9 * i
|
||||
var d := Vector3(cos(a), 0, sin(a)) * 0.18
|
||||
P._cylinder(st, Vector3(0, 0.06, 0) - d, Vector3(0, 0.06, 0) + d, 0.035, 0.035, 5, P.BARK, r, -1.0, CHARCOAL)
|
||||
return P._commit(st)
|
||||
|
||||
Reference in New Issue
Block a user