Preserve approved pixel tower prototype as development baseline
This commit is contained in:
@@ -0,0 +1,142 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"content_type": "guest_classes",
|
||||
"entries": [
|
||||
{
|
||||
"id": "warrior",
|
||||
"display_name": "戦士",
|
||||
"base_patience": 65,
|
||||
"risk_tolerance": 75,
|
||||
"legal_sensitivity": 35,
|
||||
"quality_sensitivity": 35,
|
||||
"wealth_min": 300,
|
||||
"wealth_max": 900,
|
||||
"credit_limit_gold": 100,
|
||||
"minimum_quality": 25,
|
||||
"schedule_profile": "evening",
|
||||
"tags": ["combatant"],
|
||||
"preferences": {"food": 18, "security": 4, "tavern": 15},
|
||||
"need_rates": {"hunger": 10, "hygiene": 0, "intimacy": 0, "leisure": 5, "medical": 0, "sleep": 6},
|
||||
"group_size_weights": {"1": 35, "2": 45, "3": 20}
|
||||
},
|
||||
{
|
||||
"id": "mage",
|
||||
"display_name": "魔法使い",
|
||||
"base_patience": 45,
|
||||
"risk_tolerance": 45,
|
||||
"legal_sensitivity": 50,
|
||||
"quality_sensitivity": 60,
|
||||
"wealth_min": 450,
|
||||
"wealth_max": 1200,
|
||||
"credit_limit_gold": 200,
|
||||
"minimum_quality": 40,
|
||||
"schedule_profile": "day",
|
||||
"tags": ["mana_sensitive", "noise_sensitive"],
|
||||
"preferences": {"mana": 20, "quiet": 14, "tavern": -10},
|
||||
"need_rates": {"hunger": 7, "hygiene": 0, "intimacy": 0, "leisure": 4, "medical": 0, "sleep": 7},
|
||||
"group_size_weights": {"1": 60, "2": 35, "3": 5}
|
||||
},
|
||||
{
|
||||
"id": "rogue",
|
||||
"display_name": "盗賊",
|
||||
"base_patience": 50,
|
||||
"risk_tolerance": 85,
|
||||
"legal_sensitivity": 15,
|
||||
"quality_sensitivity": 30,
|
||||
"wealth_min": 250,
|
||||
"wealth_max": 1000,
|
||||
"credit_limit_gold": 80,
|
||||
"minimum_quality": 20,
|
||||
"schedule_profile": "night",
|
||||
"tags": ["stealthy", "underworld"],
|
||||
"preferences": {"security": -12, "tavern": 10, "underground": 24},
|
||||
"need_rates": {"hunger": 7, "hygiene": 0, "intimacy": 0, "leisure": 7, "medical": 0, "sleep": 5},
|
||||
"group_size_weights": {"1": 70, "2": 25, "3": 5}
|
||||
},
|
||||
{
|
||||
"id": "cleric",
|
||||
"display_name": "聖職者",
|
||||
"base_patience": 55,
|
||||
"risk_tolerance": 20,
|
||||
"legal_sensitivity": 90,
|
||||
"quality_sensitivity": 55,
|
||||
"wealth_min": 220,
|
||||
"wealth_max": 750,
|
||||
"credit_limit_gold": 50,
|
||||
"minimum_quality": 45,
|
||||
"schedule_profile": "day",
|
||||
"tags": ["faith_aligned"],
|
||||
"preferences": {"faith": 24, "quiet": 8, "underground": -25},
|
||||
"need_rates": {"hunger": 7, "hygiene": 0, "intimacy": 0, "leisure": 3, "medical": 0, "sleep": 6},
|
||||
"group_size_weights": {"1": 45, "2": 35, "3": 20}
|
||||
},
|
||||
{
|
||||
"id": "noble",
|
||||
"display_name": "貴族",
|
||||
"base_patience": 30,
|
||||
"risk_tolerance": 35,
|
||||
"legal_sensitivity": 65,
|
||||
"quality_sensitivity": 95,
|
||||
"wealth_min": 1800,
|
||||
"wealth_max": 5000,
|
||||
"credit_limit_gold": 1500,
|
||||
"minimum_quality": 70,
|
||||
"schedule_profile": "evening",
|
||||
"tags": ["vip"],
|
||||
"preferences": {"luxury": 28, "quiet": 10, "vip": 25},
|
||||
"need_rates": {"hunger": 6, "hygiene": 0, "intimacy": 0, "leisure": 6, "medical": 0, "sleep": 6},
|
||||
"group_size_weights": {"1": 20, "2": 50, "3": 30}
|
||||
},
|
||||
{
|
||||
"id": "merchant",
|
||||
"display_name": "商人",
|
||||
"base_patience": 45,
|
||||
"risk_tolerance": 50,
|
||||
"legal_sensitivity": 55,
|
||||
"quality_sensitivity": 60,
|
||||
"wealth_min": 900,
|
||||
"wealth_max": 3200,
|
||||
"credit_limit_gold": 900,
|
||||
"minimum_quality": 50,
|
||||
"schedule_profile": "day",
|
||||
"tags": ["trade_focused"],
|
||||
"preferences": {"food": 7, "trade": 25, "underground": 3},
|
||||
"need_rates": {"hunger": 8, "hygiene": 0, "intimacy": 0, "leisure": 4, "medical": 0, "sleep": 7},
|
||||
"group_size_weights": {"1": 35, "2": 45, "3": 20}
|
||||
},
|
||||
{
|
||||
"id": "outsider",
|
||||
"display_name": "亜人・魔族客",
|
||||
"base_patience": 55,
|
||||
"risk_tolerance": 65,
|
||||
"legal_sensitivity": 35,
|
||||
"quality_sensitivity": 45,
|
||||
"wealth_min": 350,
|
||||
"wealth_max": 1400,
|
||||
"credit_limit_gold": 250,
|
||||
"minimum_quality": 35,
|
||||
"schedule_profile": "night",
|
||||
"tags": ["nocturnal"],
|
||||
"preferences": {"nightlife": 18, "service": 7, "underground": 12},
|
||||
"need_rates": {"hunger": 7, "hygiene": 0, "intimacy": 0, "leisure": 7, "medical": 0, "sleep": 5},
|
||||
"group_size_weights": {"1": 40, "2": 40, "3": 20}
|
||||
},
|
||||
{
|
||||
"id": "diplomat",
|
||||
"display_name": "外交官",
|
||||
"base_patience": 35,
|
||||
"risk_tolerance": 30,
|
||||
"legal_sensitivity": 80,
|
||||
"quality_sensitivity": 90,
|
||||
"wealth_min": 1500,
|
||||
"wealth_max": 4200,
|
||||
"credit_limit_gold": 1800,
|
||||
"minimum_quality": 75,
|
||||
"schedule_profile": "day",
|
||||
"tags": ["diplomatic", "vip"],
|
||||
"preferences": {"luxury": 20, "quiet": 12, "security": 15, "vip": 30},
|
||||
"need_rates": {"hunger": 6, "hygiene": 0, "intimacy": 0, "leisure": 4, "medical": 0, "sleep": 7},
|
||||
"group_size_weights": {"1": 15, "2": 55, "3": 30}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"content_type": "species",
|
||||
"entries": [
|
||||
{
|
||||
"id": "human",
|
||||
"display_name": "人間",
|
||||
"adult_age": 18,
|
||||
"wealth_multiplier_bp": 10000,
|
||||
"patience_bonus": 0,
|
||||
"risk_bonus": 0,
|
||||
"tags": ["human"],
|
||||
"preference_modifiers": {},
|
||||
"need_rate_modifiers": {}
|
||||
},
|
||||
{
|
||||
"id": "elf",
|
||||
"display_name": "エルフ",
|
||||
"adult_age": 20,
|
||||
"wealth_multiplier_bp": 11000,
|
||||
"patience_bonus": 5,
|
||||
"risk_bonus": -5,
|
||||
"tags": ["elf", "mana_affinity", "noise_sensitive"],
|
||||
"preference_modifiers": {"mana": 10, "quiet": 8},
|
||||
"need_rate_modifiers": {"sleep": -1}
|
||||
},
|
||||
{
|
||||
"id": "beastfolk",
|
||||
"display_name": "獣人",
|
||||
"adult_age": 18,
|
||||
"wealth_multiplier_bp": 9500,
|
||||
"patience_bonus": 10,
|
||||
"risk_bonus": 10,
|
||||
"tags": ["beastfolk"],
|
||||
"preference_modifiers": {"food": 8, "security": 3},
|
||||
"need_rate_modifiers": {"hunger": 1}
|
||||
},
|
||||
{
|
||||
"id": "demonfolk",
|
||||
"display_name": "魔族",
|
||||
"adult_age": 20,
|
||||
"wealth_multiplier_bp": 10500,
|
||||
"patience_bonus": 0,
|
||||
"risk_bonus": 15,
|
||||
"tags": ["demonfolk", "night_affinity"],
|
||||
"preference_modifiers": {"nightlife": 10, "underground": 8},
|
||||
"need_rate_modifiers": {"leisure": 1}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"content_type": "staff_candidates",
|
||||
"entries": [
|
||||
{"id":"staff_akane","display_name":"アカネ","age":24,"adult_verified":true,"role_id":"receptionist","daily_wage":120,"signing_cost":180,"preferred_shift":"day","traits":["friendly"],"skills":{"combat":15,"operation":42,"service":68,"underworld":5},"permitted_task_tags":["reception","service"]},
|
||||
{"id":"staff_bardo","display_name":"バルド","age":38,"adult_verified":true,"role_id":"receptionist","daily_wage":135,"signing_cost":220,"preferred_shift":"night","traits":["calm"],"skills":{"combat":22,"operation":55,"service":62,"underworld":18},"permitted_task_tags":["reception","service"]},
|
||||
{"id":"staff_chika","display_name":"チカ","age":27,"adult_verified":true,"role_id":"cook","daily_wage":145,"signing_cost":250,"preferred_shift":"day","traits":["cleanly"],"skills":{"combat":8,"operation":76,"service":32,"underworld":4},"permitted_task_tags":["cooking","supply"]},
|
||||
{"id":"staff_doran","display_name":"ドラン","age":44,"adult_verified":true,"role_id":"cook","daily_wage":160,"signing_cost":300,"preferred_shift":"night","traits":["mentor"],"skills":{"combat":20,"operation":82,"service":28,"underworld":12},"permitted_task_tags":["cooking","supply"]},
|
||||
{"id":"staff_eri","display_name":"エリ","age":22,"adult_verified":true,"role_id":"cleaner","daily_wage":90,"signing_cost":100,"preferred_shift":"day","traits":["cleanly"],"skills":{"combat":6,"operation":61,"service":35,"underworld":3},"permitted_task_tags":["cleaning","maintenance"]},
|
||||
{"id":"staff_fugo","display_name":"フゴ","age":31,"adult_verified":true,"role_id":"cleaner","daily_wage":100,"signing_cost":130,"preferred_shift":"night","traits":["night_owl"],"skills":{"combat":18,"operation":65,"service":22,"underworld":20},"permitted_task_tags":["cleaning","maintenance"]},
|
||||
{"id":"staff_gina","display_name":"ジーナ","age":29,"adult_verified":true,"role_id":"porter","daily_wage":110,"signing_cost":150,"preferred_shift":"day","traits":["careful"],"skills":{"combat":28,"operation":70,"service":20,"underworld":10},"permitted_task_tags":["logistics","rescue","supply"]},
|
||||
{"id":"staff_haru","display_name":"ハル","age":21,"adult_verified":true,"role_id":"porter","daily_wage":95,"signing_cost":100,"preferred_shift":"night","traits":["night_owl"],"skills":{"combat":24,"operation":58,"service":25,"underworld":28},"permitted_task_tags":["logistics","rescue","supply"]},
|
||||
{"id":"staff_iris","display_name":"イリス","age":26,"adult_verified":true,"role_id":"attendant","daily_wage":130,"signing_cost":210,"preferred_shift":"day","traits":["friendly"],"skills":{"combat":10,"operation":38,"service":74,"underworld":8},"permitted_task_tags":["bath","room_service","service"]},
|
||||
{"id":"staff_juno","display_name":"ユノ","age":33,"adult_verified":true,"role_id":"attendant","daily_wage":140,"signing_cost":240,"preferred_shift":"night","traits":["calm"],"skills":{"combat":12,"operation":45,"service":78,"underworld":22},"permitted_task_tags":["bath","room_service","service"]},
|
||||
{"id":"staff_klaus","display_name":"クラウス","age":36,"adult_verified":true,"role_id":"guard","daily_wage":155,"signing_cost":280,"preferred_shift":"day","traits":["short_tempered"],"skills":{"combat":82,"operation":34,"service":18,"underworld":16},"permitted_task_tags":["defense","escort","security"]},
|
||||
{"id":"staff_lina","display_name":"リナ","age":30,"adult_verified":true,"role_id":"guard","daily_wage":150,"signing_cost":260,"preferred_shift":"night","traits":["night_owl"],"skills":{"combat":77,"operation":38,"service":25,"underworld":30},"permitted_task_tags":["defense","escort","security"]},
|
||||
{"id":"staff_marc","display_name":"マルク","age":41,"adult_verified":true,"role_id":"guard","daily_wage":170,"signing_cost":330,"preferred_shift":"any","traits":["mentor"],"skills":{"combat":88,"operation":46,"service":20,"underworld":25},"permitted_task_tags":["defense","escort","security"]},
|
||||
{"id":"staff_nadia","display_name":"ナディア","age":28,"adult_verified":true,"role_id":"bartender","daily_wage":145,"signing_cost":240,"preferred_shift":"night","traits":["merchant_minded"],"skills":{"combat":20,"operation":48,"service":76,"underworld":35},"permitted_task_tags":["bar","service","supply"]},
|
||||
{"id":"staff_otto","display_name":"オットー","age":35,"adult_verified":true,"role_id":"bartender","daily_wage":150,"signing_cost":270,"preferred_shift":"night","traits":["friendly"],"skills":{"combat":26,"operation":52,"service":79,"underworld":32},"permitted_task_tags":["bar","service","supply"]},
|
||||
{"id":"staff_petra","display_name":"ペトラ","age":25,"adult_verified":true,"role_id":"masseur","daily_wage":145,"signing_cost":260,"preferred_shift":"day","traits":["careful"],"skills":{"combat":8,"operation":35,"service":81,"underworld":18},"permitted_task_tags":["adult_service","massage","service"]},
|
||||
{"id":"staff_quinn","display_name":"クイン","age":32,"adult_verified":true,"role_id":"masseur","daily_wage":160,"signing_cost":320,"preferred_shift":"night","traits":["underworld_savvy"],"skills":{"combat":18,"operation":40,"service":84,"underworld":55},"permitted_task_tags":["adult_service","massage","service"]},
|
||||
{"id":"staff_rika","display_name":"リカ","age":23,"adult_verified":true,"role_id":"clerk","daily_wage":105,"signing_cost":140,"preferred_shift":"day","traits":["merchant_minded"],"skills":{"combat":5,"operation":67,"service":58,"underworld":7},"permitted_task_tags":["accounting","reception","trade"]},
|
||||
{"id":"staff_sven","display_name":"スヴェン","age":39,"adult_verified":true,"role_id":"maintenance","daily_wage":125,"signing_cost":190,"preferred_shift":"any","traits":["careful"],"skills":{"combat":32,"operation":74,"service":16,"underworld":15},"permitted_task_tags":["construction","maintenance","repair"]},
|
||||
{"id":"staff_tessa","display_name":"テッサ","age":34,"adult_verified":true,"role_id":"medic","daily_wage":165,"signing_cost":340,"preferred_shift":"any","traits":["calm"],"skills":{"combat":14,"operation":69,"service":63,"underworld":12},"permitted_task_tags":["medical","rescue","service"]}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"content_type": "unique_characters",
|
||||
"entries": [
|
||||
{
|
||||
"id": "heroine_anri",
|
||||
"display_name": "アンリ",
|
||||
"character_kind": "heroine",
|
||||
"age": 25,
|
||||
"adult_verified": true,
|
||||
"role_id": "innkeeper",
|
||||
"counterpart_id": "rival_rai",
|
||||
"preferred_shift": "day",
|
||||
"traits": ["friendly", "unique", "unsellable"],
|
||||
"skills": {"combat": 24, "operation": 66, "service": 82, "underworld": 18},
|
||||
"mechanical_effects": {"assigned_floor_patience_loss_multiplier_bp": 9000}
|
||||
},
|
||||
{
|
||||
"id": "rival_rai",
|
||||
"display_name": "ライ",
|
||||
"character_kind": "rival",
|
||||
"age": 29,
|
||||
"adult_verified": true,
|
||||
"role_id": "influencer",
|
||||
"counterpart_id": "heroine_anri",
|
||||
"preferred_shift": "night",
|
||||
"traits": ["diplomatic", "unique", "unsellable"],
|
||||
"skills": {"combat": 45, "operation": 38, "service": 72, "underworld": 68},
|
||||
"mechanical_effects": {"base_shield_attack": 8, "night_shield_attack_bonus": 4}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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"])
|
||||
@@ -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"])
|
||||
@@ -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"])
|
||||
@@ -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"])
|
||||
@@ -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"])
|
||||
@@ -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"])
|
||||
@@ -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"])
|
||||
@@ -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"])
|
||||
@@ -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"])
|
||||
@@ -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"])
|
||||
@@ -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"])
|
||||
@@ -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"])
|
||||
@@ -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"])
|
||||
@@ -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"])
|
||||
@@ -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"])
|
||||
@@ -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"])
|
||||
@@ -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"])
|
||||
@@ -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"])
|
||||
@@ -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"])
|
||||
Reference in New Issue
Block a user