Add tuna, salmon, and round goby species

This commit is contained in:
Alexander Sellite 2026-08-03 15:44:45 -04:00
parent 325f718f99
commit 004324458d
42 changed files with 957 additions and 21 deletions

View file

@ -1,4 +1,4 @@
[gd_resource type="Resource" load_steps=10 format=3]
[gd_resource type="Resource" load_steps=21 format=3]
[ext_resource type="Script" path="res://fish/fish_pool.gd" id="1_pool"]
[ext_resource type="Resource" path="res://fish/species/bluegill/bluegill.tres" id="2_bluegill"]
@ -9,7 +9,18 @@
[ext_resource type="Resource" path="res://fish/species/catfish_channel/catfish_channel.tres" id="7_catfish_channel"]
[ext_resource type="Resource" path="res://fish/species/catfish_flathead/catfish_flathead.tres" id="8_catfish_flathead"]
[ext_resource type="Resource" path="res://fish/species/catfish_white/catfish_white.tres" id="9_catfish_white"]
[ext_resource type="Resource" path="res://fish/species/tuna_albacore/tuna_albacore.tres" id="10_tuna_albacore"]
[ext_resource type="Resource" path="res://fish/species/tuna_bigeye/tuna_bigeye.tres" id="11_tuna_bigeye"]
[ext_resource type="Resource" path="res://fish/species/tuna_bluefin/tuna_bluefin.tres" id="12_tuna_bluefin"]
[ext_resource type="Resource" path="res://fish/species/tuna_skipjack/tuna_skipjack.tres" id="13_tuna_skipjack"]
[ext_resource type="Resource" path="res://fish/species/tuna_yellowfin/tuna_yellowfin.tres" id="14_tuna_yellowfin"]
[ext_resource type="Resource" path="res://fish/species/goby_round/goby_round.tres" id="15_goby_round"]
[ext_resource type="Resource" path="res://fish/species/salmon_atlantic/salmon_atlantic.tres" id="16_salmon_atlantic"]
[ext_resource type="Resource" path="res://fish/species/salmon_chum/salmon_chum.tres" id="17_salmon_chum"]
[ext_resource type="Resource" path="res://fish/species/salmon_coho/salmon_coho.tres" id="18_salmon_coho"]
[ext_resource type="Resource" path="res://fish/species/salmon_pink/salmon_pink.tres" id="19_salmon_pink"]
[ext_resource type="Resource" path="res://fish/species/salmon_sockeye/salmon_sockeye.tres" id="20_salmon_sockeye"]
[resource]
script = ExtResource("1_pool")
candidates = [ExtResource("2_bluegill"), ExtResource("3_bass"), ExtResource("4_carp"), ExtResource("5_sunfish"), ExtResource("6_catfish_blue"), ExtResource("7_catfish_channel"), ExtResource("8_catfish_flathead"), ExtResource("9_catfish_white")]
candidates = [ExtResource("2_bluegill"), ExtResource("3_bass"), ExtResource("4_carp"), ExtResource("5_sunfish"), ExtResource("6_catfish_blue"), ExtResource("7_catfish_channel"), ExtResource("8_catfish_flathead"), ExtResource("9_catfish_white"), ExtResource("10_tuna_albacore"), ExtResource("11_tuna_bigeye"), ExtResource("12_tuna_bluefin"), ExtResource("13_tuna_skipjack"), ExtResource("14_tuna_yellowfin"), ExtResource("15_goby_round"), ExtResource("16_salmon_atlantic"), ExtResource("17_salmon_chum"), ExtResource("18_salmon_coho"), ExtResource("19_salmon_pink"), ExtResource("20_salmon_sockeye")]

View file

@ -1,9 +1,19 @@
[gd_resource type="Resource" load_steps=4 format=3]
[gd_resource type="Resource" load_steps=14 format=3]
[ext_resource type="Script" path="res://fish/fish_pool.gd" id="1_pool"]
[ext_resource type="Resource" path="res://fish/species/bass/bass.tres" id="2_bass"]
[ext_resource type="Resource" path="res://fish/species/sunfish/sunfish.tres" id="3_sunfish"]
[ext_resource type="Resource" path="res://fish/species/tuna_albacore/tuna_albacore.tres" id="4_tuna_albacore"]
[ext_resource type="Resource" path="res://fish/species/tuna_bigeye/tuna_bigeye.tres" id="5_tuna_bigeye"]
[ext_resource type="Resource" path="res://fish/species/tuna_bluefin/tuna_bluefin.tres" id="6_tuna_bluefin"]
[ext_resource type="Resource" path="res://fish/species/tuna_skipjack/tuna_skipjack.tres" id="7_tuna_skipjack"]
[ext_resource type="Resource" path="res://fish/species/tuna_yellowfin/tuna_yellowfin.tres" id="8_tuna_yellowfin"]
[ext_resource type="Resource" path="res://fish/species/salmon_atlantic/salmon_atlantic.tres" id="9_salmon_atlantic"]
[ext_resource type="Resource" path="res://fish/species/salmon_chum/salmon_chum.tres" id="10_salmon_chum"]
[ext_resource type="Resource" path="res://fish/species/salmon_coho/salmon_coho.tres" id="11_salmon_coho"]
[ext_resource type="Resource" path="res://fish/species/salmon_pink/salmon_pink.tres" id="12_salmon_pink"]
[ext_resource type="Resource" path="res://fish/species/salmon_sockeye/salmon_sockeye.tres" id="13_salmon_sockeye"]
[resource]
script = ExtResource("1_pool")
candidates = [ExtResource("2_bass"), ExtResource("3_sunfish")]
candidates = [ExtResource("2_bass"), ExtResource("3_sunfish"), ExtResource("4_tuna_albacore"), ExtResource("5_tuna_bigeye"), ExtResource("6_tuna_bluefin"), ExtResource("7_tuna_skipjack"), ExtResource("8_tuna_yellowfin"), ExtResource("9_salmon_atlantic"), ExtResource("10_salmon_chum"), ExtResource("11_salmon_coho"), ExtResource("12_salmon_pink"), ExtResource("13_salmon_sockeye")]

View file

@ -1,4 +1,4 @@
[gd_resource type="Resource" load_steps=8 format=3]
[gd_resource type="Resource" load_steps=9 format=3]
[ext_resource type="Script" path="res://fish/fish_pool.gd" id="1_pool"]
[ext_resource type="Resource" path="res://fish/species/bluegill/bluegill.tres" id="2_bluegill"]
@ -7,7 +7,8 @@
[ext_resource type="Resource" path="res://fish/species/catfish_channel/catfish_channel.tres" id="7_catfish_channel"]
[ext_resource type="Resource" path="res://fish/species/catfish_flathead/catfish_flathead.tres" id="8_catfish_flathead"]
[ext_resource type="Resource" path="res://fish/species/catfish_white/catfish_white.tres" id="9_catfish_white"]
[ext_resource type="Resource" path="res://fish/species/goby_round/goby_round.tres" id="10_goby_round"]
[resource]
script = ExtResource("1_pool")
candidates = [ExtResource("2_bluegill"), ExtResource("4_carp"), ExtResource("6_catfish_blue"), ExtResource("7_catfish_channel"), ExtResource("8_catfish_flathead"), ExtResource("9_catfish_white")]
candidates = [ExtResource("2_bluegill"), ExtResource("4_carp"), ExtResource("6_catfish_blue"), ExtResource("7_catfish_channel"), ExtResource("8_catfish_flathead"), ExtResource("9_catfish_white"), ExtResource("10_goby_round")]

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bdhywe0r1xcio"
path="res://.godot/imported/fish_goby_round.png-3c3fd3dd06c7b5dd4539ab186bf0d865.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://fish/species/goby_round/fish_goby_round.png"
dest_files=["res://.godot/imported/fish_goby_round.png-3c3fd3dd06c7b5dd4539ab186bf0d865.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View file

@ -0,0 +1,30 @@
[gd_resource type="Resource" script_class="FishData" load_steps=5 format=3]
[ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"]
[ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"]
[ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability_script"]
[ext_resource type="Texture2D" path="res://fish/species/goby_round/fish_goby_round.png" id="4_texture"]
[sub_resource type="Resource" id="RoundGobyAvailability"]
script = ExtResource("3_availability_script")
preferred_bait_tags = Array[StringName]([&"worm", &"minnow"])
preferred_bait_weight_multiplier = 1.35
[resource]
script = ExtResource("1_fish_data")
id = &"goby_round"
display_name = "round goby"
allowed_water_types = 1
rarity = 0
base_catch_weight = 8.0
catch_profile = ExtResource("2_profile")
availability = SubResource("RoundGobyAvailability")
weight_min_lb = 0.1
weight_max_lb = 0.6
display_scale_min = 0.55
display_scale_max = 0.9
display_scale_curve = 1.0
sell_value_min = 2
sell_value_max = 3
sell_value_curve = 1.0
display_texture = ExtResource("4_texture")

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://ddbclfu5wtd5r"
path="res://.godot/imported/fish_salmon_atlantic.png-e11e70a37a78573bfb86a21b48ae319b.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://fish/species/salmon_atlantic/fish_salmon_atlantic.png"
dest_files=["res://.godot/imported/fish_salmon_atlantic.png-e11e70a37a78573bfb86a21b48ae319b.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View file

@ -0,0 +1,30 @@
[gd_resource type="Resource" script_class="FishData" load_steps=5 format=3]
[ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"]
[ext_resource type="Resource" path="res://fishing/bass_catch_profile.tres" id="2_profile"]
[ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability_script"]
[ext_resource type="Texture2D" path="res://fish/species/salmon_atlantic/fish_salmon_atlantic.png" id="4_texture"]
[sub_resource type="Resource" id="AtlanticSalmonAvailability"]
script = ExtResource("3_availability_script")
preferred_bait_tags = Array[StringName]([&"minnow"])
preferred_bait_weight_multiplier = 1.4
[resource]
script = ExtResource("1_fish_data")
id = &"salmon_atlantic"
display_name = "atlantic salmon"
allowed_water_types = 2
rarity = 3
base_catch_weight = 0.65
catch_profile = ExtResource("2_profile")
availability = SubResource("AtlanticSalmonAvailability")
weight_min_lb = 8.0
weight_max_lb = 40.0
display_scale_min = 1.05
display_scale_max = 1.9
display_scale_curve = 0.85
sell_value_min = 20
sell_value_max = 42
sell_value_curve = 0.85
display_texture = ExtResource("4_texture")

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dqjkmd6l1a2i4"
path="res://.godot/imported/fish_salmon_chum.png-78c86aca1218255db2c488a5c22e4409.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://fish/species/salmon_chum/fish_salmon_chum.png"
dest_files=["res://.godot/imported/fish_salmon_chum.png-78c86aca1218255db2c488a5c22e4409.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View file

@ -0,0 +1,30 @@
[gd_resource type="Resource" script_class="FishData" load_steps=5 format=3]
[ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"]
[ext_resource type="Resource" path="res://fishing/bass_catch_profile.tres" id="2_profile"]
[ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability_script"]
[ext_resource type="Texture2D" path="res://fish/species/salmon_chum/fish_salmon_chum.png" id="4_texture"]
[sub_resource type="Resource" id="ChumSalmonAvailability"]
script = ExtResource("3_availability_script")
preferred_bait_tags = Array[StringName]([&"minnow"])
preferred_bait_weight_multiplier = 1.4
[resource]
script = ExtResource("1_fish_data")
id = &"salmon_chum"
display_name = "chum salmon"
allowed_water_types = 2
rarity = 1
base_catch_weight = 2.5
catch_profile = ExtResource("2_profile")
availability = SubResource("ChumSalmonAvailability")
weight_min_lb = 6.0
weight_max_lb = 25.0
display_scale_min = 1.0
display_scale_max = 1.75
display_scale_curve = 0.9
sell_value_min = 10
sell_value_max = 22
sell_value_curve = 0.9
display_texture = ExtResource("4_texture")

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c4c4e43lbr88c"
path="res://.godot/imported/fish_salmon_coho.png-fc57b7ff3c0ac63ccfec6db9cec1dedb.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://fish/species/salmon_coho/fish_salmon_coho.png"
dest_files=["res://.godot/imported/fish_salmon_coho.png-fc57b7ff3c0ac63ccfec6db9cec1dedb.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View file

@ -0,0 +1,30 @@
[gd_resource type="Resource" script_class="FishData" load_steps=5 format=3]
[ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"]
[ext_resource type="Resource" path="res://fishing/bass_catch_profile.tres" id="2_profile"]
[ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability_script"]
[ext_resource type="Texture2D" path="res://fish/species/salmon_coho/fish_salmon_coho.png" id="4_texture"]
[sub_resource type="Resource" id="CohoSalmonAvailability"]
script = ExtResource("3_availability_script")
preferred_bait_tags = Array[StringName]([&"minnow"])
preferred_bait_weight_multiplier = 1.4
[resource]
script = ExtResource("1_fish_data")
id = &"salmon_coho"
display_name = "coho salmon"
allowed_water_types = 2
rarity = 2
base_catch_weight = 1.4
catch_profile = ExtResource("2_profile")
availability = SubResource("CohoSalmonAvailability")
weight_min_lb = 5.0
weight_max_lb = 30.0
display_scale_min = 1.0
display_scale_max = 1.8
display_scale_curve = 0.88
sell_value_min = 14
sell_value_max = 28
sell_value_curve = 0.88
display_texture = ExtResource("4_texture")

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bk27bsdrtlqap"
path="res://.godot/imported/fish_salmon_pink.png-0c9ca3bc540b868c12fe32b1cdc59249.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://fish/species/salmon_pink/fish_salmon_pink.png"
dest_files=["res://.godot/imported/fish_salmon_pink.png-0c9ca3bc540b868c12fe32b1cdc59249.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View file

@ -0,0 +1,30 @@
[gd_resource type="Resource" script_class="FishData" load_steps=5 format=3]
[ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"]
[ext_resource type="Resource" path="res://fishing/bass_catch_profile.tres" id="2_profile"]
[ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability_script"]
[ext_resource type="Texture2D" path="res://fish/species/salmon_pink/fish_salmon_pink.png" id="4_texture"]
[sub_resource type="Resource" id="PinkSalmonAvailability"]
script = ExtResource("3_availability_script")
preferred_bait_tags = Array[StringName]([&"minnow"])
preferred_bait_weight_multiplier = 1.4
[resource]
script = ExtResource("1_fish_data")
id = &"salmon_pink"
display_name = "pink salmon"
allowed_water_types = 2
rarity = 1
base_catch_weight = 3.0
catch_profile = ExtResource("2_profile")
availability = SubResource("PinkSalmonAvailability")
weight_min_lb = 3.0
weight_max_lb = 12.0
display_scale_min = 0.9
display_scale_max = 1.55
display_scale_curve = 0.92
sell_value_min = 8
sell_value_max = 15
sell_value_curve = 0.92
display_texture = ExtResource("4_texture")

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cmokm3sra4ai8"
path="res://.godot/imported/fish_salmon_sockeye.png-99d566111b5cad1e6ae4702b6f9128fd.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://fish/species/salmon_sockeye/fish_salmon_sockeye.png"
dest_files=["res://.godot/imported/fish_salmon_sockeye.png-99d566111b5cad1e6ae4702b6f9128fd.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View file

@ -0,0 +1,30 @@
[gd_resource type="Resource" script_class="FishData" load_steps=5 format=3]
[ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"]
[ext_resource type="Resource" path="res://fishing/bass_catch_profile.tres" id="2_profile"]
[ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability_script"]
[ext_resource type="Texture2D" path="res://fish/species/salmon_sockeye/fish_salmon_sockeye.png" id="4_texture"]
[sub_resource type="Resource" id="SockeyeSalmonAvailability"]
script = ExtResource("3_availability_script")
preferred_bait_tags = Array[StringName]([&"minnow"])
preferred_bait_weight_multiplier = 1.4
[resource]
script = ExtResource("1_fish_data")
id = &"salmon_sockeye"
display_name = "sockeye salmon"
allowed_water_types = 2
rarity = 2
base_catch_weight = 1.6
catch_profile = ExtResource("2_profile")
availability = SubResource("SockeyeSalmonAvailability")
weight_min_lb = 4.0
weight_max_lb = 15.0
display_scale_min = 0.95
display_scale_max = 1.6
display_scale_curve = 0.9
sell_value_min = 12
sell_value_max = 24
sell_value_curve = 0.9
display_texture = ExtResource("4_texture")

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bxebn81i552fg"
path="res://.godot/imported/fish_tuna_albacore.png-aaac5d00c8a250b19db99d7069f549e1.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://fish/species/tuna_albacore/fish_tuna_albacore.png"
dest_files=["res://.godot/imported/fish_tuna_albacore.png-aaac5d00c8a250b19db99d7069f549e1.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View file

@ -0,0 +1,30 @@
[gd_resource type="Resource" script_class="FishData" load_steps=5 format=3]
[ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"]
[ext_resource type="Resource" path="res://fishing/bass_catch_profile.tres" id="2_profile"]
[ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability_script"]
[ext_resource type="Texture2D" path="res://fish/species/tuna_albacore/fish_tuna_albacore.png" id="4_texture"]
[sub_resource type="Resource" id="AlbacoreAvailability"]
script = ExtResource("3_availability_script")
preferred_bait_tags = Array[StringName]([&"minnow"])
preferred_bait_weight_multiplier = 1.4
[resource]
script = ExtResource("1_fish_data")
id = &"tuna_albacore"
display_name = "albacore tuna"
allowed_water_types = 2
rarity = 2
base_catch_weight = 1.5
catch_profile = ExtResource("2_profile")
availability = SubResource("AlbacoreAvailability")
weight_min_lb = 10.0
weight_max_lb = 45.0
display_scale_min = 1.1
display_scale_max = 1.9
display_scale_curve = 0.85
sell_value_min = 12
sell_value_max = 24
sell_value_curve = 0.85
display_texture = ExtResource("4_texture")

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bypnhqmkhnm2c"
path="res://.godot/imported/fish_tuna_bigeye.png-1c20be325f0bac055325a6fa0ad17dd1.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://fish/species/tuna_bigeye/fish_tuna_bigeye.png"
dest_files=["res://.godot/imported/fish_tuna_bigeye.png-1c20be325f0bac055325a6fa0ad17dd1.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View file

@ -0,0 +1,30 @@
[gd_resource type="Resource" script_class="FishData" load_steps=5 format=3]
[ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"]
[ext_resource type="Resource" path="res://fishing/bass_catch_profile.tres" id="2_profile"]
[ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability_script"]
[ext_resource type="Texture2D" path="res://fish/species/tuna_bigeye/fish_tuna_bigeye.png" id="4_texture"]
[sub_resource type="Resource" id="BigeyeAvailability"]
script = ExtResource("3_availability_script")
preferred_bait_tags = Array[StringName]([&"minnow"])
preferred_bait_weight_multiplier = 1.4
[resource]
script = ExtResource("1_fish_data")
id = &"tuna_bigeye"
display_name = "bigeye tuna"
allowed_water_types = 2
rarity = 3
base_catch_weight = 0.55
catch_profile = ExtResource("2_profile")
availability = SubResource("BigeyeAvailability")
weight_min_lb = 20.0
weight_max_lb = 120.0
display_scale_min = 1.2
display_scale_max = 2.2
display_scale_curve = 0.8
sell_value_min = 22
sell_value_max = 48
sell_value_curve = 0.8
display_texture = ExtResource("4_texture")

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dg7nafydp4flx"
path="res://.godot/imported/fish_tuna_bluefin.png-04ec876b3a78ea716b7a0673e8497fab.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://fish/species/tuna_bluefin/fish_tuna_bluefin.png"
dest_files=["res://.godot/imported/fish_tuna_bluefin.png-04ec876b3a78ea716b7a0673e8497fab.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View file

@ -0,0 +1,30 @@
[gd_resource type="Resource" script_class="FishData" load_steps=5 format=3]
[ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"]
[ext_resource type="Resource" path="res://fishing/bass_catch_profile.tres" id="2_profile"]
[ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability_script"]
[ext_resource type="Texture2D" path="res://fish/species/tuna_bluefin/fish_tuna_bluefin.png" id="4_texture"]
[sub_resource type="Resource" id="BluefinAvailability"]
script = ExtResource("3_availability_script")
preferred_bait_tags = Array[StringName]([&"minnow"])
preferred_bait_weight_multiplier = 1.4
[resource]
script = ExtResource("1_fish_data")
id = &"tuna_bluefin"
display_name = "bluefin tuna"
allowed_water_types = 2
rarity = 4
base_catch_weight = 0.18
catch_profile = ExtResource("2_profile")
availability = SubResource("BluefinAvailability")
weight_min_lb = 30.0
weight_max_lb = 250.0
display_scale_min = 1.3
display_scale_max = 2.5
display_scale_curve = 0.78
sell_value_min = 35
sell_value_max = 90
sell_value_curve = 0.78
display_texture = ExtResource("4_texture")

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://vvtr81d2aojs"
path="res://.godot/imported/fish_tuna_skipjack.png-98d7d6a76fc86bd76f861358be0635c7.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://fish/species/tuna_skipjack/fish_tuna_skipjack.png"
dest_files=["res://.godot/imported/fish_tuna_skipjack.png-98d7d6a76fc86bd76f861358be0635c7.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View file

@ -0,0 +1,30 @@
[gd_resource type="Resource" script_class="FishData" load_steps=5 format=3]
[ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"]
[ext_resource type="Resource" path="res://fishing/bass_catch_profile.tres" id="2_profile"]
[ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability_script"]
[ext_resource type="Texture2D" path="res://fish/species/tuna_skipjack/fish_tuna_skipjack.png" id="4_texture"]
[sub_resource type="Resource" id="SkipjackAvailability"]
script = ExtResource("3_availability_script")
preferred_bait_tags = Array[StringName]([&"minnow"])
preferred_bait_weight_multiplier = 1.4
[resource]
script = ExtResource("1_fish_data")
id = &"tuna_skipjack"
display_name = "skipjack tuna"
allowed_water_types = 2
rarity = 1
base_catch_weight = 3.0
catch_profile = ExtResource("2_profile")
availability = SubResource("SkipjackAvailability")
weight_min_lb = 5.0
weight_max_lb = 25.0
display_scale_min = 1.0
display_scale_max = 1.7
display_scale_curve = 0.9
sell_value_min = 8
sell_value_max = 16
sell_value_curve = 0.9
display_texture = ExtResource("4_texture")

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bwpdgagaysdsf"
path="res://.godot/imported/fish_tuna_yellowfin.png-14cd53683bfec6af599f1e1dc5728b99.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://fish/species/tuna_yellowfin/fish_tuna_yellowfin.png"
dest_files=["res://.godot/imported/fish_tuna_yellowfin.png-14cd53683bfec6af599f1e1dc5728b99.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View file

@ -0,0 +1,30 @@
[gd_resource type="Resource" script_class="FishData" load_steps=5 format=3]
[ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"]
[ext_resource type="Resource" path="res://fishing/bass_catch_profile.tres" id="2_profile"]
[ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability_script"]
[ext_resource type="Texture2D" path="res://fish/species/tuna_yellowfin/fish_tuna_yellowfin.png" id="4_texture"]
[sub_resource type="Resource" id="YellowfinAvailability"]
script = ExtResource("3_availability_script")
preferred_bait_tags = Array[StringName]([&"minnow"])
preferred_bait_weight_multiplier = 1.4
[resource]
script = ExtResource("1_fish_data")
id = &"tuna_yellowfin"
display_name = "yellowfin tuna"
allowed_water_types = 2
rarity = 2
base_catch_weight = 1.0
catch_profile = ExtResource("2_profile")
availability = SubResource("YellowfinAvailability")
weight_min_lb = 15.0
weight_max_lb = 80.0
display_scale_min = 1.15
display_scale_max = 2.1
display_scale_curve = 0.82
sell_value_min = 16
sell_value_max = 36
sell_value_curve = 0.82
display_texture = ExtResource("4_texture")

View file

@ -48,7 +48,7 @@ func _run() -> void:
as PlayerAssetReservationService
)
assert(player != null)
assert(catalog != null and catalog.candidates.size() == 8)
assert(catalog != null and catalog.candidates.size() == 19)
assert(sale_service != null)
assert(shop_service != null)
assert(session != null and session.is_host())

View file

@ -40,8 +40,22 @@ const CATFISH_IDS: Array[StringName] = [
const FRESH_WATER_IDS: Array[StringName] = [
&"bluegill", &"carp", &"catfish_blue", &"catfish_channel",
&"catfish_flathead", &"catfish_white",
&"goby_round",
]
const SALT_WATER_IDS: Array[StringName] = [
&"bass",
&"sunfish",
&"tuna_albacore",
&"tuna_bigeye",
&"tuna_bluefin",
&"tuna_skipjack",
&"tuna_yellowfin",
&"salmon_atlantic",
&"salmon_chum",
&"salmon_coho",
&"salmon_pink",
&"salmon_sockeye",
]
const SALT_WATER_IDS: Array[StringName] = [&"bass", &"sunfish"]
func _initialize() -> void:
@ -58,9 +72,9 @@ func _run() -> void:
func _validate_catalog_and_pools() -> void:
assert(Catalog.candidates.size() == 8)
assert(PondPool.candidates.size() == 6)
assert(OceanPool.candidates.size() == 2)
assert(Catalog.candidates.size() == 19)
assert(PondPool.candidates.size() == 7)
assert(OceanPool.candidates.size() == 12)
for fish_id: StringName in ORIGINAL_IDS:
var original_fish: FishDataType = Catalog.get_fish_by_id(fish_id)
assert(original_fish != null)
@ -104,6 +118,43 @@ func _validate_catalog_and_pools() -> void:
assert(fish.sell_value_min == int(values[4]))
assert(fish.sell_value_max == int(values[5]))
var expected_tuna_values: Dictionary[StringName, Array] = {
&"tuna_albacore": [2, 1.5, 10.0, 45.0, 12, 24],
&"tuna_bigeye": [3, 0.55, 20.0, 120.0, 22, 48],
&"tuna_bluefin": [4, 0.18, 30.0, 250.0, 35, 90],
&"tuna_skipjack": [1, 3.0, 5.0, 25.0, 8, 16],
&"tuna_yellowfin": [2, 1.0, 15.0, 80.0, 16, 36],
}
for fish_id: StringName in expected_tuna_values:
var fish: FishDataType = Catalog.get_fish_by_id(fish_id)
var values: Array = expected_tuna_values[fish_id]
assert(fish != null and fish.is_selectable())
assert(int(fish.rarity) == int(values[0]))
assert(is_equal_approx(fish.base_catch_weight, float(values[1])))
assert(is_equal_approx(fish.weight_min_lb, float(values[2])))
assert(is_equal_approx(fish.weight_max_lb, float(values[3])))
assert(fish.sell_value_min == int(values[4]))
assert(fish.sell_value_max == int(values[5]))
var expected_new_values: Dictionary[StringName, Array] = {
&"goby_round": [0, 8.0, 0.1, 0.6, 2, 3],
&"salmon_atlantic": [3, 0.65, 8.0, 40.0, 20, 42],
&"salmon_chum": [1, 2.5, 6.0, 25.0, 10, 22],
&"salmon_coho": [2, 1.4, 5.0, 30.0, 14, 28],
&"salmon_pink": [1, 3.0, 3.0, 12.0, 8, 15],
&"salmon_sockeye": [2, 1.6, 4.0, 15.0, 12, 24],
}
for fish_id: StringName in expected_new_values:
var fish: FishDataType = Catalog.get_fish_by_id(fish_id)
var values: Array = expected_new_values[fish_id]
assert(fish != null and fish.is_selectable())
assert(int(fish.rarity) == int(values[0]))
assert(is_equal_approx(fish.base_catch_weight, float(values[1])))
assert(is_equal_approx(fish.weight_min_lb, float(values[2])))
assert(is_equal_approx(fish.weight_max_lb, float(values[3])))
assert(fish.sell_value_min == int(values[4]))
assert(fish.sell_value_max == int(values[5]))
var pond_context := FishingContextType.new()
pond_context.location_tags = [&"starter_pond"]
pond_context.water_type = WaterType.Type.FRESH_WATER

View file

@ -49,20 +49,20 @@ func _run() -> void:
assert(not hotbar.visible)
var entry_buttons: Dictionary = logbook.get("_entry_buttons")
assert(entry_buttons.size() == 6)
assert(entry_buttons.size() == 7)
await _capture_if_requested("-unknown")
logbook.call(
"_select_category", WaterType.Type.FRESH_WATER
)
await create_timer(0.25).timeout
assert((logbook.get("_entry_buttons") as Dictionary).size() == 6)
assert((logbook.get("_entry_buttons") as Dictionary).size() == 7)
await _capture_if_requested("-fresh")
logbook.call("_select_category", WaterType.Type.SALT_WATER)
await create_timer(0.25).timeout
assert((logbook.get("_entry_buttons") as Dictionary).size() == 2)
assert((logbook.get("_entry_buttons") as Dictionary).size() == 12)
logbook.call("_select_category", WaterType.Type.FRESH_WATER)
await create_timer(0.25).timeout
assert((logbook.get("_entry_buttons") as Dictionary).size() == 6)
assert((logbook.get("_entry_buttons") as Dictionary).size() == 7)
player.collection_log.mark_discovered(&"bluegill")
await process_frame
logbook.call("_select_entry", &"bluegill", &"bluegill")
@ -101,7 +101,7 @@ func _validate_save_round_trip(
var player := main.get("_player") as Player
var catalog := main.get("fish_catalog") as FishPool
assert(catalog != null)
assert(catalog.candidates.size() == 8)
assert(catalog.candidates.size() == 19)
for index: int in 4:
_add_test_catch(player, catalog.candidates[index])
assert(save_manager.save_now())
@ -122,7 +122,7 @@ func _validate_save_round_trip(
assert(player.inventory.replace_all_catches(no_catches, 1))
assert(player.collection_log.replace_discovered_ids(no_discoveries))
assert(save_manager.load_player_data())
assert(player.inventory.get_all_catches().size() == 8)
assert(player.inventory.get_all_catches().size() == 19)
for fish: FishData in catalog.candidates:
assert(player.inventory.get_count(fish.id) == 1)
assert(player.collection_log.has_discovered(fish.id))

View file

@ -49,6 +49,17 @@ func _validate_catalog() -> void:
&"catfish_channel",
&"catfish_flathead",
&"catfish_white",
&"tuna_albacore",
&"tuna_bigeye",
&"tuna_bluefin",
&"tuna_skipjack",
&"tuna_yellowfin",
&"goby_round",
&"salmon_atlantic",
&"salmon_chum",
&"salmon_coho",
&"salmon_pink",
&"salmon_sockeye",
]
assert(LogbookCatalog.CATALOG_ORDER == expected_ids)
for index: int in expected_ids.size():
@ -62,7 +73,20 @@ func _validate_catalog() -> void:
)
var expected_category: WaterType.Type = (
WaterType.Type.SALT_WATER
if expected_ids[index] in [&"bass", &"sunfish"]
if expected_ids[index] in [
&"bass",
&"sunfish",
&"tuna_albacore",
&"tuna_bigeye",
&"tuna_bluefin",
&"tuna_skipjack",
&"tuna_yellowfin",
&"salmon_atlantic",
&"salmon_chum",
&"salmon_coho",
&"salmon_pink",
&"salmon_sockeye",
]
else WaterType.Type.FRESH_WATER
)
assert(
@ -105,7 +129,7 @@ func _validate_page() -> void:
page.call("_select_category", category)
await create_timer(0.25).timeout
var entries: Dictionary = page.get("_entry_buttons")
assert(entries.size() == (6 if category == WaterType.Type.FRESH_WATER else 2))
assert(entries.size() == (7 if category == WaterType.Type.FRESH_WATER else 12))
for fish: FishDataType in LogbookCatalog.ordered_species(
CatalogResource.candidates
):
@ -155,7 +179,7 @@ func _validate_page() -> void:
candidate.display_name
)
)
assert(silhouette_count == 8)
assert(silhouette_count == 19)
page.call("_select_category", WaterType.Type.OTHER)
await create_timer(0.25).timeout

View file

@ -138,7 +138,21 @@ func _validate_fishing_availability() -> void:
assert(not night_fish.availability.is_available(day_context))
assert(night_fish.availability.is_available(night_context))
assert(night_fish.availability.is_available(transition_context))
for fish_id: StringName in [&"bass", &"carp"]:
for fish_id: StringName in [
&"bass",
&"carp",
&"tuna_albacore",
&"tuna_bigeye",
&"tuna_bluefin",
&"tuna_skipjack",
&"tuna_yellowfin",
&"goby_round",
&"salmon_atlantic",
&"salmon_chum",
&"salmon_coho",
&"salmon_pink",
&"salmon_sockeye",
]:
var all_time_fish: FishDataType = Catalog.get_fish_by_id(fish_id)
assert(all_time_fish.availability.is_available(day_context))
assert(all_time_fish.availability.is_available(night_context))

View file

@ -14,6 +14,17 @@ const CATALOG_ORDER: Array[StringName] = [
&"catfish_channel",
&"catfish_flathead",
&"catfish_white",
&"tuna_albacore",
&"tuna_bigeye",
&"tuna_bluefin",
&"tuna_skipjack",
&"tuna_yellowfin",
&"goby_round",
&"salmon_atlantic",
&"salmon_chum",
&"salmon_coho",
&"salmon_pink",
&"salmon_sockeye",
]
# Short presentation notes are kept here with the catalog contract rather
@ -52,6 +63,50 @@ const FISH_FACTS: Dictionary[StringName, String] = {
"white catfish began along the atlantic coast between new york "
+ "and florida. people later carried them far beyond that home range."
),
&"tuna_albacore": (
"albacore have unusually long pectoral fins. their warm muscles help "
+ "them cruise across wide stretches of open ocean."
),
&"tuna_bigeye": (
"bigeye tuna make daily trips between deep, cool water and warmer "
+ "surface layers. their large eyes suit those dim depths."
),
&"tuna_bluefin": (
"bluefin tuna are powerful ocean travelers. heat retained in their "
+ "swimming muscles lets them thrive in surprisingly cold seas."
),
&"tuna_skipjack": (
"skipjack travel in fast-moving schools and have dark stripes along "
+ "their lower sides. they rarely stop swimming."
),
&"tuna_yellowfin": (
"yellowfin are named for their bright yellow fins and finlets. large "
+ "schools often gather with other open-ocean hunters."
),
&"goby_round": (
"round gobies use fused pelvic fins like a suction cup to hold onto "
+ "rocks. they are small fish with a famously large appetite."
),
&"salmon_atlantic": (
"atlantic salmon can return from the ocean to the river where they "
+ "hatched. unlike many salmon, some survive to make the trip again."
),
&"salmon_chum": (
"chum salmon travel immense distances and develop striking bars when "
+ "they return to fresh water to spawn."
),
&"salmon_coho": (
"coho salmon are agile hunters known for powerful leaps. young coho "
+ "may spend more than a year growing in streams."
),
&"salmon_pink": (
"pink salmon usually follow a strict two-year life cycle. spawning "
+ "males develop the hump that inspired their nickname."
),
&"salmon_sockeye": (
"sockeye salmon feed heavily on plankton at sea. adults turn vivid red "
+ "as they return inland to spawn."
),
}
static func category_for(fish: FishDataType) -> WaterType.Type: