Jonas Reith 9ea573d681 Add Diablo-style combat: player health/attack/click-move, enemies, tile-based arenas
Player (player/player.gd, shared by both island.tscn's real Player and
the player/player.tscn debug prototype via the same script):
- Health (max_health/health, take_damage, heal_full, death via
  change_scene_to_file to a new Game Over screen).
- Left-click move-to-point layered onto existing WASD (WASD cancels an
  active click-target and takes priority; click-move re-derives the
  existing screen-relative animation logic from the world-space
  direction instead of duplicating it). New "attack" input action
  (Space) does a simple range check against everything in the
  "enemies" group. Runs via _unhandled_input so an open interaction
  menu naturally takes priority (button consumes the event first).

New systems:
- world/enemy/enemy.gd + .tscn: direct-chase CharacterBody3D (no
  pathfinding), contact damage with its own cooldown, reports death to
  ArenaManager rather than freeing itself (which owns the live count).
- world/arena/tiles/: 6 placeholder tile scenes (4 plain floor colors,
  2 with a simple obstacle pillar) — pure static geometry, same
  unshaded-flat-color convention as terrain.gd.
- autoload/arena_manager.gd (new singleton): assembles a 3x3 grid of
  random tiles (center forced to plain floor) under a persistent
  ArenaRoot positioned far below the island (0,-300,0, group
  "arena_root"), rebuilding it fresh on every trigger since only one
  arena is ever active. Adds 4 axis-aligned invisible walls (same idea
  as terrain.gd's _build_edge_barrier, no rotation needed for a
  square). Spawns 3 enemies, teleports the player in. On the last
  enemy's death: calls the POI's mark_visited(), reuses
  InteractionManager.open_message() (existing, previously-unused code)
  for a "Sieg!" message, then teleports the player back after a timer.
- world/poi/poi_arena.gd + .tscn: same Area3D/sprite shell as poi.gd,
  but interacting starts an arena directly instead of opening the
  generic menu (same divergence pattern poi_gate.gd already
  established). Exposes the same duck-typed `visited` field, so
  poi_gate.gd's region-gate group check needed zero changes.
- boot/game_over_screen.gd + .tscn: same Control/Panel/Button
  structure as main_menu.tscn, one button back to the main menu.
- world/ui/player_hud.gd + .tscn: minimal CanvasLayer HP label.

Content pass: poi.gd gained `event_text` (falls back to the old flat
placeholder if unset); interaction_manager.gd's "explore" case uses it
and "rest" now actually calls player.heal_full(). Applied to region 1:
Ort1/Ort4/Ort6 became arena POIs, Ort2/Ort3/Ort5 got distinct event
text — first concrete proof of the "mix of events and arenas" pattern,
replicating to regions 2-6 is a fast follow-up.

Verified headless via direct method calls (confirmed limitation:
synthetic clicks/keypresses don't reliably drive _unhandled_input in
this harness): start_arena produces 9 tiles + a wall body + 3 enemies
and teleports the player near y=-300; killing all 3 enemies flips the
POI's visited flag and opens the win message; completing the win flow
returns the player next to the original POI; marking the other 5
region-1 POIs visited then correctly unlocks GateR1toR2 (proving the
arena-POI/gate integration without touching poi_gate.gd); player
take_damage(max_health) triggers is_dead and a scene change to
game_over_screen.tscn (confirmed after allowing deferred frames to
process). Also verified an enemy actually closes distance on the
player and lands contact damage over a live physics simulation, and
that the player's attack respects both damage and cooldown.

Not verifiable headlessly, needs in-editor testing: real click-to-move
and Space-bar attack end-to-end, combat feel/balance, arena tile
visuals.
2026-08-27 22:31:47 +02:00

530 lines
22 KiB
Plaintext
Executable File

[gd_scene format=3 uid="uid://bju1lndv8l1mo"]
[ext_resource type="Script" uid="uid://ckrqvbqw08kin" path="res://player.gd" id="1_0xm2m"]
[ext_resource type="Script" uid="uid://cpo34pbk0145n" path="res://terrain.gd" id="1_terrain"]
[ext_resource type="Texture2D" uid="uid://epcqli428yem" path="res://assets/sprites/player/debug_player.png" id="2_h2yge"]
[ext_resource type="Script" uid="uid://b0y06y7c0bihj" path="res://camera_rig.gd" id="3_h2yge"]
[ext_resource type="Script" path="res://player/equipment/equipment.gd" id="4_equip"]
[ext_resource type="PackedScene" uid="uid://be6ufrc3dsjge" path="res://poi.tscn" id="5_lquwl"]
[ext_resource type="PackedScene" path="res://world/poi/poi_gate.tscn" id="5_gate"]
[ext_resource type="PackedScene" path="res://world/poi/poi_arena.tscn" id="5_arena"]
[ext_resource type="PackedScene" path="res://world/ui/player_hud.tscn" id="9_hud"]
[ext_resource type="PackedScene" uid="uid://dmhs1oy1kh6hi" path="res://assets/models/mountain.glb" id="6_7mycd"]
[ext_resource type="PackedScene" uid="uid://gl4qpk4wto1e" path="res://assets/models/mountain2v5.glb" id="7_272bh"]
[ext_resource type="PackedScene" uid="uid://be2uq7ixlbv6b" path="res://assets/models/forest.glb" id="8_5vw27"]
[sub_resource type="Environment" id="Environment_h2yge"]
ambient_light_color = Color(0, 0, 0.31764707, 1)
ambient_light_energy = 0.3
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_player"]
radius = 0.16
height = 0.5
[sub_resource type="AtlasTexture" id="AtlasTexture_lquwl"]
atlas = ExtResource("2_h2yge")
region = Rect2(0, 0, 48, 60)
[sub_resource type="AtlasTexture" id="AtlasTexture_7mycd"]
atlas = ExtResource("2_h2yge")
region = Rect2(48, 0, 48, 60)
[sub_resource type="AtlasTexture" id="AtlasTexture_272bh"]
atlas = ExtResource("2_h2yge")
region = Rect2(96, 0, 48, 60)
[sub_resource type="AtlasTexture" id="AtlasTexture_5vw27"]
atlas = ExtResource("2_h2yge")
region = Rect2(0, 0, 48, 60)
[sub_resource type="AtlasTexture" id="AtlasTexture_kek77"]
atlas = ExtResource("2_h2yge")
region = Rect2(48, 0, 48, 60)
[sub_resource type="AtlasTexture" id="AtlasTexture_4c57u"]
atlas = ExtResource("2_h2yge")
region = Rect2(96, 0, 48, 60)
[sub_resource type="AtlasTexture" id="AtlasTexture_efxa6"]
atlas = ExtResource("2_h2yge")
region = Rect2(0, 60, 48, 60)
[sub_resource type="AtlasTexture" id="AtlasTexture_dg77c"]
atlas = ExtResource("2_h2yge")
region = Rect2(48, 60, 48, 60)
[sub_resource type="AtlasTexture" id="AtlasTexture_ycdy4"]
atlas = ExtResource("2_h2yge")
region = Rect2(96, 60, 48, 60)
[sub_resource type="AtlasTexture" id="AtlasTexture_w48qg"]
atlas = ExtResource("2_h2yge")
region = Rect2(0, 120, 48, 60)
[sub_resource type="AtlasTexture" id="AtlasTexture_vivmo"]
atlas = ExtResource("2_h2yge")
region = Rect2(48, 120, 48, 60)
[sub_resource type="AtlasTexture" id="AtlasTexture_2cqfq"]
atlas = ExtResource("2_h2yge")
region = Rect2(96, 120, 48, 60)
[sub_resource type="AtlasTexture" id="AtlasTexture_yaehf"]
atlas = ExtResource("2_h2yge")
region = Rect2(0, 180, 48, 60)
[sub_resource type="AtlasTexture" id="AtlasTexture_074og"]
atlas = ExtResource("2_h2yge")
region = Rect2(48, 180, 48, 60)
[sub_resource type="AtlasTexture" id="AtlasTexture_cegan"]
atlas = ExtResource("2_h2yge")
region = Rect2(96, 180, 48, 60)
[sub_resource type="SpriteFrames" id="SpriteFrames_82xsv"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_lquwl")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_7mycd")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_272bh")
}],
"loop": true,
"name": &"idle",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_5vw27")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_kek77")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_4c57u")
}],
"loop": true,
"name": &"move_down",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_efxa6")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_dg77c")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ycdy4")
}],
"loop": true,
"name": &"move_left",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_w48qg")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_vivmo")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_2cqfq")
}],
"loop": true,
"name": &"move_right",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_yaehf")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_074og")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_cegan")
}],
"loop": true,
"name": &"move_up",
"speed": 5.0
}]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_7mycd"]
radius = 7.0
height = 20.0
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_5vw27"]
radius = 8.5078125
height = 17.015625
[sub_resource type="CylinderShape3D" id="CylinderShape3D_5vw27"]
height = 2.2817383
radius = 0.72021484
[sub_resource type="CylinderShape3D" id="CylinderShape3D_kek77"]
height = 1.8276367
radius = 0.5517578
[node name="Main" type="Node3D" unique_id=1313637872]
[node name="Environment" type="WorldEnvironment" parent="." unique_id=753803863]
environment = SubResource("Environment_h2yge")
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="." unique_id=630943989]
[node name="Terrain" type="Node3D" parent="." unique_id=309197966]
script = ExtResource("1_terrain")
[node name="Player" type="CharacterBody3D" parent="." unique_id=1504574304 groups=["player"]]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 28.1458, -2.5, 16.25)
script = ExtResource("1_0xm2m")
[node name="CollisionShape3D" type="CollisionShape3D" parent="Player" unique_id=1483851051]
shape = SubResource("CapsuleShape3D_player")
[node name="AnimatedSprite3D" type="AnimatedSprite3D" parent="Player" unique_id=155581900]
billboard = 2
texture_filter = 0
sprite_frames = SubResource("SpriteFrames_82xsv")
animation = &"idle"
[node name="Equipment" type="Node" parent="Player"]
script = ExtResource("4_equip")
[node name="CameraRig" type="Node3D" parent="." unique_id=1094565525 groups=["camera_rig"]]
script = ExtResource("3_h2yge")
target = NodePath("../Player")
[node name="CameraArm" type="Node3D" parent="CameraRig" unique_id=1827622739]
transform = Transform3D(1, 0, 0, 0, 0.81915206, 0.57357645, 0, -0.57357645, 0.81915206, 0, 0, 0)
[node name="Camera3D" type="Camera3D" parent="CameraRig/CameraArm" unique_id=1414235198]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 12)
fov = 50.0
near = 0.1
far = 500.0
[node name="POI" parent="." unique_id=1770000468 instance=ExtResource("5_lquwl")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, 0.5, 2)
[node name="Ort1" parent="." instance=ExtResource("5_arena") groups=["region1_pois"]]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24.15, -1.214, 6.47)
poi_name = "Verlassenes Schlachtfeld"
marker_color = Color(1, 0.2, 0.2, 1)
[node name="Ort2" parent="." instance=ExtResource("5_lquwl") groups=["region1_pois"]]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 17.68, -1.214, 17.68)
poi_name = "Ort 2"
marker_color = Color(1, 0.6, 0.1, 1)
event_text = "Alte Fußspuren führen ins Nichts. Wer auch immer hier war, ist längst weitergezogen."
[node name="Ort3" parent="." instance=ExtResource("5_lquwl") groups=["region1_pois"]]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 37.17, -3.443, 7.9)
poi_name = "Ort 3"
marker_color = Color(1, 0.95, 0.2, 1)
event_text = "Ein verwittertes Wegzeichen weist auf ein Gebiet, das es nicht mehr gibt."
[node name="Ort4" parent="." instance=ExtResource("5_arena") groups=["region1_pois"]]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 25.43, -3.443, 28.24)
poi_name = "Wachpfostenruine"
marker_color = Color(0.2, 0.9, 0.3, 1)
[node name="Ort5" parent="." instance=ExtResource("5_lquwl") groups=["region1_pois"]]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 19.05, -0.7, 11.0)
poi_name = "Ort 5"
marker_color = Color(0.2, 0.5, 1, 1)
event_text = "Der Wind trägt eine Melodie herbei, die du nicht greifen kannst."
[node name="Ort6" parent="." instance=ExtResource("5_arena") groups=["region1_pois"]]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 28.37, -3.1, 22.17)
poi_name = "Vergessener Hinterhalt"
marker_color = Color(0.7, 0.3, 0.9, 1)
[node name="GateR1toR2" parent="." instance=ExtResource("5_gate")]
transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 17.1651, -2.2714, 24.7308)
poi_name = "Weiter zum nächsten Gebiet"
required_group = "region1_pois"
target_position = Vector3(12.8349, -2.0714, 27.2308)
[node name="R2_Ort1" parent="." instance=ExtResource("5_lquwl") groups=["region2_pois"]]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.4705, -1.2143, 24.1481)
poi_name = "Ort 1"
marker_color = Color(1, 0.2, 0.2, 1)
[node name="R2_Ort2" parent="." instance=ExtResource("5_lquwl") groups=["region2_pois"]]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.4705, -1.2143, 24.1481)
poi_name = "Ort 2"
marker_color = Color(1, 0.6, 0.1, 1)
[node name="R2_Ort3" parent="." instance=ExtResource("5_lquwl") groups=["region2_pois"]]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11.7426, -3.4429, 36.1401)
poi_name = "Ort 3"
marker_color = Color(1, 0.95, 0.2, 1)
[node name="R2_Ort4" parent="." instance=ExtResource("5_lquwl") groups=["region2_pois"]]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -11.7426, -3.4429, 36.1401)
poi_name = "Ort 4"
marker_color = Color(0.2, 0.9, 0.3, 1)
[node name="R2_Ort5" parent="." instance=ExtResource("5_lquwl") groups=["region2_pois"]]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0, -0.7, 22.0)
poi_name = "Ort 5"
marker_color = Color(0.2, 0.5, 1, 1)
[node name="R2_Ort6" parent="." instance=ExtResource("5_lquwl") groups=["region2_pois"]]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.0102, -3.1, 35.6497)
poi_name = "Ort 6"
marker_color = Color(0.7, 0.3, 0.9, 1)
[node name="GateR2toR3" parent="." instance=ExtResource("5_gate")]
transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, -12.8349, -2.2714, 27.2308)
poi_name = "Weiter zum nächsten Gebiet"
required_group = "region2_pois"
target_position = Vector3(-17.1651, -2.0714, 24.7308)
[node name="R3_Ort1" parent="." instance=ExtResource("5_lquwl") groups=["region3_pois"]]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -17.6777, -1.2143, 17.6777)
poi_name = "Ort 1"
marker_color = Color(1, 0.2, 0.2, 1)
[node name="R3_Ort2" parent="." instance=ExtResource("5_lquwl") groups=["region3_pois"]]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -24.1481, -1.2143, 6.4705)
poi_name = "Ort 2"
marker_color = Color(1, 0.6, 0.1, 1)
[node name="R3_Ort3" parent="." instance=ExtResource("5_lquwl") groups=["region3_pois"]]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -25.427, -3.4429, 28.2395)
poi_name = "Ort 3"
marker_color = Color(1, 0.95, 0.2, 1)
[node name="R3_Ort4" parent="." instance=ExtResource("5_lquwl") groups=["region3_pois"]]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -37.1696, -3.4429, 7.9006)
poi_name = "Ort 4"
marker_color = Color(0.2, 0.9, 0.3, 1)
[node name="R3_Ort5" parent="." instance=ExtResource("5_lquwl") groups=["region3_pois"]]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -19.0526, -0.7, 11.0)
poi_name = "Ort 5"
marker_color = Color(0.2, 0.5, 1, 1)
[node name="R3_Ort6" parent="." instance=ExtResource("5_lquwl") groups=["region3_pois"]]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -33.3786, -3.1, 13.4858)
poi_name = "Ort 6"
marker_color = Color(0.7, 0.3, 0.9, 1)
[node name="GateR3toR4" parent="." instance=ExtResource("5_gate")]
transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, -30.0, -2.2714, 2.5)
poi_name = "Weiter zum nächsten Gebiet"
required_group = "region3_pois"
target_position = Vector3(-30.0, -2.0714, -2.5)
[node name="R4_Ort1" parent="." instance=ExtResource("5_lquwl") groups=["region4_pois"]]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -24.1481, -1.2143, -6.4705)
poi_name = "Ort 1"
marker_color = Color(1, 0.2, 0.2, 1)
[node name="R4_Ort2" parent="." instance=ExtResource("5_lquwl") groups=["region4_pois"]]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -17.6777, -1.2143, -17.6777)
poi_name = "Ort 2"
marker_color = Color(1, 0.6, 0.1, 1)
[node name="R4_Ort3" parent="." instance=ExtResource("5_lquwl") groups=["region4_pois"]]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -37.1696, -3.4429, -7.9006)
poi_name = "Ort 3"
marker_color = Color(1, 0.95, 0.2, 1)
[node name="R4_Ort4" parent="." instance=ExtResource("5_lquwl") groups=["region4_pois"]]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -25.427, -3.4429, -28.2395)
poi_name = "Ort 4"
marker_color = Color(0.2, 0.9, 0.3, 1)
[node name="R4_Ort5" parent="." instance=ExtResource("5_lquwl") groups=["region4_pois"]]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -19.0526, -0.7, -11.0)
poi_name = "Ort 5"
marker_color = Color(0.2, 0.5, 1, 1)
[node name="R4_Ort6" parent="." instance=ExtResource("5_lquwl") groups=["region4_pois"]]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -28.3684, -3.1, -22.1638)
poi_name = "Ort 6"
marker_color = Color(0.7, 0.3, 0.9, 1)
[node name="GateR4toR5" parent="." instance=ExtResource("5_gate")]
transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, -17.1651, -2.2714, -24.7308)
poi_name = "Weiter zum nächsten Gebiet"
required_group = "region4_pois"
target_position = Vector3(-12.8349, -2.0714, -27.2308)
[node name="R5_Ort1" parent="." instance=ExtResource("5_lquwl") groups=["region5_pois"]]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.4705, -1.2143, -24.1481)
poi_name = "Ort 1"
marker_color = Color(1, 0.2, 0.2, 1)
[node name="R5_Ort2" parent="." instance=ExtResource("5_lquwl") groups=["region5_pois"]]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.4705, -1.2143, -24.1481)
poi_name = "Ort 2"
marker_color = Color(1, 0.6, 0.1, 1)
[node name="R5_Ort3" parent="." instance=ExtResource("5_lquwl") groups=["region5_pois"]]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -11.7426, -3.4429, -36.1401)
poi_name = "Ort 3"
marker_color = Color(1, 0.95, 0.2, 1)
[node name="R5_Ort4" parent="." instance=ExtResource("5_lquwl") groups=["region5_pois"]]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11.7426, -3.4429, -36.1401)
poi_name = "Ort 4"
marker_color = Color(0.2, 0.9, 0.3, 1)
[node name="R5_Ort5" parent="." instance=ExtResource("5_lquwl") groups=["region5_pois"]]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0, -0.7, -22.0)
poi_name = "Ort 5"
marker_color = Color(0.2, 0.5, 1, 1)
[node name="R5_Ort6" parent="." instance=ExtResource("5_lquwl") groups=["region5_pois"]]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.0102, -3.1, -35.6497)
poi_name = "Ort 6"
marker_color = Color(0.7, 0.3, 0.9, 1)
[node name="GateR5toR6" parent="." instance=ExtResource("5_gate")]
transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 12.8349, -2.2714, -27.2308)
poi_name = "Weiter zum nächsten Gebiet"
required_group = "region5_pois"
target_position = Vector3(17.1651, -2.0714, -24.7308)
[node name="R6_Ort1" parent="." instance=ExtResource("5_lquwl") groups=["region6_pois"]]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 17.6777, -1.2143, -17.6777)
poi_name = "Ort 1"
marker_color = Color(1, 0.2, 0.2, 1)
[node name="R6_Ort2" parent="." instance=ExtResource("5_lquwl") groups=["region6_pois"]]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24.1481, -1.2143, -6.4705)
poi_name = "Ort 2"
marker_color = Color(1, 0.6, 0.1, 1)
[node name="R6_Ort3" parent="." instance=ExtResource("5_lquwl") groups=["region6_pois"]]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 25.427, -3.4429, -28.2395)
poi_name = "Ort 3"
marker_color = Color(1, 0.95, 0.2, 1)
[node name="R6_Ort4" parent="." instance=ExtResource("5_lquwl") groups=["region6_pois"]]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 37.1696, -3.4429, -7.9006)
poi_name = "Ort 4"
marker_color = Color(0.2, 0.9, 0.3, 1)
[node name="R6_Ort5" parent="." instance=ExtResource("5_lquwl") groups=["region6_pois"]]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 19.0526, -0.7, -11.0)
poi_name = "Ort 5"
marker_color = Color(0.2, 0.5, 1, 1)
[node name="R6_Ort6" parent="." instance=ExtResource("5_lquwl") groups=["region6_pois"]]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 33.3786, -3.1, -13.4858)
poi_name = "Ort 6"
marker_color = Color(0.7, 0.3, 0.9, 1)
[node name="GateR6toCenter" parent="." instance=ExtResource("5_gate")]
transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 13.8564, 0.1286, -8.0)
poi_name = "Tor zur Mitte"
required_group = "region6_pois"
target_position = Vector3(9.9593, 0.5, -5.75)
[node name="Node3D" type="Node3D" parent="." unique_id=597556846]
transform = Transform3D(0.1, 0, 0, 0, 0.1, 0, 0, 0, 0.1, 3.6214647, -0.23645921, 0.47627413)
[node name="mountain" parent="Node3D" unique_id=2116024014 instance=ExtResource("6_7mycd")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -7.0459113)
[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D/mountain" unique_id=1378662574]
shape = SubResource("CapsuleShape3D_7mycd")
[node name="mountain2" parent="Node3D" unique_id=1164111955 instance=ExtResource("6_7mycd")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.6505966, 0, -7.0459113)
[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D/mountain2" unique_id=1044531282]
shape = SubResource("CapsuleShape3D_7mycd")
[node name="mountain3" parent="Node3D" unique_id=1031030133 instance=ExtResource("6_7mycd")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.5228462, 0, -2.3011575)
[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D/mountain3" unique_id=1670981761]
shape = SubResource("CapsuleShape3D_7mycd")
[node name="mountain4" parent="Node3D" unique_id=213527076 instance=ExtResource("6_7mycd")]
[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D/mountain4" unique_id=370339188]
shape = SubResource("CapsuleShape3D_7mycd")
[node name="Node3D2" type="Node3D" parent="." unique_id=97687536]
[node name="mountain2v5" parent="Node3D2" unique_id=1347056585 instance=ExtResource("7_272bh")]
transform = Transform3D(0.05, 0, 0, 0, 0.05, 0, 0, 0, 0.05, 5.449942, -0.15, 0.60275173)
[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D2/mountain2v5" unique_id=1250318876]
shape = SubResource("CapsuleShape3D_5vw27")
[node name="mountain2v6" parent="Node3D2" unique_id=722974757 instance=ExtResource("7_272bh")]
transform = Transform3D(0.05, 0, 0, 0, 0.05, 0, 0, 0, 0.05, 5.309197, -0.15, 0.16273117)
[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D2/mountain2v6" unique_id=232796233]
shape = SubResource("CapsuleShape3D_5vw27")
[node name="mountain2v7" parent="Node3D2" unique_id=279879297 instance=ExtResource("7_272bh")]
transform = Transform3D(0.05, 0, 0, 0, 0.05, 0, 0, 0, 0.05, 5.801124, -0.15, -0.25847834)
[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D2/mountain2v7" unique_id=271099516]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.04194641, 0.13291359, -0.03959179)
shape = SubResource("CapsuleShape3D_5vw27")
[node name="mountain2v8" parent="Node3D2" unique_id=1413121196 instance=ExtResource("7_272bh")]
transform = Transform3D(0.05, 0, 0, 0, 0.05, 0, 0, 0, 0.05, 6.2565756, -0.15, 0.1419242)
[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D2/mountain2v8" unique_id=632282427]
shape = SubResource("CapsuleShape3D_5vw27")
[node name="mountain2v9" parent="Node3D2" unique_id=888354952 instance=ExtResource("7_272bh")]
transform = Transform3D(0.05, 0, 0, 0, 0.05, 0, 0, 0, 0.05, 5.309197, -0.15, -0.051428914)
[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D2/mountain2v9" unique_id=1549534653]
shape = SubResource("CapsuleShape3D_5vw27")
[node name="Node3D3" type="Node3D" parent="." unique_id=2010190045]
transform = Transform3D(0.2, 0, 0, 0, 0.2, 0, 0, 0, 0.2, 6.5570726, 0.80977285, 4.959112)
[node name="forest" parent="Node3D3" unique_id=1142695276 instance=ExtResource("8_5vw27")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.89663315, -3.8352594, -0.41697693)
[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D3/forest" unique_id=1992100035]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0569582, -0.37715888, -0.2822442)
shape = SubResource("CylinderShape3D_5vw27")
[node name="CollisionShape3D2" type="CollisionShape3D" parent="Node3D3/forest" unique_id=2004443612]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.1139164, -0.75431776, 0.11189556)
shape = SubResource("CylinderShape3D_5vw27")
[node name="CollisionShape3D3" type="CollisionShape3D" parent="Node3D3/forest" unique_id=1398520795]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.4591012, -0.5861306, 0.51387644)
shape = SubResource("CylinderShape3D_5vw27")
[node name="forest2" parent="Node3D3" unique_id=2120638756 instance=ExtResource("8_5vw27")]
transform = Transform3D(-0.87206924, 0, 0.4893825, 0, 1, 0, -0.4893825, 0, -0.87206924, 0, -3.83526, 0)
[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D3/forest2" unique_id=92773776]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.15763283, -0.2685547, -0.28089857)
shape = SubResource("CylinderShape3D_kek77")
[node name="CollisionShape3D2" type="CollisionShape3D" parent="Node3D3/forest2" unique_id=291722829]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.021739006, -0.5371094, 0.2103684)
shape = SubResource("CylinderShape3D_kek77")
[node name="CollisionShape3D3" type="CollisionShape3D" parent="Node3D3/forest2" unique_id=1876581014]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.084690094, -0.5371094, 0.40002155)
shape = SubResource("CylinderShape3D_kek77")
[node name="ArenaRoot" type="Node3D" parent="." groups=["arena_root"]]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -300, 0)
[node name="PlayerHUD" parent="." instance=ExtResource("9_hud")]