Implement NPC perception, returning trespassers, responder dispatch, wand screening, and accessibility polish
CI / headless-tests (push) Successful in 2m11s

This commit is contained in:
zwitschi committed 2026-10-31 12:31:13 +01:00
1 parent 439e0a4281
commit 81b5d5ce5a
22 files changed
+879 -73

No files matched your search

+24
View File
@@ -125,6 +125,7 @@ static func shared_profiles() -> Array[NpcProfile]:
trespasser.npc_type = Rules.NpcType.TRESPASSER
trespasser.temperament = 0.55
trespasser.base_compliance = 0.35
trespasser.return_probability = 0.6
trespasser.reactions_by_level = {
Rules.Level.SIMPLE_DETERRENCE: {
Rules.Reaction.IGNORE: 45,
@@ -166,6 +167,7 @@ static func shared_profiles() -> Array[NpcProfile]:
mental_crisis.npc_type = Rules.NpcType.MENTAL_CRISIS
mental_crisis.temperament = 0.7
mental_crisis.base_compliance = 0.3
mental_crisis.return_probability = 0.4
mental_crisis.reaction_delay = 2.4
mental_crisis.reactions_by_level = {
Rules.Level.SIMPLE_DETERRENCE: {
@@ -351,6 +353,28 @@ static func joke_shop() -> VenueScenario:
"door_area": Vector3(0, 0, 3),
"queue_area": Vector3(0, 0, 9),
}
scenario.door_staff_lines = {
"id_check": [
"May I see your ID, please?",
"Could you show me some identification?",
],
"ticket_check": [
"Your ticket or reservation, please.",
"Do you have a ticket for tonight's show?",
],
"wand_check": [
"Please step forward for the wand check.",
"Arms out, please — just a quick screening.",
],
"refusal": [
"I'm sorry, I can't let you in without that.",
"Without a valid ID, I can't admit you tonight.",
],
"prohibited_item": [
"I can't allow that item inside. Please leave it outside.",
"That item isn't permitted in the venue.",
],
}
scenario.shift_phases = {
Rules.Phase.EARLY: {"start_s": 0.0},