[gd_resource type="Resource" script_class="VenueScenario" format=3] [ext_resource type="Script" path="res://src/core/access_policy.gd" id="1_c5x6v"] [ext_resource type="Script" path="res://src/core/npc_profile.gd" id="2_7qk8j"] [ext_resource type="Script" path="res://src/core/venue_scenario.gd" id="3_lvgx2"] [sub_resource type="Resource" id="Resource_xf4wh"] script = ExtResource("1_c5x6v") required_artifacts = { 1: true } policy_summary = "Private property. Entry requires recognition or a valid wristband." [sub_resource type="Resource" id="Resource_cgh52"] script = ExtResource("2_7qk8j") id = "tourist" display_name = "Tourist" temperament = 0.1 base_compliance = 0.9 dialogue_lines = Array[String](["Oh sure, sorry, just taking a picture.", "Is there a better spot to stand?", "Understood, moving."]) [sub_resource type="Resource" id="Resource_qe635"] script = ExtResource("2_7qk8j") id = "confused_visitor" display_name = "Confused Visitor" npc_type = 3 temperament = 0.2 base_compliance = 0.85 dialogue_lines = Array[String](["Wait, this isn't the entrance?", "Sorry about that, I'm a bit lost."]) [sub_resource type="Resource" id="Resource_u5nrp"] script = ExtResource("2_7qk8j") id = "delivery" display_name = "Delivery Worker" npc_type = 10 dialogue_lines = Array[String](["Where should I leave this?"]) [sub_resource type="Resource" id="Resource_dsavb"] script = ExtResource("2_7qk8j") id = "street_performer" display_name = "Street Performer" npc_type = 1 temperament = 0.45 base_compliance = 0.55 reactions_by_level = { 1: { 0: 55, 2: 15, 3: 30 } } [sub_resource type="Resource" id="Resource_sexiy"] script = ExtResource("2_7qk8j") id = "influencer" display_name = "Influencer" npc_type = 2 temperament = 0.5 base_compliance = 0.5 reactions_by_level = { 1: { 0: 40, 2: 10, 3: 30, 4: 20 }, 2: { 0: 30, 2: 20, 4: 35, 8: 15 }, 3: { 0: 10, 1: 15, 2: 20, 4: 30, 8: 25 } } dialogue_lines = Array[String](["This is public sidewalk, you can't stop me from filming."]) [sub_resource type="Resource" id="Resource_ghqd8"] script = ExtResource("2_7qk8j") id = "intoxicated" display_name = "Intoxicated Pedestrian" npc_type = 4 temperament = 0.6 base_compliance = 0.4 reactions_by_level = { 1: { 0: 30, 2: 20, 3: 50 }, 2: { 0: 40, 2: 35, 3: 15, 4: 10 } } reaction_delay = 1.8 [sub_resource type="Resource" id="Resource_g8peq"] script = ExtResource("2_7qk8j") id = "trespasser" display_name = "Trespasser" npc_type = 5 temperament = 0.55 base_compliance = 0.35 return_probability = 0.6 reactions_by_level = { 1: { 0: 30, 2: 25, 3: 45 }, 2: { 0: 40, 2: 35, 6: 25 }, 3: { 1: 35, 2: 25, 6: 15, 7: 10, 8: 15 }, 4: { 1: 70, 7: 30 }, 5: { 1: 30, 5: 50, 7: 20 } } dialogue_lines = Array[String](["I'm just here to see a friend, come on.", "I'll be inside for ten seconds."]) [sub_resource type="Resource" id="Resource_4xl5p"] script = ExtResource("2_7qk8j") id = "mental_crisis" display_name = "Person in Crisis" npc_type = 7 temperament = 0.7 base_compliance = 0.3 return_probability = 0.4 reactions_by_level = { 1: { 0: 25, 2: 20, 3: 55 }, 2: { 0: 25, 2: 35, 3: 30, 5: 10 }, 3: { 0: 25, 1: 15, 2: 30, 5: 30 }, 4: { 1: 40, 5: 35, 7: 25 }, 5: { 1: 25, 5: 60, 7: 15 } } reaction_delay = 2.4 [sub_resource type="Resource" id="Resource_y6282"] script = ExtResource("2_7qk8j") id = "violent_threat" display_name = "Violent Threat" npc_type = 6 temperament = 0.95 base_compliance = 0.05 reactions_by_level = { 1: { 2: 25, 3: 45, 5: 30 }, 2: { 2: 30, 5: 45, 7: 25 }, 3: { 1: 20, 5: 45, 7: 35 }, 4: { 1: 15, 5: 30, 7: 55 }, 5: { 1: 30, 5: 40, 7: 30 } } [sub_resource type="Resource" id="Resource_75a0r"] script = ExtResource("2_7qk8j") id = "protester" display_name = "Protester" npc_type = 12 temperament = 0.5 base_compliance = 0.4 return_probability = 0.25 reactions_by_level = { 1: { 0: 25, 2: 35, 3: 25, 4: 15 }, 2: { 0: 15, 2: 40, 3: 15, 4: 25, 8: 5 }, 3: { 0: 10, 1: 25, 2: 25, 4: 25, 8: 15 }, 4: { 1: 60, 2: 20, 7: 20 } } dialogue_lines = Array[String](["I have every right to be on public sidewalk.", "You can't touch me, this is a lawful protest."]) [sub_resource type="Resource" id="Resource_ix35t"] script = ExtResource("2_7qk8j") id = "authorized_staff" display_name = "Staff Member" npc_type = 8 temperament = 0.15 base_compliance = 1.0 default_reactions = { 1: { 0: 100 } } [sub_resource type="Resource" id="Resource_0mcg3"] script = ExtResource("2_7qk8j") id = "authorized_guest" display_name = "Authorized Guest" npc_type = 9 temperament = 0.2 base_compliance = 0.95 default_reactions = { 1: { 0: 92, 2: 8 }, 2: { 0: 88, 2: 12 } } [resource] script = ExtResource("3_lvgx2") id = "hollywood_building" display_name = "Hollywood Boulevard Building" description = "Steps and entrance of a private building off Hollywood Boulevard." access_policy = SubResource("Resource_xf4wh") equipment = Array[String](["wristband_policy", "flashlight", "radio"]) locations = { "entrance": Vector3(0, 0, 1), "guard_post": Vector3(0, 0, -3), "queue_area": Vector3(0, 0, 6), "sidewalk": Vector3(0, 0, 9), "steps_end": Vector3(0, 0, 3) } npc_profiles = Array[ExtResource("2_7qk8j")]([SubResource("Resource_cgh52"), SubResource("Resource_qe635"), SubResource("Resource_u5nrp"), SubResource("Resource_dsavb"), SubResource("Resource_sexiy"), SubResource("Resource_ghqd8"), SubResource("Resource_g8peq"), SubResource("Resource_4xl5p"), SubResource("Resource_y6282"), SubResource("Resource_75a0r"), SubResource("Resource_ix35t"), SubResource("Resource_0mcg3")]) event_pool = Array[Dictionary]([{ "base_weight": 1.0, "id": "tourist_photo", "intent": "photo", "kind": "routine", "npc_type": 0, "phase": 0, "probability": 0.42, "time_range_s": Vector2(0, 900) }, { "base_weight": 1.0, "id": "protest_gather", "intent": "protest", "kind": "routine", "npc_type": 12, "phase": 0, "probability": 0.18, "time_range_s": Vector2(300, 900) }, { "base_weight": 1.0, "id": "tourist_sit", "intent": "sit", "kind": "routine", "npc_type": 0, "phase": 0, "probability": 0.26, "time_range_s": Vector2(0, 900) }, { "base_weight": 1.0, "id": "confused_enter", "intent": "enter", "kind": "routine", "npc_type": 3, "phase": 0, "probability": 0.25, "time_range_s": Vector2(0, 900) }, { "base_weight": 1.0, "id": "delivery_drop", "intent": "deliver", "kind": "routine", "npc_type": 10, "phase": 0, "probability": 0.3, "time_range_s": Vector2(0, 600) }, { "base_weight": 1.0, "id": "staff_entry", "intent": "enter", "kind": "routine", "npc_type": 8, "phase": 0, "probability": 0.35, "time_range_s": Vector2(0, 600) }, { "base_weight": 1.0, "id": "guest_entry", "intent": "enter", "kind": "routine", "npc_type": 9, "phase": 0, "probability": 0.25, "time_range_s": Vector2(0, 900) }, { "base_weight": 1.0, "id": "performer_show", "intent": "perform", "kind": "routine", "npc_type": 1, "phase": 0, "probability": 0.24, "time_range_s": Vector2(300, 800) }, { "base_weight": 1.0, "hint": "hint.body_camera_reason", "id": "building_filming_boundary", "intent": "film", "kind": "scripted", "npc_type": 2, "phase": 1, "probability": 0.4, "time_range_s": Vector2(300, 600) }, { "base_weight": 1.0, "hint": "hint.ask_reason", "id": "building_unclear_intent", "intent": "enter", "kind": "scripted", "npc_type": 3, "phase": 2, "probability": 0.4, "time_range_s": Vector2(600, 780) }, { "base_weight": 1.0, "id": "influencer_film", "intent": "film", "kind": "routine", "npc_type": 2, "phase": 0, "probability": 0.26, "time_range_s": Vector2(300, 900) }, { "base_weight": 1.0, "id": "intoxicated_wander", "intent": "wander", "kind": "routine", "npc_type": 4, "phase": 1, "probability": 0.15, "time_range_s": Vector2(600, 900) }, { "base_weight": 1.0, "id": "trespass_test", "intent": "trespass", "kind": "routine", "npc_type": 5, "phase": 0, "probability": 0.16, "time_range_s": Vector2(300, 900) }, { "base_weight": 1.0, "id": "crisis_event", "intent": "crisis", "kind": "scripted", "npc_type": 7, "phase": 2, "probability": 0.5, "time_range_s": Vector2(640, 740) }, { "base_weight": 1.0, "id": "violent_emergency_event", "intent": "threat", "kind": "scripted", "npc_type": 6, "phase": 3, "probability": 0.28, "requires_emergency": true, "time_range_s": Vector2(760, 880) }, { "base_weight": 1.0, "id": "building_apology_return", "intent": "enter", "kind": "recovery", "npc_type": 9, "phase": 2, "probability": 0.22, "time_range_s": Vector2(620, 800) }]) shift_phases = { 0: { "start_s": 0.0 }, 1: { "start_s": 300.0 }, 2: { "start_s": 600.0 }, 3: { "start_s": 700.0 } }