P3 alpha: wolf moon every 7th night, the alpha breaks wooden doors, iron-banded door, broken-door repair, alpha pelt and cloak (protocol 7)

This commit is contained in:
Paul Bailey
2026-11-05 01:40:52 +00:00
parent 411bfef34a
commit fc58c8d0e1
18 changed files with 742 additions and 40 deletions

View File

@@ -106,6 +106,12 @@ static func build(key: String) -> ArrayMesh:
"palisade": m = _palisade()
"palisade_gate": m = _palisade_gate(true)
"palisade_gate_frame": m = _palisade_gate(false)
"iron_door": m = _iron_door(true)
"iron_door_frame": m = _door(false)
"iron_door_panel": m = _iron_door(false)
"alpha_pelt": m = _pelt(ALPHA_FUR)
"alpha_cloak": m = _cloak(ALPHA_FUR)
"wolf_fang": m = _fang()
"berry_bush": m = _berry_bush(true)
"berry_bush_bare": m = _berry_bush(false)
_:
@@ -937,3 +943,39 @@ static func _palisade_gate(with_panel: bool) -> ArrayMesh:
if with_panel:
_door_panel_into(st, Vector3(-0.54, 0, 0))
return P._commit(st)
# --- P3 the alpha ------------------------------------------------------------------
const ALPHA_FUR := Color(0.17, 0.16, 0.17)
## Iron-banded door: the wooden leaf with three iron straps and studs.
## `in_frame` = the closed door in a wood frame (icon and ghost); otherwise
## just the leaf, hinge at the origin.
static func _iron_door(in_frame: bool) -> ArrayMesh:
var st := P._begin()
var o := Vector3.ZERO
if in_frame:
var r := _rng(79)
for side in [-1.0, 1.0]:
_wall_body(st, r, side * 0.55 if side > 0 else -0.84, 0.84 if side > 0 else -0.55, 0.1, 1.9)
_box(st, Vector3(side * 0.92, 1.0, 0), Vector3(0.16, 2.0, 0.2), BEAM)
_box(st, Vector3(side * 0.6, 0.95, 0), Vector3(0.1, 1.9, 0.2), BEAM)
_box(st, Vector3(0, 1.95, 0), Vector3(1.68, 0.1, 0.2), BEAM)
o = Vector3(-0.54, 0, 0)
var rr := _rng(251)
for i in range(4):
_box(st, o + Vector3(0.135 + 0.27 * i, 0.95, 0), Vector3(0.26, 1.86, 0.08), _board(rr, PLANK_DARK))
for y in [0.3, 0.95, 1.6]:
for z in [0.05, -0.05]:
_box(st, o + Vector3(0.54, y, z), Vector3(1.04, 0.1, 0.02), IRON)
for i in range(4):
_box(st, o + Vector3(0.14 + 0.27 * i, y, z * 1.4), Vector3(0.03, 0.03, 0.02), IRON_BRIGHT)
_box(st, o + Vector3(0.95, 1.0, 0.08), Vector3(0.06, 0.16, 0.05), IRON_BRIGHT)
_box(st, o + Vector3(0.95, 1.0, -0.08), Vector3(0.06, 0.16, 0.05), IRON_BRIGHT)
return P._commit(st)
static func _fang() -> ArrayMesh:
var st := P._begin()
var r := _rng(253)
P._cylinder(st, Vector3(0, 0.02, 0), Vector3(0.02, 0.02, -0.12), 0.022, 0.003, 6, Color(0.88, 0.82, 0.62), r, -1.0, Color(0.6, 0.45, 0.35))
return P._commit(st)