Preserve approved pixel tower prototype as development baseline

This commit is contained in:
Codex
2026-09-09 07:51:16 +09:00
commit 423fd6dd2e
915 changed files with 95193 additions and 0 deletions
+52
View File
@@ -0,0 +1,52 @@
[gd_resource type="Resource" script_class="FacilityDefinition" load_steps=2 format=3]
[ext_resource type="Script" path="res://scripts/data/facility_definition.gd" id="1"]
[resource]
script = ExtResource("1")
definition_schema_version = 2
id = &"adult_private_room"
display_name = "成人向け個室"
description = "年齢確認済みの成人だけが利用・担当できる予約制の限定サービス区画。"
category = &"restricted_service"
service_types = Array[StringName]([&"private_adult_service"])
default_service_type = &"private_adult_service"
service_profiles = {&"private_adult_service": {&"duration_minutes": 90, &"base_quality": 60, &"base_price": 250, &"capacity_units": 1, &"need_effects": {&"intimacy": -70, &"leisure": -20}}}
zone = 3
layer = 0
footprint = Vector2i(2, 1)
guest_access_offsets = Array[Vector2i]([Vector2i(0, 0)])
staff_access_offsets = Array[Vector2i]([Vector2i(1, 0)])
required_connection_tags = Array[StringName]([&"guest_access"])
preferred_adjacency_tags = Array[StringName]([&"concealment", &"security"])
forbidden_adjacency_tags = Array[StringName]([&"entrance"])
construction_cost = {&"gold": 1500, &"materials": 14}
build_minutes = 240
weight_per_cell = 2
upgrade_costs = Array[Dictionary]([{&"gold": 750, &"materials": 8}, {&"gold": 1500, &"materials": 14}])
maintenance_mana = 3
power_priority = 45
staff_min = 1
staff_max = 1
required_roles = Array[StringName]([&"service_attendant"])
primary_skill = &"service"
capacity = 2
queue_capacity = 4
base_service_minutes = 90
base_quality = 60
base_price = 250
opening_schedule = {&"morning": false, &"day": false, &"night": true}
policy_schema = {&"age_verification": {&"type": &"bool", &"default": true}, &"price_mode": {&"type": &"enum", &"default": &"standard"}, &"reservation_only": {&"type": &"bool", &"default": true}}
cleanliness_decay_per_service = 4
noise_per_service = 2
concealment_effect = 8
heat_per_service = 3
incident_weights = {&"audit_discovery": 4, &"privacy_breach": 3, &"underage_access": 100}
allowed_guest_tags = Array[StringName]([&"adult_verified"])
forbidden_guest_tags = Array[StringName]([&"underage"])
adult_content = true
content_replacement_id = &"massage_room"
unlock_rank = 3
research_requirements = Array[StringName]([&"discreet_hospitality"])
statistics_keys = Array[StringName]([&"adult_verification_failures", &"average_wait_minutes", &"revenue", &"services_completed"])
tags = Array[StringName]([&"adult_only", &"restricted_service", &"service", &"underground"])
+27
View File
@@ -0,0 +1,27 @@
[gd_resource type="Resource" script_class="FacilityDefinition" load_steps=2 format=3]
[ext_resource type="Script" path="res://scripts/data/facility_definition.gd" id="1"]
[resource]
script = ExtResource("1")
id = &"cafeteria"
display_name = "大衆食堂"
description = "低価格で多くの客の食欲を満たす。裏層の厨房から料理を受け取る。"
zone = 0
layer = 0
footprint = Vector2i(4, 2)
construction_cost = {&"gold": 800, &"materials": 12}
build_minutes = 180
weight_per_cell = 2
maintenance_mana = 2
staff_min = 2
staff_max = 4
required_roles = Array[StringName]([&"cook", &"server"])
primary_skill = &"cooking"
capacity = 12
queue_capacity = 24
base_service_minutes = 15
base_quality = 55
base_price = 35
inventory_inputs = {&"ingredient/basic_meal": 1}
tags = Array[StringName]([&"dining", &"social"])
@@ -0,0 +1,27 @@
[gd_resource type="Resource" script_class="FacilityDefinition" load_steps=2 format=3]
[ext_resource type="Script" path="res://scripts/data/facility_definition.gd" id="1"]
[resource]
script = ExtResource("1")
id = &"black_market"
display_name = "闇市取引所"
description = "希少品を高値で扱う地下取引施設。収益と引き換えに警戒と監査リスクを持つ。"
zone = 3
layer = 0
footprint = Vector2i(3, 2)
construction_cost = {&"gold": 1600, &"materials": 12}
build_minutes = 270
weight_per_cell = 2
maintenance_mana = 2
power_priority = 40
staff_min = 1
staff_max = 2
required_roles = Array[StringName]([&"clerk"])
primary_skill = &"underworld"
capacity = 8
queue_capacity = 12
base_service_minutes = 20
base_quality = 60
base_price = 50
tags = Array[StringName]([&"authority_risk", &"expansion", &"restricted_service", &"trade", &"underground", &"underworld"])
+28
View File
@@ -0,0 +1,28 @@
[gd_resource type="Resource" script_class="FacilityDefinition" load_steps=2 format=3]
[ext_resource type="Script" path="res://scripts/data/facility_definition.gd" id="1"]
[resource]
script = ExtResource("1")
id = &"clinic"
display_name = "診療所"
description = "客と従業員の軽傷や体調不良を治療する、一般利用可能な医療施設。"
zone = 0
layer = 0
footprint = Vector2i(3, 2)
construction_cost = {&"gold": 1000, &"materials": 12}
build_minutes = 180
weight_per_cell = 2
maintenance_mana = 3
power_priority = 90
staff_min = 1
staff_max = 2
required_roles = Array[StringName]([&"medic"])
primary_skill = &"service"
capacity = 4
queue_capacity = 8
base_service_minutes = 45
base_quality = 65
base_price = 80
inventory_inputs = {&"medical/basic_supply": 1}
tags = Array[StringName]([&"expansion", &"medical", &"recovery", &"service"])
@@ -0,0 +1,25 @@
[gd_resource type="Resource" script_class="FacilityDefinition" load_steps=2 format=3]
[ext_resource type="Script" path="res://scripts/data/facility_definition.gd" id="1"]
[resource]
script = ExtResource("1")
id = &"cold_storage"
display_name = "魔法冷蔵庫"
description = "食材の劣化を抑え、厨房と酒場の在庫損失を減らすBACK保管施設。"
zone = 0
layer = 1
footprint = Vector2i(3, 2)
construction_cost = {&"gold": 900, &"materials": 12}
build_minutes = 180
weight_per_cell = 2
maintenance_mana = 4
power_priority = 75
staff_min = 0
staff_max = 1
capacity = 160
queue_capacity = 4
base_service_minutes = 10
base_quality = 65
base_price = 0
tags = Array[StringName]([&"back_of_house", &"expansion", &"food", &"preservation", &"storage"])
@@ -0,0 +1,25 @@
[gd_resource type="Resource" script_class="FacilityDefinition" load_steps=2 format=3]
[ext_resource type="Script" path="res://scripts/data/facility_definition.gd" id="1"]
[resource]
script = ExtResource("1")
id = &"general_store"
display_name = "売店"
description = "旅用品、薬、土産を販売し、宿泊以外の客単価を高める一般向け店舗。"
zone = 2
layer = 0
footprint = Vector2i(3, 2)
construction_cost = {&"gold": 750, &"materials": 10}
build_minutes = 150
weight_per_cell = 1
staff_min = 1
staff_max = 2
required_roles = Array[StringName]([&"clerk"])
primary_skill = &"operation"
capacity = 6
queue_capacity = 10
base_service_minutes = 10
base_quality = 55
base_price = 25
tags = Array[StringName]([&"expansion", &"retail", &"service", &"trade"])
@@ -0,0 +1,26 @@
[gd_resource type="Resource" script_class="FacilityDefinition" load_steps=2 format=3]
[ext_resource type="Script" path="res://scripts/data/facility_definition.gd" id="1"]
[resource]
script = ExtResource("1")
id = &"guild_counter"
display_name = "冒険者窓口"
description = "依頼、探索情報、護衛紹介を扱い、冒険者客と探索Systemを接続する窓口。"
zone = 2
layer = 0
footprint = Vector2i(3, 2)
construction_cost = {&"gold": 800, &"materials": 8}
build_minutes = 150
weight_per_cell = 1
maintenance_mana = 1
staff_min = 1
staff_max = 2
required_roles = Array[StringName]([&"clerk"])
primary_skill = &"operation"
capacity = 8
queue_capacity = 16
base_service_minutes = 15
base_quality = 60
base_price = 20
tags = Array[StringName]([&"adventure", &"entrance", &"expansion", &"information", &"service"])
+29
View File
@@ -0,0 +1,29 @@
[gd_resource type="Resource" script_class="FacilityDefinition" load_steps=2 format=3]
[ext_resource type="Script" path="res://scripts/data/facility_definition.gd" id="1"]
[resource]
script = ExtResource("1")
id = &"laundry"
display_name = "洗濯室"
description = "客室と浴場から回収した布類を洗浄し、清潔なリネンを供給するBACK施設。"
zone = 0
layer = 1
footprint = Vector2i(3, 2)
construction_cost = {&"gold": 700, &"materials": 10}
build_minutes = 150
weight_per_cell = 2
maintenance_mana = 3
power_priority = 65
staff_min = 1
staff_max = 3
required_roles = Array[StringName]([&"cleaner"])
primary_skill = &"operation"
capacity = 20
queue_capacity = 8
base_service_minutes = 20
base_quality = 58
base_price = 0
inventory_inputs = {&"linen/used": 4}
inventory_outputs = {&"linen/clean": 4}
tags = Array[StringName]([&"back_of_house", &"cleaning", &"expansion", &"production"])
@@ -0,0 +1,28 @@
[gd_resource type="Resource" script_class="FacilityDefinition" load_steps=2 format=3]
[ext_resource type="Script" path="res://scripts/data/facility_definition.gd" id="1"]
[resource]
script = ExtResource("1")
id = &"maintenance_workshop"
display_name = "整備工房"
description = "設備修理、建築補助、交換部品の準備を行うBACK作業施設。"
zone = 0
layer = 1
footprint = Vector2i(3, 2)
construction_cost = {&"gold": 1000, &"materials": 14}
build_minutes = 210
weight_per_cell = 2
maintenance_mana = 2
power_priority = 85
staff_min = 1
staff_max = 3
required_roles = Array[StringName]([&"maintenance"])
primary_skill = &"operation"
capacity = 6
queue_capacity = 8
base_service_minutes = 30
base_quality = 62
base_price = 0
inventory_inputs = {&"material/repair_part": 1}
tags = Array[StringName]([&"back_of_house", &"construction", &"expansion", &"maintenance", &"repair"])
@@ -0,0 +1,27 @@
[gd_resource type="Resource" script_class="FacilityDefinition" load_steps=2 format=3]
[ext_resource type="Script" path="res://scripts/data/facility_definition.gd" id="1"]
[resource]
script = ExtResource("1")
id = &"mana_control_room"
display_name = "魔力制御室"
description = "地下の魔力供給、蓄積、優先配電を管理する高重要度のBACK設備。"
zone = 3
layer = 1
footprint = Vector2i(3, 2)
construction_cost = {&"gold": 1800, &"materials": 18}
build_minutes = 300
weight_per_cell = 3
maintenance_mana = 1
power_priority = 100
staff_min = 1
staff_max = 2
required_roles = Array[StringName]([&"maintenance"])
primary_skill = &"operation"
capacity = 40
queue_capacity = 2
base_service_minutes = 1
base_quality = 65
base_price = 0
tags = Array[StringName]([&"back_of_house", &"expansion", &"mana_infrastructure", &"staff_only", &"underground"])
@@ -0,0 +1,24 @@
[gd_resource type="Resource" script_class="FacilityDefinition" load_steps=2 format=3]
[ext_resource type="Script" path="res://scripts/data/facility_definition.gd" id="1"]
[resource]
script = ExtResource("1")
id = &"premium_room"
display_name = "上級客室"
description = "富裕客と長期滞在客向けの静かな地上客室。一般客室より高い品質と料金を持つ。"
zone = 1
layer = 0
footprint = Vector2i(3, 2)
construction_cost = {&"gold": 900, &"materials": 10}
build_minutes = 150
weight_per_cell = 2
maintenance_mana = 1
staff_min = 0
staff_max = 0
capacity = 2
queue_capacity = 2
base_service_minutes = 720
base_quality = 70
base_price = 220
tags = Array[StringName]([&"expansion", &"lodging", &"premium", &"quiet"])
@@ -0,0 +1,27 @@
[gd_resource type="Resource" script_class="FacilityDefinition" load_steps=2 format=3]
[ext_resource type="Script" path="res://scripts/data/facility_definition.gd" id="1"]
[resource]
script = ExtResource("1")
id = &"private_bath"
display_name = "地下貸切浴室"
description = "少人数で利用できる予約制の貸切浴室。静けさと高品質を重視する。"
zone = 3
layer = 0
footprint = Vector2i(3, 2)
construction_cost = {&"gold": 1100, &"materials": 14}
build_minutes = 210
weight_per_cell = 2
maintenance_mana = 4
power_priority = 70
staff_min = 1
staff_max = 2
required_roles = Array[StringName]([&"attendant"])
primary_skill = &"service"
capacity = 4
queue_capacity = 8
base_service_minutes = 60
base_quality = 70
base_price = 80
tags = Array[StringName]([&"expansion", &"hygiene", &"premium", &"service", &"underground", &"wellness"])
@@ -0,0 +1,28 @@
[gd_resource type="Resource" script_class="FacilityDefinition" load_steps=2 format=3]
[ext_resource type="Script" path="res://scripts/data/facility_definition.gd" id="1"]
[resource]
script = ExtResource("1")
id = &"secret_tavern"
display_name = "地下酒場"
description = "夜間客と裏社会に通じた客が集う、地下FRONTの高単価な交流施設。"
zone = 3
layer = 0
footprint = Vector2i(3, 2)
construction_cost = {&"gold": 1300, &"materials": 14}
build_minutes = 240
weight_per_cell = 2
maintenance_mana = 3
power_priority = 60
staff_min = 2
staff_max = 4
required_roles = Array[StringName]([&"bartender", &"attendant"])
primary_skill = &"service"
capacity = 10
queue_capacity = 18
base_service_minutes = 60
base_quality = 62
base_price = 90
inventory_inputs = {&"beverage/rare": 1}
tags = Array[StringName]([&"expansion", &"leisure", &"night_service", &"social", &"underground", &"underworld"])
@@ -0,0 +1,25 @@
[gd_resource type="Resource" script_class="FacilityDefinition" load_steps=2 format=3]
[ext_resource type="Script" path="res://scripts/data/facility_definition.gd" id="1"]
[resource]
script = ExtResource("1")
id = &"staff_dormitory"
display_name = "従業員宿舎"
description = "勤務の合間に従業員が睡眠と長時間休息を取るBACK居住区画。"
zone = 1
layer = 1
footprint = Vector2i(4, 2)
construction_cost = {&"gold": 650, &"materials": 8}
build_minutes = 150
weight_per_cell = 1
maintenance_mana = 1
power_priority = 35
staff_min = 0
staff_max = 0
capacity = 12
queue_capacity = 0
base_service_minutes = 360
base_quality = 58
base_price = 0
tags = Array[StringName]([&"back_of_house", &"expansion", &"recovery", &"staff_only", &"staff_support"])
+27
View File
@@ -0,0 +1,27 @@
[gd_resource type="Resource" script_class="FacilityDefinition" load_steps=2 format=3]
[ext_resource type="Script" path="res://scripts/data/facility_definition.gd" id="1"]
[resource]
script = ExtResource("1")
id = &"tea_lounge"
display_name = "喫茶ラウンジ"
description = "昼の休息と軽い交流を提供する、一般客向けの落ち着いた接客施設。"
zone = 1
layer = 0
footprint = Vector2i(3, 2)
construction_cost = {&"gold": 650, &"materials": 8}
build_minutes = 120
weight_per_cell = 1
maintenance_mana = 1
staff_min = 1
staff_max = 3
required_roles = Array[StringName]([&"attendant"])
primary_skill = &"service"
capacity = 8
queue_capacity = 12
base_service_minutes = 30
base_quality = 60
base_price = 55
inventory_inputs = {&"beverage/tea": 1}
tags = Array[StringName]([&"day_service", &"dining", &"expansion", &"leisure", &"social"])
@@ -0,0 +1,24 @@
[gd_resource type="Resource" script_class="FacilityDefinition" load_steps=2 format=3]
[ext_resource type="Script" path="res://scripts/data/facility_definition.gd" id="1"]
[resource]
script = ExtResource("1")
id = &"underground_guest_room"
display_name = "地下客室"
description = "静けさと遮光を好む客や夜行性種族向けの、地下FRONT宿泊区画。"
zone = 3
layer = 0
footprint = Vector2i(2, 1)
construction_cost = {&"gold": 600, &"materials": 7}
build_minutes = 90
weight_per_cell = 1
maintenance_mana = 1
staff_min = 0
staff_max = 0
capacity = 2
queue_capacity = 4
base_service_minutes = 720
base_quality = 58
base_price = 140
tags = Array[StringName]([&"expansion", &"lodging", &"night_service", &"quiet", &"underground"])
@@ -0,0 +1,27 @@
[gd_resource type="Resource" script_class="FacilityDefinition" load_steps=2 format=3]
[ext_resource type="Script" path="res://scripts/data/facility_definition.gd" id="1"]
[resource]
script = ExtResource("1")
id = &"vip_private_salon"
display_name = "地下VIPサロン"
description = "年齢確認済みの富裕な成人客へ、夜間の限定サービスを提供する高級区画。"
zone = 3
layer = 0
footprint = Vector2i(4, 2)
construction_cost = {&"gold": 2200, &"materials": 20}
build_minutes = 360
weight_per_cell = 3
maintenance_mana = 5
power_priority = 50
staff_min = 2
staff_max = 4
required_roles = Array[StringName]([&"attendant", &"masseur"])
primary_skill = &"service"
capacity = 6
queue_capacity = 8
base_service_minutes = 120
base_quality = 78
base_price = 400
tags = Array[StringName]([&"adult_only", &"expansion", &"night_service", &"premium", &"restricted_service", &"underground"])
@@ -0,0 +1,27 @@
[gd_resource type="Resource" script_class="FacilityDefinition" load_steps=2 format=3]
[ext_resource type="Script" path="res://scripts/data/facility_definition.gd" id="1"]
[resource]
script = ExtResource("1")
id = &"waste_processing"
display_name = "廃棄物処理室"
description = "厨房、浴場、客室から出る廃棄物を処理し、汚れと事故リスクを抑える地下BACK施設。"
zone = 3
layer = 1
footprint = Vector2i(3, 2)
construction_cost = {&"gold": 800, &"materials": 10}
build_minutes = 180
weight_per_cell = 2
maintenance_mana = 2
power_priority = 55
staff_min = 1
staff_max = 2
required_roles = Array[StringName]([&"cleaner"])
primary_skill = &"operation"
capacity = 20
queue_capacity = 8
base_service_minutes = 15
base_quality = 55
base_price = 0
tags = Array[StringName]([&"back_of_house", &"cleaning", &"expansion", &"risk_control", &"underground"])
+26
View File
@@ -0,0 +1,26 @@
[gd_resource type="Resource" script_class="FacilityDefinition" load_steps=2 format=3]
[ext_resource type="Script" path="res://scripts/data/facility_definition.gd" id="1"]
[resource]
script = ExtResource("1")
id = &"guest_corridor"
display_name = "客用通路"
description = "客と接客中の従業員が利用する、表層の移動用サブスロット。"
zone = 0
layer = 0
footprint = Vector2i(1, 1)
construction_cost = {&"gold": 20, &"materials": 0}
build_minutes = 10
weight_per_cell = 1
pass_through = true
maintenance_mana = 0
power_priority = 10
staff_min = 0
staff_max = 0
capacity = 3
queue_capacity = 0
base_service_minutes = 1
base_quality = 50
base_price = 0
tags = Array[StringName]([&"corridor", &"guest_access", &"movement", &"route_subslot", &"schema_facility_proxy"])
+26
View File
@@ -0,0 +1,26 @@
[gd_resource type="Resource" script_class="FacilityDefinition" load_steps=2 format=3]
[ext_resource type="Script" path="res://scripts/data/facility_definition.gd" id="1"]
[resource]
script = ExtResource("1")
id = &"guest_elevator"
display_name = "客用昇降機"
description = "客と接客中の従業員を上下階へ運ぶ、低速の表層用昇降設備。"
zone = 0
layer = 0
footprint = Vector2i(2, 2)
construction_cost = {&"gold": 1500, &"materials": 15}
build_minutes = 300
weight_per_cell = 3
pass_through = true
maintenance_mana = 5
power_priority = 85
staff_min = 0
staff_max = 0
capacity = 4
queue_capacity = 8
base_service_minutes = 10
base_quality = 50
base_price = 0
tags = Array[StringName]([&"guest_access", &"movement", &"schema_facility_proxy", &"vertical_connector"])
+46
View File
@@ -0,0 +1,46 @@
[gd_resource type="Resource" script_class="FacilityDefinition" load_steps=2 format=3]
[ext_resource type="Script" path="res://scripts/data/facility_definition.gd" id="1"]
[resource]
script = ExtResource("1")
definition_schema_version = 2
id = &"kitchen"
display_name = "厨房"
description = "食材を調理し、食堂や酒場へ料理を供給する裏方施設。"
category = &"production"
service_types = Array[StringName]([&"meal_batch"])
default_service_type = &"meal_batch"
service_profiles = {&"meal_batch": {&"duration_minutes": 15, &"base_quality": 55, &"base_price": 0, &"capacity_units": 4, &"need_effects": {&"hunger": 0}}}
zone = 0
layer = 1
footprint = Vector2i(4, 2)
staff_access_offsets = Array[Vector2i]([Vector2i(0, 1), Vector2i(3, 1)])
required_connection_tags = Array[StringName]([&"staff_only"])
preferred_adjacency_tags = Array[StringName]([&"dining", &"storage"])
forbidden_adjacency_tags = Array[StringName]([&"quiet"])
construction_cost = {&"gold": 700, &"materials": 10}
build_minutes = 180
weight_per_cell = 2
upgrade_costs = Array[Dictionary]([{&"gold": 350, &"materials": 6}, {&"gold": 700, &"materials": 12}])
maintenance_mana = 2
power_priority = 80
staff_min = 1
staff_max = 3
required_roles = Array[StringName]([&"cook"])
primary_skill = &"cooking"
capacity = 20
queue_capacity = 4
base_service_minutes = 15
base_quality = 55
base_price = 0
inventory_inputs = {&"ingredient/raw_food": 4}
inventory_outputs = {&"ingredient/basic_meal": 4}
opening_schedule = {&"morning": true, &"day": true, &"night": true}
policy_schema = {&"batch_priority": {&"type": &"enum", &"default": &"fifo"}, &"quality_target": {&"type": &"int", &"default": 55}}
cleanliness_decay_per_service = 3
noise_per_service = 4
incident_weights = {&"contamination": 2, &"fire": 2}
unlock_rank = 1
statistics_keys = Array[StringName]([&"batches_completed", &"downtime_minutes", &"output_quantity", &"spoilage_quantity"])
tags = Array[StringName]([&"back_of_house", &"food", &"production"])
+27
View File
@@ -0,0 +1,27 @@
[gd_resource type="Resource" script_class="FacilityDefinition" load_steps=2 format=3]
[ext_resource type="Script" path="res://scripts/data/facility_definition.gd" id="1"]
[resource]
script = ExtResource("1")
id = &"massage_room"
display_name = "マッサージ室"
description = "予約客へ施術を提供し、疲労とストレスの回復を支援する個室。"
zone = 0
layer = 0
footprint = Vector2i(2, 1)
construction_cost = {&"gold": 800, &"materials": 8}
build_minutes = 120
weight_per_cell = 1
maintenance_mana = 2
power_priority = 50
staff_min = 1
staff_max = 2
required_roles = Array[StringName]([&"therapist"])
primary_skill = &"service"
capacity = 2
queue_capacity = 6
base_service_minutes = 60
base_quality = 60
base_price = 100
tags = Array[StringName]([&"leisure", &"service", &"wellness"])
+27
View File
@@ -0,0 +1,27 @@
[gd_resource type="Resource" script_class="FacilityDefinition" load_steps=2 format=3]
[ext_resource type="Script" path="res://scripts/data/facility_definition.gd" id="1"]
[resource]
script = ExtResource("1")
id = &"public_bath"
display_name = "大浴場"
description = "多人数を受け入れ、清潔と休息の欲求を満たす共同浴場。"
zone = 0
layer = 0
footprint = Vector2i(6, 2)
construction_cost = {&"gold": 1200, &"materials": 16}
build_minutes = 240
weight_per_cell = 2
maintenance_mana = 4
power_priority = 65
staff_min = 1
staff_max = 2
required_roles = Array[StringName]([&"bath_attendant"])
primary_skill = &"service"
capacity = 12
queue_capacity = 24
base_service_minutes = 60
base_quality = 55
base_price = 20
tags = Array[StringName]([&"hygiene", &"service", &"wellness"])
+45
View File
@@ -0,0 +1,45 @@
[gd_resource type="Resource" script_class="FacilityDefinition" load_steps=2 format=3]
[ext_resource type="Script" path="res://scripts/data/facility_definition.gd" id="1"]
[resource]
script = ExtResource("1")
definition_schema_version = 2
id = &"reception"
display_name = "受付"
description = "全ての客のチェックインと精算を処理する、境界階の中核施設。"
category = &"guest_service"
service_types = Array[StringName]([&"check_in", &"check_out"])
default_service_type = &"check_in"
service_profiles = {&"check_in": {&"duration_minutes": 8, &"base_quality": 60, &"base_price": 20, &"capacity_units": 1, &"need_effects": {&"sleep": 0}}, &"check_out": {&"duration_minutes": 6, &"base_quality": 60, &"base_price": 0, &"capacity_units": 1, &"need_effects": {&"sleep": 0}}}
zone = 2
layer = 0
footprint = Vector2i(4, 2)
guest_access_offsets = Array[Vector2i]([Vector2i(0, 1), Vector2i(1, 1)])
staff_access_offsets = Array[Vector2i]([Vector2i(3, 1)])
required_connection_tags = Array[StringName]([&"guest_access"])
preferred_adjacency_tags = Array[StringName]([&"entrance", &"lodging"])
construction_cost = {&"gold": 500, &"materials": 8}
build_minutes = 120
weight_per_cell = 2
upgrade_costs = Array[Dictionary]([{&"gold": 250, &"materials": 4}, {&"gold": 500, &"materials": 8}])
maintenance_mana = 1
power_priority = 100
staff_min = 1
staff_max = 3
required_roles = Array[StringName]([&"receptionist"])
capacity = 8
queue_capacity = 16
base_service_minutes = 8
base_quality = 60
base_price = 20
opening_schedule = {&"morning": true, &"day": true, &"night": true}
policy_schema = {&"price_mode": {&"type": &"enum", &"default": &"standard"}, &"vip_priority": {&"type": &"bool", &"default": false}}
cleanliness_decay_per_service = 1
noise_per_service = 1
beauty_effect = 4
security_effect = 5
incident_weights = {&"queue_dispute": 1, &"theft": 1}
unlock_rank = 1
statistics_keys = Array[StringName]([&"average_wait_minutes", &"guest_processed", &"revenue", &"satisfaction_delta"])
tags = Array[StringName]([&"service", &"entrance"])
+27
View File
@@ -0,0 +1,27 @@
[gd_resource type="Resource" script_class="FacilityDefinition" load_steps=2 format=3]
[ext_resource type="Script" path="res://scripts/data/facility_definition.gd" id="1"]
[resource]
script = ExtResource("1")
id = &"security_station"
display_name = "警備詰所"
description = "警備員が待機し、事故・喧嘩・侵入などの現場へ出動する拠点。"
zone = 0
layer = 1
footprint = Vector2i(2, 2)
construction_cost = {&"gold": 900, &"materials": 10}
build_minutes = 180
weight_per_cell = 2
maintenance_mana = 2
power_priority = 90
staff_min = 1
staff_max = 3
required_roles = Array[StringName]([&"security"])
primary_skill = &"combat"
capacity = 3
queue_capacity = 8
base_service_minutes = 1
base_quality = 55
base_price = 0
tags = Array[StringName]([&"incident_response", &"security", &"staff_support"])
+26
View File
@@ -0,0 +1,26 @@
[gd_resource type="Resource" script_class="FacilityDefinition" load_steps=2 format=3]
[ext_resource type="Script" path="res://scripts/data/facility_definition.gd" id="1"]
[resource]
script = ExtResource("1")
id = &"service_corridor"
display_name = "裏通路"
description = "従業員・物資・清掃・警備・救護が利用する、裏層の移動用サブスロット。"
zone = 0
layer = 1
footprint = Vector2i(1, 1)
construction_cost = {&"gold": 25, &"materials": 0}
build_minutes = 10
weight_per_cell = 1
pass_through = true
maintenance_mana = 0
power_priority = 10
staff_min = 0
staff_max = 0
capacity = 2
queue_capacity = 0
base_service_minutes = 1
base_quality = 50
base_price = 0
tags = Array[StringName]([&"corridor", &"movement", &"route_subslot", &"schema_facility_proxy", &"staff_only"])
+26
View File
@@ -0,0 +1,26 @@
[gd_resource type="Resource" script_class="FacilityDefinition" load_steps=2 format=3]
[ext_resource type="Script" path="res://scripts/data/facility_definition.gd" id="1"]
[resource]
script = ExtResource("1")
id = &"service_elevator"
display_name = "業務用昇降機"
description = "従業員・物資・救護搬送を上下階へ運ぶ、高速の裏層用昇降設備。"
zone = 0
layer = 1
footprint = Vector2i(3, 2)
construction_cost = {&"gold": 2200, &"materials": 20}
build_minutes = 360
weight_per_cell = 3
pass_through = true
maintenance_mana = 6
power_priority = 95
staff_min = 0
staff_max = 0
capacity = 8
queue_capacity = 16
base_service_minutes = 5
base_quality = 50
base_price = 0
tags = Array[StringName]([&"movement", &"schema_facility_proxy", &"staff_only", &"vertical_connector"])
+26
View File
@@ -0,0 +1,26 @@
[gd_resource type="Resource" script_class="FacilityDefinition" load_steps=2 format=3]
[ext_resource type="Script" path="res://scripts/data/facility_definition.gd" id="1"]
[resource]
script = ExtResource("1")
id = &"staff_door"
display_name = "従業員ドア"
description = "従業員だけが表層と裏層を行き来できる、管理された接続設備。"
zone = 0
layer = 1
footprint = Vector2i(1, 1)
construction_cost = {&"gold": 100, &"materials": 1}
build_minutes = 30
weight_per_cell = 1
pass_through = true
maintenance_mana = 0
power_priority = 95
staff_min = 0
staff_max = 0
capacity = 1
queue_capacity = 1
base_service_minutes = 1
base_quality = 50
base_price = 0
tags = Array[StringName]([&"cross_layer_connector", &"movement", &"schema_facility_proxy", &"staff_only"])
+26
View File
@@ -0,0 +1,26 @@
[gd_resource type="Resource" script_class="FacilityDefinition" load_steps=2 format=3]
[ext_resource type="Script" path="res://scripts/data/facility_definition.gd" id="1"]
[resource]
script = ExtResource("1")
id = &"staff_waiting_room"
display_name = "待機室"
description = "非番または待機中の従業員が休憩し、呼び出しに備える裏方区画。"
zone = 0
layer = 1
footprint = Vector2i(4, 2)
construction_cost = {&"gold": 400, &"materials": 6}
build_minutes = 120
weight_per_cell = 1
maintenance_mana = 0
power_priority = 30
staff_min = 0
staff_max = 0
primary_skill = &"operation"
capacity = 8
queue_capacity = 0
base_service_minutes = 1
base_quality = 50
base_price = 0
tags = Array[StringName]([&"continuous_support", &"recovery", &"staff_support"])
+24
View File
@@ -0,0 +1,24 @@
[gd_resource type="Resource" script_class="FacilityDefinition" load_steps=2 format=3]
[ext_resource type="Script" path="res://scripts/data/facility_definition.gd" id="1"]
[resource]
script = ExtResource("1")
id = &"standard_room"
display_name = "一般客室"
description = "冒険者と一般市民向けの基本的な宿泊施設。"
zone = 1
layer = 0
footprint = Vector2i(2, 1)
construction_cost = {&"gold": 350, &"materials": 5}
build_minutes = 60
weight_per_cell = 1
maintenance_mana = 0
staff_min = 0
staff_max = 0
capacity = 2
queue_capacity = 4
base_service_minutes = 720
base_quality = 50
base_price = 80
tags = Array[StringName]([&"lodging", &"quiet"])
+28
View File
@@ -0,0 +1,28 @@
[gd_resource type="Resource" script_class="FacilityDefinition" load_steps=2 format=3]
[ext_resource type="Script" path="res://scripts/data/facility_definition.gd" id="1"]
[resource]
script = ExtResource("1")
id = &"tavern"
display_name = "酒場"
description = "飲食と交流を提供し、夜間の娯楽需要にも応える接客施設。"
zone = 0
layer = 0
footprint = Vector2i(4, 2)
construction_cost = {&"gold": 1000, &"materials": 12}
build_minutes = 240
weight_per_cell = 2
maintenance_mana = 2
power_priority = 55
staff_min = 2
staff_max = 4
required_roles = Array[StringName]([&"bartender", &"server"])
primary_skill = &"service"
capacity = 14
queue_capacity = 28
base_service_minutes = 50
base_quality = 55
base_price = 40
inventory_inputs = {&"beverage/basic": 1}
tags = Array[StringName]([&"dining", &"leisure", &"service", &"social"])
+26
View File
@@ -0,0 +1,26 @@
[gd_resource type="Resource" script_class="FacilityDefinition" load_steps=2 format=3]
[ext_resource type="Script" path="res://scripts/data/facility_definition.gd" id="1"]
[resource]
script = ExtResource("1")
id = &"warehouse"
display_name = "倉庫"
description = "食材、資材、装備を保管し、裏動線を通じて各施設へ供給する。"
zone = 0
layer = 1
footprint = Vector2i(4, 2)
construction_cost = {&"gold": 450, &"materials": 10}
build_minutes = 180
weight_per_cell = 2
maintenance_mana = 0
staff_min = 1
staff_max = 3
required_roles = Array[StringName]([&"logistics"])
primary_skill = &"operation"
capacity = 100
queue_capacity = 4
base_service_minutes = 10
base_quality = 50
base_price = 0
tags = Array[StringName]([&"logistics", &"storage"])