Add modular holdover fishing world

This commit is contained in:
Alexander Sellite 2026-07-26 00:33:37 -04:00
parent 6a5923fdb8
commit a91f2b9825
17 changed files with 1354 additions and 191 deletions

View file

@ -1,204 +1,137 @@
[gd_scene load_steps=25 format=3]
[gd_scene load_steps=16 format=3]
[ext_resource type="Script" path="res://world/fishable_water_region.gd" id="1_water_region"]
[ext_resource type="Resource" path="res://fish/pools/test_water_pool.tres" id="2_fish_pool"]
[ext_resource type="Script" path="res://world/test_world.gd" id="3_world"]
[ext_resource type="Script" path="res://world/player_water_trigger.gd" id="4_water_trigger"]
[ext_resource type="Script" path="res://world/safe_respawn_point.gd" id="5_safe_point"]
[ext_resource type="Script" path="res://world/fishing_shop_interaction.gd" id="6_shop"]
[sub_resource type="BoxShape3D" id="GroundShape"]
size = Vector3(30, 1, 30)
[sub_resource type="BoxMesh" id="GroundMesh"]
size = Vector3(30, 1, 30)
[sub_resource type="StandardMaterial3D" id="GroundMaterial"]
albedo_color = Color(0.25, 0.52, 0.24, 1)
[sub_resource type="BoxShape3D" id="DockShape"]
size = Vector3(5, 0.5, 10)
[sub_resource type="BoxMesh" id="DockMesh"]
size = Vector3(5, 0.5, 10)
[sub_resource type="StandardMaterial3D" id="DockMaterial"]
albedo_color = Color(0.42, 0.25, 0.12, 1)
[sub_resource type="PlaneMesh" id="WaterMesh"]
size = Vector2(40, 25)
[sub_resource type="BoxShape3D" id="FishableWaterShape"]
size = Vector3(40, 0.16, 19.5)
[sub_resource type="BoxShape3D" id="FishableShoreShape"]
size = Vector3(17.5, 0.16, 5.5)
[sub_resource type="BoxShape3D" id="PlayerWaterShape"]
size = Vector3(40, 5, 19.5)
[sub_resource type="BoxShape3D" id="PlayerWaterShoreShape"]
size = Vector3(17.5, 5, 5.5)
[sub_resource type="StandardMaterial3D" id="WaterMaterial"]
transparency = 1
albedo_color = Color(0.1, 0.45, 0.7, 0.72)
roughness = 0.25
[ext_resource type="Script" path="res://world/test_world.gd" id="1_world"]
[ext_resource type="PackedScene" path="res://world/regions/village_region.tscn" id="2_village"]
[ext_resource type="PackedScene" path="res://world/regions/starter_pond_region.tscn" id="3_pond"]
[ext_resource type="PackedScene" path="res://world/regions/river_region.tscn" id="4_river"]
[ext_resource type="PackedScene" path="res://world/regions/lake_region.tscn" id="5_lake"]
[ext_resource type="PackedScene" path="res://world/regions/marsh_region.tscn" id="6_marsh"]
[ext_resource type="PackedScene" path="res://world/regions/coastal_dock_region.tscn" id="7_coast"]
[ext_resource type="Script" path="res://world/player_water_trigger.gd" id="8_water_trigger"]
[sub_resource type="Environment" id="Environment"]
background_mode = 1
background_color = Color(0.48, 0.72, 0.9, 1)
background_color = Color(0.48, 0.74, 0.92, 1)
ambient_light_source = 3
ambient_light_color = Color(0.65, 0.72, 0.8, 1)
ambient_light_energy = 0.65
ambient_light_color = Color(0.72, 0.78, 0.84, 1)
ambient_light_energy = 0.72
[sub_resource type="BoxMesh" id="ShopCounterMesh"]
size = Vector3(3.4, 1.25, 1.5)
[sub_resource type="BoxShape3D" id="SeabedShape"]
size = Vector3(180, 1, 220)
[sub_resource type="BoxMesh" id="SeabedMesh"]
size = Vector3(180, 1, 220)
[sub_resource type="StandardMaterial3D" id="SeabedMaterial"]
albedo_color = Color(0.18, 0.36, 0.27, 1)
[sub_resource type="BoxMesh" id="ShopRoofMesh"]
size = Vector3(4.2, 0.35, 2.2)
[sub_resource type="BoxShape3D" id="RiverPathShape"]
size = Vector3(40, 6, 8)
[sub_resource type="BoxMesh" id="RiverPathMesh"]
size = Vector3(40, 6, 8)
[sub_resource type="BoxShape3D" id="MarshPathShape"]
size = Vector3(5, 6, 10)
[sub_resource type="BoxMesh" id="MarshPathMesh"]
size = Vector3(5, 6, 10)
[sub_resource type="StandardMaterial3D" id="PathMaterial"]
albedo_color = Color(0.72, 0.62, 0.43, 1)
[sub_resource type="BoxMesh" id="ShopPostMesh"]
size = Vector3(0.25, 2.8, 0.25)
[sub_resource type="StandardMaterial3D" id="ShopPrimaryMaterial"]
albedo_color = Color(0.18, 0.72, 0.68, 1)
[sub_resource type="StandardMaterial3D" id="ShopAccentMaterial"]
albedo_color = Color(1, 0.72, 0.22, 1)
[sub_resource type="SphereShape3D" id="ShopInteractionShape"]
radius = 3.0
[sub_resource type="BoxShape3D" id="NorthSouthBoundsShape"]
size = Vector3(180, 12, 2)
[sub_resource type="BoxShape3D" id="EastWestBoundsShape"]
size = Vector3(2, 12, 220)
[sub_resource type="BoxShape3D" id="FailsafeShape"]
size = Vector3(178, 5, 218)
[node name="TestWorld" type="Node3D"]
script = ExtResource("3_world")
script = ExtResource("1_world")
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
[node name="Environment" type="Node3D" parent="."]
[node name="WorldEnvironment" type="WorldEnvironment" parent="Environment"]
environment = SubResource("Environment")
[node name="Sun" type="DirectionalLight3D" parent="."]
rotation_degrees = Vector3(-55, -35, 0)
[node name="Sun" type="DirectionalLight3D" parent="Environment"]
rotation_degrees = Vector3(-54, -32, 0)
light_energy = 1.1
shadow_enabled = true
[node name="Ground" type="StaticBody3D" parent="."]
[node name="SeabedBoundary" type="StaticBody3D" parent="."]
position = Vector3(0, -6.5, -38)
[node name="CollisionShape3D" type="CollisionShape3D" parent="Ground"]
shape = SubResource("GroundShape")
[node name="CollisionShape3D" type="CollisionShape3D" parent="SeabedBoundary"]
shape = SubResource("SeabedShape")
[node name="MeshInstance3D" type="MeshInstance3D" parent="Ground"]
mesh = SubResource("GroundMesh")
material_override = SubResource("GroundMaterial")
[node name="MeshInstance3D" type="MeshInstance3D" parent="SeabedBoundary"]
mesh = SubResource("SeabedMesh")
material_override = SubResource("SeabedMaterial")
[node name="Dock" type="StaticBody3D" parent="."]
position = Vector3(0, 0.75, -15)
[node name="Regions" type="Node3D" parent="."]
[node name="CollisionShape3D" type="CollisionShape3D" parent="Dock"]
shape = SubResource("DockShape")
[node name="VillageRegion" parent="Regions" instance=ExtResource("2_village")]
position = Vector3(0, 0, 15)
[node name="MeshInstance3D" type="MeshInstance3D" parent="Dock"]
mesh = SubResource("DockMesh")
material_override = SubResource("DockMaterial")
[node name="StarterPondRegion" parent="Regions" instance=ExtResource("3_pond")]
position = Vector3(-42, 0, 15)
[node name="Water" type="MeshInstance3D" parent="."]
position = Vector3(0, 0.2, -27)
mesh = SubResource("WaterMesh")
material_override = SubResource("WaterMaterial")
[node name="RiverRegion" parent="Regions" instance=ExtResource("4_river")]
position = Vector3(0, 0, -40)
[node name="FishableWater" type="Area3D" parent="."]
position = Vector3(0, 0.2, -29.75)
collision_layer = 4
collision_mask = 0
monitoring = false
script = ExtResource("1_water_region")
location_tags = Array[StringName]([&"test_lake"])
fish_pool = ExtResource("2_fish_pool")
[node name="LakeRegion" parent="Regions" instance=ExtResource("5_lake")]
position = Vector3(53, 0, -25)
[node name="CollisionShape3D" type="CollisionShape3D" parent="FishableWater"]
shape = SubResource("FishableWaterShape")
[node name="MarshRegion" parent="Regions" instance=ExtResource("6_marsh")]
position = Vector3(56, 0, 38)
[node name="ShoreLeft" type="CollisionShape3D" parent="FishableWater"]
position = Vector3(-11.25, 0, 12.5)
shape = SubResource("FishableShoreShape")
[node name="CoastalDockRegion" parent="Regions" instance=ExtResource("7_coast")]
position = Vector3(0, 0, -103)
[node name="ShoreRight" type="CollisionShape3D" parent="FishableWater"]
position = Vector3(11.25, 0, 12.5)
shape = SubResource("FishableShoreShape")
[node name="Connectors" type="Node3D" parent="."]
[node name="PlayerWaterTrigger" type="Area3D" parent="."]
unique_name_in_owner = true
position = Vector3(0, -2.3, -29.75)
[node name="VillageRiverPath" type="StaticBody3D" parent="Connectors"]
position = Vector3(0, -3, -7)
[node name="Shape" type="CollisionShape3D" parent="Connectors/VillageRiverPath"]
shape = SubResource("RiverPathShape")
[node name="Mesh" type="MeshInstance3D" parent="Connectors/VillageRiverPath"]
mesh = SubResource("RiverPathMesh")
material_override = SubResource("PathMaterial")
[node name="VillageMarshPath" type="StaticBody3D" parent="Connectors"]
position = Vector3(26.5, -3, 28)
[node name="Shape" type="CollisionShape3D" parent="Connectors/VillageMarshPath"]
shape = SubResource("MarshPathShape")
[node name="Mesh" type="MeshInstance3D" parent="Connectors/VillageMarshPath"]
mesh = SubResource("MarshPathMesh")
material_override = SubResource("PathMaterial")
[node name="Safety" type="Node3D" parent="."]
[node name="BelowWorldFailsafe" type="Area3D" parent="Safety"]
position = Vector3(0, -5, -38)
collision_layer = 8
collision_mask = 2
script = ExtResource("4_water_trigger")
script = ExtResource("8_water_trigger")
surface_height = 0.2
[node name="DeepWater" type="CollisionShape3D" parent="PlayerWaterTrigger"]
shape = SubResource("PlayerWaterShape")
[node name="FailsafeShape" type="CollisionShape3D" parent="Safety/BelowWorldFailsafe"]
shape = SubResource("FailsafeShape")
[node name="ShoreLeft" type="CollisionShape3D" parent="PlayerWaterTrigger"]
position = Vector3(-11.25, 0, 12.5)
shape = SubResource("PlayerWaterShoreShape")
[node name="WorldBounds" type="Node3D" parent="."]
[node name="ShoreRight" type="CollisionShape3D" parent="PlayerWaterTrigger"]
position = Vector3(11.25, 0, 12.5)
shape = SubResource("PlayerWaterShoreShape")
[node name="North" type="StaticBody3D" parent="WorldBounds"]
position = Vector3(0, 5, 72)
[node name="Shape" type="CollisionShape3D" parent="WorldBounds/North"]
shape = SubResource("NorthSouthBoundsShape")
[node name="SafeRespawnPoints" type="Node3D" parent="."]
unique_name_in_owner = true
[node name="South" type="StaticBody3D" parent="WorldBounds"]
position = Vector3(0, 5, -148)
[node name="Shape" type="CollisionShape3D" parent="WorldBounds/South"]
shape = SubResource("NorthSouthBoundsShape")
[node name="DockApproach" type="Marker3D" parent="SafeRespawnPoints"]
position = Vector3(0, 0.58, -9)
script = ExtResource("5_safe_point")
[node name="West" type="StaticBody3D" parent="WorldBounds"]
position = Vector3(-90, 5, -38)
[node name="Shape" type="CollisionShape3D" parent="WorldBounds/West"]
shape = SubResource("EastWestBoundsShape")
[node name="WestShore" type="Marker3D" parent="SafeRespawnPoints"]
position = Vector3(-11.5, 0.58, -11.5)
script = ExtResource("5_safe_point")
[node name="EastShore" type="Marker3D" parent="SafeRespawnPoints"]
position = Vector3(11.5, 0.58, -11.5)
script = ExtResource("5_safe_point")
[node name="DockEnd" type="Marker3D" parent="SafeRespawnPoints"]
position = Vector3(0, 1.08, -17)
script = ExtResource("5_safe_point")
[node name="FishingShop" type="Node3D" parent="."]
position = Vector3(8, 0, 5)
[node name="Counter" type="MeshInstance3D" parent="FishingShop"]
position = Vector3(0, 0.625, 0)
mesh = SubResource("ShopCounterMesh")
material_override = SubResource("ShopPrimaryMaterial")
[node name="Roof" type="MeshInstance3D" parent="FishingShop"]
position = Vector3(0, 2.25, 0)
mesh = SubResource("ShopRoofMesh")
material_override = SubResource("ShopAccentMaterial")
[node name="WestPost" type="MeshInstance3D" parent="FishingShop"]
position = Vector3(-1.55, 1.4, 0.55)
mesh = SubResource("ShopPostMesh")
material_override = SubResource("ShopPrimaryMaterial")
[node name="EastPost" type="MeshInstance3D" parent="FishingShop"]
position = Vector3(1.55, 1.4, 0.55)
mesh = SubResource("ShopPostMesh")
material_override = SubResource("ShopPrimaryMaterial")
[node name="ShopName" type="Label3D" parent="FishingShop"]
position = Vector3(0, 2.7, 0)
text = "Fishing Shop"
font_size = 36
outline_size = 8
billboard = 1
no_depth_test = true
[node name="FishingShopInteraction" type="Area3D" parent="FishingShop"]
unique_name_in_owner = true
position = Vector3(0, 1, 0)
collision_layer = 0
collision_mask = 2
script = ExtResource("6_shop")
[node name="CollisionShape3D" type="CollisionShape3D" parent="FishingShop/FishingShopInteraction"]
shape = SubResource("ShopInteractionShape")
[node name="East" type="StaticBody3D" parent="WorldBounds"]
position = Vector3(90, 5, -38)
[node name="Shape" type="CollisionShape3D" parent="WorldBounds/East"]
shape = SubResource("EastWestBoundsShape")