P14-02: Add buildable Mana warp (A07)
2x2 FRONT warp at 3000G/30 materials/360 min, 15G/day and 1 Mana upkeep. Every completed warp pair is linked by one path connector, so crossing is a single step; a 3-Mana fare per rider is charged once in the step's tick. Warps close while either end is unpowered, the reserve is empty or below one fare, and blocked arrivals offer no step. Saves validate the derived links. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
7e6e540837
commit
0cfaec1626
@@ -35,6 +35,7 @@ const KIND_GUEST_ELEVATOR: StringName = &"guest_elevator"
|
||||
const KIND_SERVICE_ELEVATOR: StringName = &"service_elevator"
|
||||
const KIND_GUEST_STAIRS: StringName = &"guest_stairs"
|
||||
const KIND_SERVICE_STAIRS: StringName = &"service_stairs"
|
||||
const KIND_MANA_WARP: StringName = &"mana_warp"
|
||||
const SUPPORTED_KINDS: Array[StringName] = [
|
||||
KIND_GUEST_CORRIDOR,
|
||||
KIND_SERVICE_CORRIDOR,
|
||||
@@ -43,6 +44,7 @@ const SUPPORTED_KINDS: Array[StringName] = [
|
||||
KIND_SERVICE_ELEVATOR,
|
||||
KIND_GUEST_STAIRS,
|
||||
KIND_SERVICE_STAIRS,
|
||||
KIND_MANA_WARP,
|
||||
]
|
||||
const KNOWN_KINDS: Array[StringName] = [
|
||||
KIND_GUEST_CORRIDOR,
|
||||
@@ -52,6 +54,7 @@ const KNOWN_KINDS: Array[StringName] = [
|
||||
KIND_SERVICE_ELEVATOR,
|
||||
KIND_GUEST_STAIRS,
|
||||
KIND_SERVICE_STAIRS,
|
||||
KIND_MANA_WARP,
|
||||
]
|
||||
|
||||
const UNSUPPORTED_VERTICAL_KINDS: Array[StringName] = []
|
||||
@@ -692,6 +695,17 @@ static func _kind_schema(kind: StringName) -> Dictionary:
|
||||
&"guest_access", &"movement", &"schema_facility_proxy", &"vertical_connector",
|
||||
]),
|
||||
}
|
||||
KIND_MANA_WARP:
|
||||
# Walkable FRONT cells; WarpService links every warp pair (A07).
|
||||
return {
|
||||
&"layer": PathType.FRONT,
|
||||
&"footprint": Vector2i(2, 2),
|
||||
&"pass_through": true,
|
||||
&"staff_only": false,
|
||||
&"tags": _sorted_name_array([
|
||||
&"guest_access", &"movement", &"schema_facility_proxy", &"warp",
|
||||
]),
|
||||
}
|
||||
KIND_SERVICE_ELEVATOR:
|
||||
return {
|
||||
&"layer": PathType.BACK,
|
||||
|
||||
@@ -1420,6 +1420,15 @@ func has_connector(connector_id: StringName) -> bool:
|
||||
return _connectors.has(connector_id)
|
||||
|
||||
|
||||
func get_connector_ids_with_prefix(prefix: String) -> Array[StringName]:
|
||||
var ids: Array[StringName] = []
|
||||
for connector_id: Variant in _connectors:
|
||||
if String(connector_id).begins_with(prefix):
|
||||
ids.append(StringName(connector_id))
|
||||
ids.sort_custom(func(a: StringName, b: StringName) -> bool: return String(a) < String(b))
|
||||
return ids
|
||||
|
||||
|
||||
func get_connector(connector_id: StringName) -> Dictionary:
|
||||
if not _connectors.has(connector_id):
|
||||
return {}
|
||||
|
||||
Reference in New Issue
Block a user