8a955f3c29
ProfessionDefinition gains schedule_offset (-0.12 to +0.12 fraction of day). ActionSelectionSystem shifts each NPC's effective time_of_day by their profession offset before determining sleep/meal/work periods. Farmers wake earliest (-0.04h = ~2:38am), woodcutters slightly early (-0.02h), guards slightly late (+0.02h), scholars latest (+0.05h = ~5:45am). Wanderers have no offset. The village now has naturally staggered rhythms instead of everyone doing the same thing at the same time.
20 lines
626 B
GDScript
20 lines
626 B
GDScript
class_name ProfessionDefinition
|
|
extends Resource
|
|
|
|
@export var profession_id: StringName
|
|
@export var display_name: String
|
|
@export var visual_color := Color.WHITE
|
|
@export var prop_color := Color(0.35, 0.25, 0.15, 1.0)
|
|
@export_range(-0.12, 0.12, 0.005) var schedule_offset := 0.0
|
|
|
|
|
|
func validate() -> Array[String]:
|
|
var errors: Array[String] = []
|
|
if profession_id.is_empty():
|
|
errors.append("profession_id is empty")
|
|
if display_name.is_empty():
|
|
errors.append("display_name is empty for '%s'" % profession_id)
|
|
if visual_color.a <= 0.0:
|
|
errors.append("visual_color is transparent for '%s'" % profession_id)
|
|
return errors
|