diff --git a/docs/README-PLAYTEST.txt b/docs/README-PLAYTEST.txt index 9d895f1..a73faf0 100644 --- a/docs/README-PLAYTEST.txt +++ b/docs/README-PLAYTEST.txt @@ -1,6 +1,6 @@ NETfishing -v0.7.1-alpha -Alpha 0.7.1 +v0.6.8-alpha +Alpha 0.6.8 Thank you for trying this early private playtest. diff --git a/docs/design/.gdignore b/docs/design/.gdignore deleted file mode 100644 index 8b13789..0000000 --- a/docs/design/.gdignore +++ /dev/null @@ -1 +0,0 @@ - diff --git a/docs/design/fish_catalog_proposal.csv b/docs/design/fish_catalog_proposal.csv deleted file mode 100644 index b583915..0000000 --- a/docs/design/fish_catalog_proposal.csv +++ /dev/null @@ -1,314 +0,0 @@ -catalog_number,display_name,collection_group,water_type,spawn_area,day_rule,rain_rule,fog_rule,rarity,base_catch_weight,weight_min_lb,weight_max_lb,sell_value_min,sell_value_max,sell_value_curve,required_bait_tags,required_event_tags,forbidden_event_tags,logbook_fact,active_status -101,bowfin,Ancient freshwater fish,Fresh Water,pond,Night,Any,Required,Rare,0.28,1,20,13,30,0.85,,,,bowfin can gulp air at the surface when warm backwaters run low on oxygen. a long dorsal fin ripples as they stalk prey.,inactive -102,lake sturgeon,Ancient freshwater fish,Fresh Water,lake,Night,Any,Any,Epic,0.09,10,180,36,82,0.8,,,,lake sturgeon sweep the bottom with four sensitive barbels before extending a tube-like mouth to feed. they can live for decades.,inactive -103,longnose gar,Ancient freshwater fish,Fresh Water,river,Day,Any,Any,Rare,0.24,2,35,14,34,0.85,,,,longnose gar wait near the surface before snapping sideways at passing fish. their narrow jaws carry rows of fine needle-like teeth.,inactive -104,paddlefish,Ancient freshwater fish,Fresh Water,river,Day,Required,Any,Epic,0.1,10,120,34,76,0.82,,,,"paddlefish cruise open rivers with their mouths wide, filtering tiny plankton from the water. the broad snout senses faint electrical signals.",inactive -105,shovelnose sturgeon,Ancient freshwater fish,Fresh Water,river,Night,Any,Any,Rare,0.22,1,8,12,25,0.9,,,,shovelnose sturgeon hug flowing river bottoms and probe for insect larvae. a flattened snout helps them hold position in strong current.,inactive -106,spotted gar,Ancient freshwater fish,Fresh Water,pond,Day,Any,Required,Rare,0.2,1,15,13,29,0.88,,,,spotted gar linger among vegetation where their mottled bodies break up their outline. they rise to gulp air as well as breathing through gills.,inactive -107,West African lungfish,Ancient freshwater fish,Fresh Water,pond,Night,Required,Any,Rare,0.3,1,10,12,28,0.86,,,,"west african lungfish breathe air with paired lungs. when floodplains dry, they seal themselves in a mud cocoon until water returns.",inactive -201,atlantic mudskipper,Brackish oddities,Salt Water,ocean,Day,Required,Any,Uncommon,1,0.03,0.5,5,11,0.95,,,,atlantic mudskippers use sturdy fins to hop and crawl across exposed mud. moist skin and mouth linings let them breathe out of water.,inactive -202,largescale foureyes,Brackish oddities,Fresh Water | Salt Water,river,Day,Any,Any,Rare,0.32,0.05,1,10,23,0.95,,,,largescale foureyes cruise with each eye divided across the waterline. one half watches above while the other scans below.,inactive -301,red mullet,Coastal bottom fish,Salt Water,ocean,Day,Any,Any,Uncommon,0.9,0.1,3,5,11,0.92,,,,red mullet comb sandy bottoms with two chin barbels that taste hidden prey. their foraging leaves winding trails in the sediment.,inactive -401,European plaice,Coastal flatfish,Salt Water,ocean,Day,Any,Any,Common,1.8,0.2,10,4,10,0.9,,,,european plaice lie flat on the seafloor with both eyes on the same side. orange spots help distinguish them from neighboring flatfish.,inactive -402,summer flounder,Coastal flatfish,Salt Water,ocean,Day,Any,Any,Uncommon,0.9,0.3,15,6,16,0.88,,,,summer flounder bury themselves in sand with only their eyes exposed. a sudden burst carries them upward to seize passing prey.,inactive -403,winter flounder,Coastal flatfish,Salt Water,ocean,Day,Forbidden,Any,Common,1.8,0.2,8,4,9,0.9,,,,winter flounder favor cool bays and estuaries where they rest on muddy bottoms. their eyes sit on the right side of the body.,inactive -501,dugong,Coastal marine mammals,Salt Water,ocean,Day,Any,Forbidden,Legendary,0.011,500,1100,72,165,0.77,,,,"dugongs graze seagrass meadows with a downturned, bristled snout. they are the only fully marine members of the sirenian family.",inactive -502,harbor seal,Coastal marine mammals,Salt Water,ocean,Day,Any,Required,Legendary,0.018,120,370,60,140,0.79,,,,harbor seals rest on rocky shores and sandbars between hunting trips. sensitive whiskers can trace the water trails left by moving fish.,inactive -503,sea otter,Coastal marine mammals,Salt Water,ocean,Day,Any,Any,Legendary,0.02,30,100,55,125,0.84,,,,sea otters float on their backs while opening shellfish with stones. dense fur traps insulating air because they lack a thick blubber layer.,inactive -504,walrus,Coastal marine mammals,Salt Water,ocean,Day,Any,Required,Legendary,0.012,800,3700,74,170,0.76,,,,walruses sweep the seafloor for clams and other soft-bodied prey. long tusks help them haul onto ice and settle disputes.,inactive -505,West Indian manatee,Coastal marine mammals,Salt Water,ocean,Day,Any,Forbidden,Legendary,0.012,440,1300,70,160,0.77,,,,west indian manatees graze aquatic plants in warm coastal water and rivers. they surface regularly to breathe through nostrils atop the snout.,inactive -601,bay pipefish,Coastal oddities,Salt Water,ocean,Day,Any,Any,Uncommon,0.9,0.005,0.04,4,9,1,,,,"bay pipefish hide upright among seagrass, matching the blades with their slender bodies. males carry developing eggs in a brood pouch.",inactive -602,lined seahorse,Coastal oddities,Salt Water,ocean,Day,Forbidden,Any,Rare,0.28,0.005,0.05,9,20,1,,,,lined seahorses anchor to grass and coral with curling tails. the male broods eggs in a pouch and releases fully formed young.,inactive -603,monkfish,Coastal oddities,Salt Water,ocean,Night,Any,Required,Rare,0.25,2,55,14,35,0.84,,,,monkfish hide against the bottom and wave a fleshy lure above a cavernous mouth. a sudden gulp draws fish and crustaceans inward.,inactive -604,tripletail,Coastal oddities,Salt Water,ocean,Day,Any,Required,Rare,0.28,1,30,13,31,0.85,,,,"tripletail often drift sideways near floating debris, resembling a loose leaf. rounded rear fins create the three-tailed silhouette.",inactive -701,atlantic mackerel,Coastal pelagic fish,Salt Water,ocean,Any,Any,Any,Common,0.5,0.5,5,4,9,0.9,,,,atlantic mackerel travel in fast schools across the north atlantic and feed on plankton and small schooling fish.,active -702,bluefish,Coastal pelagic fish,Salt Water,ocean,Day,Any,Any,Uncommon,0.85,0.5,25,7,19,0.85,,,,bluefish race in coordinated schools while pursuing smaller fish. sharp teeth and powerful jaws make their feeding bursts especially fierce.,inactive -703,cero mackerel,Coastal pelagic fish,Salt Water,ocean,Any,Any,Any,Uncommon,0.35,1,15,7,15,0.9,,,,cero mackerel are streamlined coastal hunters. sharp teeth help them slash through schools of smaller fish.,active -704,chub mackerel,Coastal pelagic fish,Salt Water,ocean,Any,Any,Any,Common,0.5,0.5,4,4,9,0.9,,,,chub mackerel school near the surface and follow plankton blooms. their dark wavy bars help identify them at a glance.,active -705,crevalle jack,Coastal pelagic fish,Salt Water,ocean,Day,Required,Any,Uncommon,0.8,1,35,7,20,0.84,,,,"crevalle jacks patrol warm coasts in fast-moving schools. their deep bodies and forked tails deliver long, powerful runs.",inactive -706,king mackerel,Coastal pelagic fish,Salt Water,ocean,Any,Any,Any,Uncommon,0.3,3,40,10,24,0.9,,,,king mackerel are swift coastal predators. their pointed teeth and long body are built for sudden bursts of speed.,active -707,spanish mackerel,Coastal pelagic fish,Salt Water,ocean,Any,Any,Any,Uncommon,0.35,1,15,8,18,0.9,,,,spanish mackerel hunt in warm coastal waters and often travel in loose schools while chasing baitfish.,active -708,talang queenfish,Coastal pelagic fish,Salt Water,ocean,Day,Any,Any,Uncommon,0.8,0.5,20,7,18,0.86,,,,talang queenfish chase schooling prey near warm coasts and estuaries. hooked teeth and a deeply forked tail suit their rapid attacks.,inactive -801,American sand lance,Coastal schooling fish,Salt Water,ocean,Day,Any,Any,Common,3,0.02,0.4,1,3,1,,,,american sand lance dive headfirst into loose sand when danger approaches. immense schools carry energy from plankton to larger predators.,inactive -802,atlantic menhaden,Coastal schooling fish,Salt Water,ocean,Day,Any,Any,Common,3,0.1,1.5,2,5,0.98,,,,"atlantic menhaden strain plankton from coastal water with fine gill rakers. dense schools feed whales, seabirds, and predatory fish.",inactive -803,black pomfret,Coastal schooling fish,Salt Water,ocean,Any,Any,Any,Uncommon,0.3,1,15,8,18,0.9,,,,"black pomfret have a deep, laterally compressed body that lets them maneuver neatly through open water.",active -804,chinese pomfret,Coastal schooling fish,Salt Water,ocean,Any,Any,Any,Uncommon,0.3,1,20,9,20,0.9,,,,"chinese pomfret are silvery schooling fish with a tall, flattened body and long sickle-shaped fins.",active -805,european anchovy,Coastal schooling fish,Salt Water,ocean,Any,Any,Any,Common,0.5,0.05,0.25,2,4,0.9,,,,european anchovies form dense schools and feed by filtering tiny plankton from coastal water.,active -806,European pilchard,Coastal schooling fish,Salt Water,ocean,Any,Any,Any,Common,3.5,0.05,0.6,2,4,1,,,,european pilchards form shimmering schools along atlantic and mediterranean coasts. they feed mainly on plankton near the surface.,inactive -807,golden pomfret,Coastal schooling fish,Salt Water,ocean,Any,Any,Any,Rare,0.18,2,25,14,30,0.9,,,,golden pomfret are warm-water swimmers whose golden sheen is most noticeable along the fins and flanks.,active -808,northern anchovy,Coastal schooling fish,Salt Water,ocean,Any,Any,Any,Common,0.5,0.05,0.35,2,4,0.9,,,,northern anchovies gather in huge schools along the pacific coast and filter plankton with their fine gill rakers.,active -809,Pacific sardine,Coastal schooling fish,Salt Water,ocean,Any,Any,Any,Common,3.5,0.05,0.5,2,4,1,,,,"pacific sardines follow cool, productive water in enormous schools. their movements shift as currents and plankton supplies change.",inactive -810,white pomfret,Coastal schooling fish,Salt Water,ocean,Any,Any,Any,Common,0.45,0.5,10,5,12,0.9,,,,"white pomfret gather over coastal grounds and use their compact, deep bodies to turn quickly while feeding.",active -901,blacktip shark,Coastal sharks,Salt Water,ocean,Day,Required,Any,Epic,0.1,15,150,32,75,0.8,,,,blacktip sharks are named for the dark markings on their fins. they hunt schooling fish in warm shallows and sometimes leap clear of the water.,inactive -902,great hammerhead shark,Coastal sharks,Salt Water,ocean,Day,Any,Forbidden,Legendary,0.035,50,1000,62,145,0.78,,,,great hammerheads sweep their wide heads over the bottom while searching for rays. widely spaced senses help pinpoint hidden prey.,inactive -903,great white shark,Coastal sharks,Salt Water,ocean,Day,Any,Any,Legendary,0.025,100,1000,70,150,0.76,,,,great white sharks conserve heat in their swimming muscles while crossing cool seas. rows of serrated teeth are replaced throughout life.,inactive -904,tiger shark,Coastal sharks,Salt Water,ocean,Night,Required,Any,Epic,0.06,50,1000,50,120,0.8,,,,tiger sharks carry dark vertical bars that fade as they mature. broad jaws let them investigate an unusually varied range of prey.,inactive -905,whale shark,Coastal sharks,Salt Water,ocean,Day,Any,Forbidden,Legendary,0.025,500,45000,70,160,0.76,,,,whale sharks are enormous filter feeders covered in unique spot patterns. they cruise with open mouths to collect plankton and tiny fish.,inactive -1001,burbot,Cold freshwater fish,Fresh Water,lake,Night,Any,Required,Rare,0.24,0.5,18,12,28,0.86,,,,burbot are the only freshwater members of the cod family. they become most active in cold darkness and may spawn beneath winter ice.,inactive -1002,cisco,Cold freshwater fish,Fresh Water,lake,Day,Any,Any,Common,2.2,0.1,3,3,7,0.95,,,,cisco school in the cool open water of northern lakes. these slim relatives of salmon feed on plankton and become prey for larger fish.,inactive -1003,lake whitefish,Cold freshwater fish,Fresh Water,lake,Any,Any,Any,Common,1.5,0.5,12,4,11,0.9,,,,"lake whitefish browse deep, cold bottoms with small downward-pointing mouths. large schools move toward shallows to spawn in autumn.",inactive -1101,arctic char,Cold freshwater salmonids,Fresh Water | Salt Water,lake,Any,Forbidden,Any,Rare,0.3,1,25,14,32,0.86,,,,arctic char thrive farther north than any other freshwater fish. some remain in lakes while others migrate between rivers and the sea.,inactive -1102,arctic grayling,Cold freshwater salmonids,Fresh Water,river,Day,Any,Forbidden,Uncommon,0.75,0.3,6,6,14,0.9,,,,"arctic grayling carry a tall, colorful dorsal fin like a sail. they feed on drifting insects in cold, clear rivers and lakes.",inactive -1103,brown trout,Cold freshwater salmonids,Fresh Water,river,Night,Any,Any,Uncommon,0.8,0.5,25,7,20,0.86,,,,"brown trout often shelter by day and hunt more freely after dark. adaptable populations occupy streams, lakes, and even coastal water.",inactive -1104,cutthroat trout,Cold freshwater salmonids,Fresh Water,river,Any,Any,Any,Uncommon,0.4,0.25,10,5,12,0.9,,,,"cutthroat trout take their name from the red slash beneath the jaw. many populations rely on cold, well-oxygenated streams.",active -1105,golden trout,Cold freshwater salmonids,Fresh Water,lake,Any,Any,Any,Rare,0.2,0.2,3,8,16,0.9,,,,"golden trout evolved in clear, high-elevation california streams. their bright flanks stand out against rocky alpine water.",active -1106,rainbow trout,Cold freshwater salmonids,Fresh Water,river,Any,Any,Any,Uncommon,0.45,0.5,20,5,11,0.9,,,,rainbow trout are adaptable stream hunters. the pink lateral stripe is especially vivid when the fish is in breeding condition.,active -1201,atlantic wolffish,Cold reef fish,Salt Water,ocean,Any,Forbidden,Any,Rare,0.25,2,40,14,34,0.84,,,,atlantic wolffish use heavy jaws and blunt teeth to crush shellfish and urchins. natural antifreeze proteins help them endure icy water.,inactive -1202,cusk,Cold reef fish,Salt Water,ocean,Night,Any,Any,Uncommon,0.75,0.5,30,7,19,0.85,,,,"cusk move slowly across cold rocky bottoms, sheltering in cracks and caves. a single long fin runs around much of the rear body.",inactive -1203,spotted wolffish,Cold reef fish,Salt Water,ocean,Any,Any,Required,Epic,0.11,3,50,26,60,0.84,,,,spotted wolffish crush hard-shelled prey with broad molar-like teeth. their pale spots stand out against a dark cold-water body.,inactive -1301,atlantic herring,Cold schooling fish,Salt Water,ocean,Any,Any,Any,Common,3,0.1,1.5,2,5,0.98,,,,atlantic herring gather in immense schools that move between feeding and spawning grounds. they filter plankton with fine gill rakers.,inactive -1302,capelin,Cold schooling fish,Salt Water,ocean,Any,Any,Required,Uncommon,1,0.03,0.2,4,8,1,,,,"capelin are small polar fish that feed whales, seabirds, and larger fish. many schools roll onto beaches or shallows to release their eggs.",inactive -1303,European sprat,Cold schooling fish,Salt Water,ocean,Any,Any,Any,Common,3.2,0.03,0.3,1,3,1,,,,european sprat form compact schools in northern coastal seas. these tiny herring relatives feed on plankton near the surface.,inactive -1304,pacific herring,Cold schooling fish,Salt Water,ocean,Any,Required,Any,Common,2.8,0.1,1.5,2,5,0.98,,,,pacific herring return to coastal shallows to coat plants and rocks with eggs. their oily schools support entire marine food webs.,inactive -1401,Alaska pollock,Cold shelf fish,Salt Water,ocean,Any,Any,Any,Common,2.5,0.3,8,3,8,0.92,,,,alaska pollock form vast schools over cold northern shelves. they feed on plankton and fish while supporting many larger predators.,inactive -1402,atlantic cod,Cold shelf fish,Salt Water,ocean,Any,Any,Any,Common,1.8,1,55,5,18,0.85,,,,"atlantic cod carry a pale lateral line and one chin barbel. they search cold seafloors for crustaceans, mollusks, and smaller fish.",inactive -1403,Atlantic pollock,Cold shelf fish,Salt Water,ocean,Day,Any,Forbidden,Uncommon,0.9,1,35,7,18,0.86,,,,atlantic pollock are swift relatives of cod with dark backs and pale lateral lines. adults gather around rocky banks and wrecks.,inactive -1404,Dover sole,Cold shelf fish,Salt Water,ocean,Night,Any,Any,Uncommon,0.8,0.2,8,6,14,0.9,,,,dover sole glide over deep muddy bottoms of the eastern pacific. both eyes migrate to the right side as the young fish becomes flat.,inactive -1405,haddock,Cold shelf fish,Salt Water,ocean,Day,Any,Any,Common,2,0.5,20,4,11,0.9,,,,haddock are recognized by a dark shoulder mark and black lateral line. schools forage over cold seafloors for small bottom animals.,inactive -1406,pacific cod,Cold shelf fish,Salt Water,ocean,Any,Any,Any,Common,1.8,1,45,5,17,0.85,,,,pacific cod use a chin barbel to investigate cold shelf bottoms. seasonal schools follow prey between deeper water and coastal spawning grounds.,inactive -1407,pacific hake,Cold shelf fish,Salt Water,ocean,Night,Any,Any,Common,1.7,0.3,8,3,9,0.92,,,,pacific hake rise from deep water at night to feed on krill and fish. large schools migrate along the west coast with changing seasons.,inactive -1408,silver hake,Cold shelf fish,Salt Water,ocean,Night,Any,Any,Common,1.7,0.2,5,3,8,0.92,,,,silver hake hunt fish and crustaceans over sandy atlantic shelves. they move upward after dark and return toward the bottom by day.,inactive -1501,chambered nautilus,Cuttlefish and nautiluses,Salt Water,ocean,Night,Any,Required,Legendary,0.05,0.5,3,34,76,0.92,,,,chambered nautiluses regulate buoyancy with gas-filled shell chambers. dozens of small tentacles feel for food in dark reef slopes.,inactive -1502,common cuttlefish,Cuttlefish and nautiluses,Salt Water,ocean,Day,Any,Any,Uncommon,0.55,0.2,12,7,17,0.9,,,,common cuttlefish flash changing colors and patterns through specialized skin cells. an internal cuttlebone controls buoyancy.,inactive -1503,flamboyant cuttlefish,Cuttlefish and nautiluses,Salt Water,ocean,Day,Required,Any,Epic,0.1,0.05,0.4,26,58,0.96,,,,flamboyant cuttlefish walk along the seafloor on their arms and fins. vivid displays warn predators of potent toxins.,inactive -1601,blueline tilefish,Deep shelf fish,Salt Water,ocean,Day,Any,Any,Uncommon,0.7,1,20,7,18,0.86,,,,blueline tilefish shelter in burrows and rocky openings along deep shelves. a narrow blue stripe traces the edge of the dorsal fin.,inactive -1602,golden tilefish,Deep shelf fish,Salt Water,ocean,Day,Any,Any,Rare,0.22,2,50,15,37,0.84,,,,golden tilefish excavate burrows in soft clay along deep ocean slopes. their bright yellow spots contrast with blue-green backs.,inactive -1603,Pacific ocean perch,Deep shelf fish,Salt Water,ocean,Any,Any,Any,Uncommon,0.8,0.3,12,7,17,0.88,,,,pacific ocean perch hover around deep rocky reefs in the north pacific. these slow-growing fish give birth to live young.,inactive -1604,Patagonian toothfish,Deep shelf fish,Salt Water,ocean,Night,Any,Any,Epic,0.09,10,220,32,78,0.8,,,,"patagonian toothfish patrol cold, deep southern water with large canine teeth. natural antifreeze proteins protect their blood from freezing.",inactive -1605,sablefish,Deep shelf fish,Salt Water,ocean,Night,Any,Any,Rare,0.22,2,40,15,36,0.84,,,,"sablefish roam deep north pacific slopes and can live for many decades. soft dark bodies conceal rich, oil-filled flesh.",inactive -1606,wreckfish,Deep shelf fish,Salt Water,ocean,Any,Any,Required,Epic,0.1,10,180,31,76,0.8,,,,"wreckfish gather around caves, ledges, and shipwrecks in deep water. powerful jaws let them ambush fish and large crustaceans.",inactive -1701,giant oarfish,Deep-sea legends,Salt Water,ocean,Night,Any,Required,Legendary,0.035,20,600,60,140,0.78,,,,"giant oarfish drift vertically through deep open water, rowing with a crimson dorsal fin. their ribbon-like bodies can reach remarkable lengths.",inactive -1702,West Indian Ocean coelacanth,Deep-sea legends,Salt Water,ocean,Night,Any,Required,Legendary,0.03,20,200,65,145,0.8,,,,"west indian ocean coelacanths shelter in deep volcanic caves by day. fleshy lobed fins move in an alternating, limb-like rhythm.",inactive -1801,black seadevil,Deep-sea oddities,Salt Water,ocean,Night,Any,Any,Legendary,0.05,0.1,2,48,105,0.92,,,,black seadevils lure prey with a glowing organ suspended above the mouth. tiny males permanently attach to much larger females.,inactive -1802,common fangtooth,Deep-sea oddities,Salt Water,ocean,Night,Any,Any,Epic,0.1,0.05,0.5,25,56,0.96,,,,common fangtooths carry outsized teeth that fit into pockets in the roof of the mouth. they migrate upward from deep water after dark.,inactive -1803,gulper eel,Deep-sea oddities,Salt Water,ocean,Night,Any,Required,Legendary,0.04,0.5,18,44,92,0.86,,,,gulper eels unfold enormous mouths to engulf prey in the deep sea. a whip-like tail ends in a small light-producing organ.,inactive -1804,Pacific barreleye,Deep-sea oddities,Salt Water,ocean,Night,Any,Required,Legendary,0.045,0.2,2.5,42,88,0.9,,,,pacific barreleyes peer upward through transparent shields covering the head. tubular eyes rotate forward when the fish turns to feed.,inactive -1805,smooth-head blobfish,Deep-sea oddities,Salt Water,ocean,Night,Any,Required,Legendary,0.04,0.5,5,42,90,0.86,,,,smooth-head blobfish rest on deep slopes where pressure supports their soft bodies. they conserve energy by waiting for edible matter nearby.,inactive -1806,spotted lanternfish,Deep-sea oddities,Salt Water,ocean,Night,Any,Any,Rare,0.24,0.05,0.5,14,30,0.95,,,,spotted lanternfish carry rows of light-producing organs along their bodies. immense schools rise toward the surface each night.,inactive -1901,crown-of-thorns sea star,Echinoderms,Salt Water,ocean,Night,Required,Any,Epic,0.1,0.5,7,23,52,0.91,,,,crown-of-thorns sea stars crawl over reefs and digest coral tissue outside the body. venomous spines discourage many predators.,inactive -1902,giant California sea cucumber,Echinoderms,Salt Water,ocean,Night,Any,Required,Rare,0.24,0.5,5,13,29,0.93,,,,giant california sea cucumbers sweep organic particles from the seafloor with branching tentacles. soft tube feet anchor their long bodies.,inactive -1903,purple sea urchin,Echinoderms,Salt Water,ocean,Day,Any,Any,Uncommon,0.75,0.05,1,5,12,0.96,,,,purple sea urchins scrape algae from rocks with a five-toothed feeding structure. dense groups can clear kelp from entire reefs.,inactive -1904,sand dollar,Echinoderms,Salt Water,ocean,Day,Any,Forbidden,Uncommon,0.8,0.01,0.2,4,10,0.98,,,,sand dollars burrow just beneath sandy seafloors and filter tiny food particles. the familiar star pattern marks their five-part body plan.,inactive -1905,sunflower sea star,Echinoderms,Salt Water,ocean,Day,Any,Required,Rare,0.25,0.5,13,14,32,0.89,,,,"sunflower sea stars move quickly on thousands of tube feet and may carry many arms. they hunt urchins, clams, and other bottom animals.",inactive -2001,axolotl,Freshwater amphibians,Fresh Water,lake,Night,Any,Required,Legendary,0.04,0.1,0.7,36,78,0.96,,,,axolotls remain aquatic and keep feathery external gills throughout adulthood. lost limbs and parts of several organs can regenerate.,inactive -2002,hellbender,Freshwater amphibians,Fresh Water,river,Night,Required,Any,Epic,0.1,0.5,5.5,24,54,0.91,,,,"hellbenders hide beneath large rocks in cool, clean rivers. folds of loose skin absorb oxygen while the flattened body grips the current.",inactive -2101,guppy,Freshwater aquarium fish,Fresh Water,pond,Day,Any,Any,Common,1.5,0.01,0.15,2,5,0.98,,,,"guppies are livebearers whose young arrive ready to swim. males display bright colors while females often favor larger, less flashy bodies.",inactive -2102,neon tetra,Freshwater aquarium fish,Fresh Water,pond,Night,Any,Any,Uncommon,0.9,0.01,0.08,4,8,0.98,,,,"neon tetras school through shaded forest streams. an iridescent blue stripe remains visible in the dim, tannin-stained water.",inactive -2103,zebrafish,Freshwater aquarium fish,Fresh Water,pond,Day,Any,Any,Common,1.35,0.01,0.12,2,5,0.98,,,,"zebrafish carry horizontal blue stripes from gill to tail. hardy schools thrive in shallow streams, flooded fields, and quiet pools.",inactive -2201,largemouth bass,Freshwater bass,Fresh Water,pond,Any,Any,Any,Common,2.5,0.5,18,4,12,0.9,,,,largemouth bass wait among weeds and timber before lunging at prey. the upper jaw extends beyond the eye when the mouth is closed.,inactive -2202,smallmouth bass,Freshwater bass,Fresh Water,river,Day,Any,Any,Uncommon,1.2,0.5,12,6,15,0.9,,,,smallmouth bass favor clear water with rock and moving current. bronze flanks and dark vertical bars distinguish them from largemouth bass.,inactive -2301,bigmouth buffalo,Freshwater bottom fish,Fresh Water,river,Any,Any,Required,Epic,0.12,8,80,28,63,0.82,,,,bigmouth buffalo filter plankton with fine gill rakers instead of rooting for prey. some individuals survive for more than a century.,inactive -2302,golden redhorse,Freshwater bottom fish,Fresh Water,river,Day,Any,Any,Uncommon,0.9,0.5,8,6,14,0.9,,,,"golden redhorses probe flowing river bottoms with fleshy, downward-facing mouths. coppery scales and reddish fins give them a warm glow.",inactive -2303,quillback,Freshwater bottom fish,Fresh Water,river,Day,Any,Any,Uncommon,0.8,0.5,15,6,16,0.88,,,,quillbacks carry a long first dorsal ray that rises like a quill. small mouths gather insect larvae and other food from river and lake bottoms.,inactive -2304,smallmouth buffalo,Freshwater bottom fish,Fresh Water,river,Any,Any,Any,Rare,0.3,3,45,14,34,0.84,,,,"smallmouth buffalo use thick lips to graze bottom-dwelling food in warm rivers. their deep, heavy bodies form a pronounced arch behind the head.",inactive -2305,white sucker,Freshwater bottom fish,Fresh Water,river,Any,Any,Any,Common,2,0.3,8,3,8,0.9,,,,white suckers vacuum insects and organic matter from cool freshwater bottoms. spring runs carry large groups into shallow streams.,inactive -2401,black bullhead,Freshwater catfish,Fresh Water,pond,Night,Any,Any,Uncommon,1,0.3,6,5,11,0.92,,,,"black bullheads tolerate warm, cloudy water with little oxygen. stout spines protect the dorsal and pectoral fins from predators.",inactive -2402,blue catfish,Freshwater catfish,Fresh Water,river,Night,Any,Any,Uncommon,1.25,3,12,6,9,0.9,,,,a deep fork in the tail inspired the blue catfish's scientific name. it rests deep by daylight and becomes more active after dark.,active -2403,brown bullhead,Freshwater catfish,Fresh Water,pond,Night,Any,Any,Common,2.3,0.2,4,3,7,0.95,,,,brown bullheads search muddy bottoms with eight sensitive barbels. males guard nests and herd newly hatched young in a dark moving ball.,inactive -2404,channel catfish,Freshwater catfish,Fresh Water,pond,Night,Any,Any,Common,2,1.5,7,4,7,1,,,,"a channel catfish can taste through skin all over its body, especially near its gills and whiskers. the male watches the eggs.",active -2405,flathead catfish,Freshwater catfish,Fresh Water,river,Night,Any,Any,Uncommon,1,3,14,7,10,0.9,,,,"flatheads favor hideouts made by logs, rocks, ledges, and other underwater structure. as they grow, fish dominate their menu.",active -2406,tadpole madtom,Freshwater catfish,Fresh Water,river,Night,Any,Any,Rare,0.35,0.02,0.15,8,16,0.95,,,,tadpole madtoms are tiny nocturnal catfish that shelter beneath vegetation and debris. venomous fin spines discourage larger predators.,inactive -2407,white catfish,Freshwater catfish,Fresh Water,pond,Night,Any,Any,Common,2,1,5,4,6,1,,,,white catfish began along the atlantic coast between new york and florida. people later carried them far beyond that home range.,active -2408,yellow bullhead,Freshwater catfish,Fresh Water,pond,Night,Required,Any,Common,2,0.2,3.5,3,7,0.95,,,,yellow bullheads use pale chin barbels to distinguish food in murky shallows. both parents may guard the nest and schooling young.,inactive -2501,common barbel,Freshwater coarse fish,Fresh Water,river,Night,Required,Any,Rare,0.28,1,25,13,31,0.85,,,,common barbels hold close to fast river bottoms with streamlined bodies and broad fins. four mouth barbels locate food among stones.,inactive -2502,common bream,Freshwater coarse fish,Fresh Water,lake,Any,Any,Any,Common,1.8,0.3,15,4,12,0.88,,,,"common bream gather in slow rivers and lakes with silvery, deep-sided bodies. protruding mouths sift insect larvae from soft bottoms.",inactive -2503,common carp,Freshwater coarse fish,Fresh Water,pond,Any,Any,Any,Rare,1.5,3,18,10,10,0.85,,,,whisker-like barbels help a common carp investigate the bottom. nosing through sediment can cloud the water and loosen plants.,active -2504,common roach,Freshwater coarse fish,Fresh Water,pond,Any,Any,Any,Common,2.8,0.1,4,2,6,0.95,,,,"common roach thrive in many lakes and rivers, often schooling near vegetation. red fins and a red-orange eye brighten their silver bodies.",inactive -2505,european chub,Freshwater coarse fish,Fresh Water,river,Any,Any,Any,Common,0.55,0.2,6,2,4,0.9,,,,"european chub are adaptable river fish. adults often patrol shallows and feed on insects, small fish, and fruit.",active -2506,fallfish,Freshwater coarse fish,Fresh Water,river,Day,Required,Any,Uncommon,0.9,0.2,3.5,5,10,0.92,,,,fallfish are large minnows that build broad stone nests in flowing water. other stream fish often reuse the gravel mounds for spawning.,inactive -2507,ide,Freshwater coarse fish,Fresh Water,river,Day,Any,Any,Uncommon,0.8,0.3,9,6,14,0.9,,,,"ide move between rivers, lakes, and brackish coastal water in loose schools. adults eat insects, crustaceans, plants, and small fish.",inactive -2508,rudd,Freshwater coarse fish,Fresh Water,pond,Day,Any,Any,Common,2.4,0.1,4.5,3,7,0.95,,,,"rudd feed near the surface with an upturned mouth and red fins. golden-green bodies disappear easily among warm, weedy shallows.",inactive -2509,tench,Freshwater coarse fish,Fresh Water,pond,Night,Any,Required,Uncommon,0.75,0.5,12,7,17,0.88,,,,"tench browse quiet, muddy bottoms with two small mouth barbels. a thick coat of slime protects their olive-green scales.",inactive -2601,red swamp crayfish,Freshwater crustaceans,Fresh Water,pond,Night,Required,Any,Common,1.1,0.03,0.25,3,7,0.98,,,,"red swamp crayfish burrow into wet ground when water recedes. adaptable populations feed on plants, carrion, and small aquatic animals.",inactive -2701,alligator gar,Freshwater giants,Fresh Water,river,Night,Any,Any,Legendary,0.055,20,300,55,125,0.8,,,,alligator gar combine a broad tooth-filled snout with heavy armor-like scales. a vascular swim bladder lets them breathe air at the surface.,inactive -2702,arapaima,Freshwater giants,Fresh Water,river,Day,Any,Any,Legendary,0.04,40,400,60,140,0.78,,,,arapaima must surface frequently to gulp air through a specialized swim bladder. large armored scales protect their long river-going bodies.,inactive -2703,goliath tigerfish,Freshwater giants,Fresh Water,river,Day,Any,Any,Legendary,0.035,20,150,58,132,0.8,,,,goliath tigerfish patrol powerful african rivers with interlocking dagger-like teeth. a muscular forked tail drives sudden attacks.,inactive -2704,muskellunge,Freshwater giants,Fresh Water,lake,Day,Any,Required,Epic,0.11,8,60,32,72,0.82,,,,muskellunge wait motionless among weeds before exploding toward prey. pale bodies carry bars or spots that fade into broken underwater light.,inactive -2801,common shiner,Freshwater minnows,Fresh Water,river,Day,Any,Any,Common,4,0.03,0.3,1,3,1,,,,common shiners flash silver in clear streams and small rivers. breeding males develop rosy fins and a blue-violet sheen.,inactive -2802,creek chub,Freshwater minnows,Fresh Water,river,Day,Any,Any,Common,3.2,0.05,0.8,2,4,1,,,,creek chubs gather around pools and undercut banks in small streams. males build gravel ridges where several fish may spawn.,inactive -2803,emerald shiner,Freshwater minnows,Fresh Water,lake,Any,Any,Any,Common,3.5,0.03,0.25,1,3,1,,,,emerald shiners form bright surface schools in large lakes and rivers. slender bodies feed on plankton and drifting insects.,inactive -2804,fathead minnow,Freshwater minnows,Fresh Water,pond,Day,Any,Any,Common,4.5,0.02,0.2,1,2,1,,,,"fathead minnows tolerate warm, muddy ponds where many fish struggle. males guard eggs laid beneath rocks, logs, and other cover.",inactive -2805,flame chub,Freshwater minnows,Fresh Water,river,Any,Any,Any,Uncommon,0.4,0.05,0.15,3,6,0.9,,,,"flame chubs prefer cool, clear streams. their bright breeding colors make a small fish easy to spot in spring water.",active -2806,golden shiner,Freshwater minnows,Fresh Water,pond,Day,Any,Any,Common,3.8,0.05,1,2,4,1,,,,golden shiners school around dense vegetation in warm water. an upturned mouth takes insects and plankton from near the surface.,inactive -2807,lake chub,Freshwater minnows,Fresh Water,lake,Any,Any,Any,Common,0.55,0.05,0.5,2,4,0.9,,,,lake chubs school in cold northern water and use their small mouths to pick insects and other tiny prey from the current.,active -2901,electric eel,Freshwater oddities,Fresh Water,river,Night,Required,Any,Epic,0.1,1,44,25,60,0.82,,,,electric eels navigate and hunt with electrical pulses produced along most of the body. they must surface regularly to breathe air.,inactive -2902,freshwater drum,Freshwater oddities,Fresh Water,river,Night,Required,Any,Uncommon,0.7,1,35,7,20,0.85,,,,freshwater drum crush snails and mussels with powerful throat teeth. muscles vibrating against the swim bladder produce a low drumming sound.,inactive -2903,goldeye,Freshwater oddities,Fresh Water,river,Night,Any,Required,Rare,0.3,0.3,6,12,25,0.9,,,,goldeye patrol turbid rivers with large light-sensitive eyes and a toothed tongue. they rise toward the surface to hunt insects and small fish.,inactive -2904,mooneye,Freshwater oddities,Fresh Water,river,Night,Any,Any,Uncommon,0.85,0.2,4,5,11,0.92,,,,mooneyes flash silver in clear rivers and lakes while feeding near the surface. their large eyes suit evening hunts for insects and small fish.,inactive -2905,weather loach,Freshwater oddities,Fresh Water,pond,Any,Required,Any,Uncommon,0.85,0.05,0.7,5,11,0.95,,,,weather loaches gulp air and pass it through the intestine when oxygen runs low. restless activity often increases as air pressure falls.,inactive -3001,bubble-eye goldfish,Freshwater ornamental,Fresh Water,pond,Any,Any,Any,Uncommon,0.35,0.1,0.35,3,7,0.9,,,,"bubble-eye goldfish have delicate fluid-filled sacs beneath their eyes, making careful handling especially important.",active -3002,goldfish,Freshwater ornamental,Fresh Water,pond,Any,Any,Any,Common,0.5,0.1,4,1,3,0.9,,,,"goldfish can tolerate a surprisingly wide range of conditions. their wild relatives often live in slow, weedy water.",active -3003,koi,Freshwater ornamental,Fresh Water,pond,Day,Any,Forbidden,Rare,0.28,0.5,35,14,34,0.87,,,,koi are colorful domesticated forms of common carp selected over many generations. each fish carries a distinctive arrangement of patches and scales.,inactive -3101,black crappie,Freshwater panfish,Fresh Water,pond,Any,Any,Required,Uncommon,1,0.2,4,5,11,0.9,,,,black crappie gather around submerged wood and vegetation in clear water. irregular dark speckles scatter across their deep silver bodies.,inactive -3102,bluegill,Freshwater panfish,Fresh Water,pond,Day,Any,Any,Common,10,0.3,2,3,3,1,,,,"bluegill fathers sweep shallow bowls into the bottom for nests, then stand guard. whole neighborhoods of nests can crowd together.",active -3103,green sunfish,Freshwater panfish,Fresh Water,pond,Day,Any,Any,Common,3.2,0.1,1.5,2,5,1,,,,"green sunfish tolerate small, warm, cloudy pools better than many relatives. a large mouth lets them tackle insects, crayfish, and fish.",inactive -3104,pumpkinseed,Freshwater panfish,Fresh Water,pond,Day,Any,Any,Common,3,0.1,1.3,2,5,1,,,,pumpkinseeds use compact teeth to crush snails and other hard prey. blue facial lines and an orange gill spot brighten their round bodies.,inactive -3105,redear sunfish,Freshwater panfish,Fresh Water,pond,Day,Any,Any,Uncommon,1.1,0.2,3,4,9,0.95,,,,"redear sunfish specialize in snails, crushing shells with strong throat teeth. a red or orange margin marks the dark flap behind the gill.",inactive -3106,warmouth,Freshwater panfish,Fresh Water,pond,Night,Required,Any,Uncommon,0.8,0.2,2,5,10,0.95,,,,"warmouth hide in weeds, roots, and murky backwaters before ambushing prey. red eyes and dark cheek stripes frame a notably large mouth.",inactive -3107,white crappie,Freshwater panfish,Fresh Water,lake,Night,Any,Any,Common,1.7,0.2,4.5,4,9,0.9,,,,"white crappie favor warm, cloudy water and gather around structure. vertical bars cross their silver sides instead of scattered speckles.",inactive -3201,yellow perch,Freshwater perch,Fresh Water,lake,Day,Any,Any,Common,2.2,0.2,4,3,8,0.9,,,,yellow perch travel in schools through cool lakes and slow rivers. dark vertical bars and orange lower fins make them easy to recognize.,inactive -3301,chain pickerel,Freshwater predators,Fresh Water,pond,Day,Required,Any,Uncommon,0.8,0.5,9,6,15,0.9,,,,chain pickerel hover among vegetation before darting at fish and frogs. a chain-like pattern breaks up their green flanks.,inactive -3302,grass pickerel,Freshwater predators,Fresh Water,pond,Day,Any,Any,Common,2.1,0.1,1.5,2,6,0.95,,,,"grass pickerel remain small enough to hunt in narrow, weedy creeks and marshes. dark bars camouflage their slim bodies among stems.",inactive -3303,northern pike,Freshwater predators,Fresh Water,lake,Day,Any,Any,Uncommon,0.75,1,30,8,24,0.85,,,,northern pike are solitary ambush hunters built for sudden acceleration. pale bean-shaped spots cover their long green bodies.,inactive -3304,sauger,Freshwater predators,Fresh Water,river,Any,Any,Any,Uncommon,0.35,0.5,8,6,12,0.9,,,,"sauger favor turbid rivers and reservoirs. their mottled backs blend into the dim, shifting light near the bottom.",active -3305,saugeye,Freshwater predators,Fresh Water,lake,Any,Any,Any,Rare,0.2,0.5,12,9,18,0.9,,,,saugeye are a fertile hybrid of sauger and walleye. they combine traits from both parent species and often grow quickly.,active -3306,walleye,Freshwater predators,Fresh Water,lake,Any,Any,Any,Uncommon,0.4,0.5,15,7,15,0.9,,,,walleye have light-sensitive eyes that help them hunt in murky water and around dusk. their reflective layer gives the eyes a pale glow.,active -3401,round goby,Freshwater small fish,Fresh Water,lake,Any,Any,Any,Common,8,0.1,0.6,2,3,1,,,,round gobies use fused pelvic fins like a suction cup to hold onto rocks. they are small fish with a famously large appetite.,active -3501,crystal jelly,Jellies,Salt Water,ocean,Night,Any,Forbidden,Rare,0.24,0.05,4,15,34,0.93,,,,crystal jellies are nearly transparent except for glowing points around the bell. their green fluorescent protein transformed biological research.,inactive -3502,lion's mane jelly,Jellies,Salt Water,ocean,Night,Any,Required,Epic,0.11,1,200,24,58,0.82,,,,lion's mane jellies trail dense curtains of tentacles through cold seas. the bell darkens from yellow to deep red as the animal grows.,inactive -3503,moon jelly,Jellies,Salt Water,ocean,Night,Any,Any,Uncommon,0.7,0.05,5,6,14,0.94,,,,moon jellies pulse gently with four horseshoe-shaped organs visible through the bell. short tentacles sweep plankton toward the mouth.,inactive -3504,Pacific sea nettle,Jellies,Salt Water,ocean,Day,Any,Forbidden,Rare,0.28,0.2,12,14,32,0.9,,,,pacific sea nettles carry rust-colored stripes across pale bells. long tentacles and frilled mouth arms capture plankton and small fish.,inactive -3505,sea wasp,Jellies,Salt Water,ocean,Day,Required,Any,Legendary,0.035,0.2,6,42,90,0.9,,,,sea wasps have box-shaped bells and clusters of eyes along the lower edge. their long tentacles deliver exceptionally potent venom.,inactive -3601,African pompano,Large coastal predators,Salt Water,ocean,Any,Any,Any,Rare,0.26,2,50,14,35,0.84,,,,african pompano develop long streaming fin rays while young. adults become deep-bodied silver hunters around reefs and offshore structure.,inactive -3602,cobia,Large coastal predators,Salt Water,ocean,Day,Any,Any,Rare,0.24,5,80,15,40,0.82,,,,"cobia often follow sharks, rays, and floating structures in warm seas. a broad dark stripe runs along their long, powerful bodies.",inactive -3603,giant trevally,Large coastal predators,Salt Water,ocean,Day,Any,Any,Epic,0.1,10,150,32,78,0.8,,,,giant trevally hunt reef edges with bursts of speed and force. large individuals sometimes charge prey from surf and shallow lagoons.,inactive -3604,greater amberjack,Large coastal predators,Salt Water,ocean,Any,Any,Any,Rare,0.25,5,90,15,42,0.82,,,,"greater amberjacks circle reefs, wrecks, and offshore platforms. a dark stripe crosses the eye of their sturdy torpedo-shaped bodies.",inactive -3605,lesser amberjack,Large coastal predators,Salt Water,ocean,Any,Any,Any,Uncommon,0.75,1,20,7,18,0.86,,,,lesser amberjacks school around deep reefs and floating objects. an enlarged eye suits their preference for dimmer water.,inactive -3701,atlantic halibut,Large flatfish,Salt Water,ocean,Any,Any,Any,Epic,0.1,10,300,32,82,0.8,,,,atlantic halibut are immense right-eyed flatfish of cold northern seas. adults ambush fish and squid from deep rocky or sandy bottoms.,inactive -3702,pacific halibut,Large flatfish,Salt Water,ocean,Any,Any,Any,Epic,0.1,10,350,34,86,0.8,,,,pacific halibut lie camouflaged on cold continental shelves. powerful flat bodies can travel long distances between feeding and spawning grounds.,inactive -3703,turbot,Large flatfish,Salt Water,ocean,Any,Any,Required,Rare,0.24,1,35,14,34,0.85,,,,"turbot have broad, nearly circular bodies covered with bony bumps instead of scales. they bury into sand before ambushing fish and crustaceans.",inactive -3801,American lobster,Lobsters and shrimp,Salt Water,ocean,Night,Any,Required,Rare,0.28,0.5,44,16,42,0.86,,,,american lobsters shelter in rocky crevices and emerge to forage along the bottom. one claw crushes while the other cuts and grips.,inactive -3802,Antarctic krill,Lobsters and shrimp,Salt Water,ocean,Night,Any,Any,Rare,0.3,0.001,0.01,10,22,0.99,,,,"antarctic krill form enormous swarms beneath southern seas and ice. these small crustaceans feed whales, seals, penguins, and fish.",inactive -3803,Caribbean spiny lobster,Lobsters and shrimp,Salt Water,ocean,Night,Any,Forbidden,Rare,0.25,0.5,26,15,38,0.87,,,,caribbean spiny lobsters rely on long antennae and a thorny shell instead of large claws. groups march together across the seafloor.,inactive -3804,peacock mantis shrimp,Lobsters and shrimp,Salt Water,ocean,Day,Required,Any,Epic,0.1,0.05,0.4,22,50,0.96,,,,peacock mantis shrimp strike hard-shelled prey with club-like limbs. complex eyes move independently and detect colors beyond human vision.,inactive -3805,skunk cleaner shrimp,Lobsters and shrimp,Salt Water,ocean,Day,Any,Forbidden,Uncommon,0.75,0.01,0.15,5,11,0.98,,,,skunk cleaner shrimp advertise at reef cleaning stations with bright white antennae. visiting fish pause while parasites are picked away.,inactive -3901,Atlantic ghost crab,Marine crabs,Salt Water,ocean,Night,Any,Forbidden,Rare,0.28,0.02,0.5,11,24,0.97,,,,atlantic ghost crabs dash across beaches on long pale legs and retreat into deep burrows. raised eyes scan nearly every direction.,inactive -3902,blue crab,Marine crabs,Salt Water,ocean,Day,Any,Any,Common,1.15,0.1,1.1,3,8,0.95,,,,"blue crabs swim with flattened rear legs shaped like paddles. bright blue claws and an olive shell conceal a quick, defensive temperament.",inactive -3903,Dungeness crab,Marine crabs,Salt Water,ocean,Day,Any,Required,Uncommon,0.65,0.5,3,6,14,0.92,,,,dungeness crabs bury beneath sand with only their eyes and antennae exposed. broad toothed shells protect them along cool pacific coasts.,inactive -3904,Japanese spider crab,Marine crabs,Salt Water,ocean,Night,Any,Any,Legendary,0.045,5,44,38,88,0.84,,,,japanese spider crabs carry the longest leg span of any living arthropod. adults roam deep seafloors around japan.,inactive -3905,red king crab,Marine crabs,Salt Water,ocean,Night,Any,Required,Epic,0.11,2,24,24,58,0.85,,,,"red king crabs stride over cold northern bottoms on long armored legs. despite the name, they are closer to hermit crabs than true crabs.",inactive -4001,american eel,Migratory eels,Fresh Water | Salt Water,river,Night,Required,Any,Rare,0.25,0.3,8,12,27,0.88,,,,american eels hatch far out in the sargasso sea before entering freshwater rivers. adults later reverse the journey to spawn once.,inactive -4002,european eel,Migratory eels,Fresh Water | Salt Water,river,Night,Any,Required,Rare,0.2,0.3,10,13,30,0.88,,,,european eels cross the atlantic as transparent larvae before entering rivers and lakes. mature silver eels return to sea to reproduce.,inactive -4101,rainbow smelt,Migratory forage fish,Fresh Water | Salt Water,lake,Night,Any,Any,Common,2.5,0.05,0.8,2,5,1,,,,"rainbow smelt move between coastal water and rivers, though some remain landlocked. cucumber-like aromas cling to freshly caught fish.",inactive -4201,eulachon,Ocean-run forage fish,Fresh Water | Salt Water,river,Night,Required,Any,Uncommon,0.9,0.05,0.5,4,9,0.98,,,,eulachon return from the pacific to spawn in coastal rivers. their oil-rich bodies once served as candles when dried and fitted with wicks.,inactive -4301,white sturgeon,Ocean-run giants,Fresh Water | Salt Water,river,Night,Any,Any,Legendary,0.045,20,500,58,135,0.78,,,,white sturgeon are the largest freshwater fish in north america. armored plates line bodies built for long lives in rivers and estuaries.,inactive -4401,atlantic salmon,Ocean-run salmon,Salt Water,ocean,Any,Any,Any,Epic,0.65,8,40,20,42,0.85,,,,"atlantic salmon can return from the ocean to the river where they hatched. unlike many salmon, some survive to make the trip again.",active -4402,chum salmon,Ocean-run salmon,Salt Water,ocean,Any,Any,Any,Uncommon,2.5,6,25,10,22,0.9,,,,chum salmon travel immense distances and develop striking bars when they return to fresh water to spawn.,active -4403,coho salmon,Ocean-run salmon,Salt Water,ocean,Any,Any,Any,Rare,1.4,5,30,14,28,0.88,,,,coho salmon are agile hunters known for powerful leaps. young coho may spend more than a year growing in streams.,active -4404,pink salmon,Ocean-run salmon,Salt Water,ocean,Any,Any,Any,Uncommon,3,3,12,8,15,0.92,,,,pink salmon usually follow a strict two-year life cycle. spawning males develop the hump that inspired their nickname.,active -4405,sockeye salmon,Ocean-run salmon,Salt Water,ocean,Any,Any,Any,Rare,1.6,4,15,12,24,0.9,,,,sockeye salmon feed heavily on plankton at sea. adults turn vivid red as they return inland to spawn.,active -4501,steelhead trout,Ocean-run salmonids,Fresh Water,river,Any,Any,Any,Rare,0.2,2,35,10,20,0.9,,,,steelhead are the ocean-going form of rainbow trout. adults can leave fresh water and later return to spawn.,active -4601,black marlin,Oceanic billfish,Salt Water,ocean,Any,Any,Any,Epic,0.08,80,700,45,90,0.9,,,,black marlin are powerful billfish that spend much of their lives in warm open ocean and can make blistering runs.,active -4602,blue marlin,Oceanic billfish,Salt Water,ocean,Any,Any,Any,Legendary,0.05,100,1000,60,120,0.9,,,,blue marlin are highly migratory open-ocean hunters. their long bill helps them stun prey before turning back to feed.,active -4603,sailfish,Oceanic billfish,Salt Water,ocean,Any,Any,Any,Epic,0.1,30,200,38,78,0.9,,,,sailfish raise their enormous dorsal fin while herding baitfish. they are among the fastest fish in the sea.,active -4604,swordfish,Oceanic billfish,Salt Water,ocean,Any,Any,Any,Legendary,0.06,50,1000,55,110,0.9,,,,"swordfish are fast, wide-ranging predators with a flattened bill. they can cross deep water and warm surface layers in one day.",active -4605,white marlin,Oceanic billfish,Salt Water,ocean,Any,Any,Any,Epic,0.1,30,180,35,70,0.9,,,,white marlin favor warm offshore water and use their rounded dorsal fin and bill to weave through schools of prey.,active -4701,mahi-mahi,Oceanic pelagic fish,Salt Water,ocean,Day,Any,Forbidden,Rare,0.28,2,50,15,38,0.84,,,,"mahi-mahi flash brilliant blue, green, and gold while chasing prey near the surface. they grow quickly and gather around floating objects.",inactive -4702,opah,Oceanic pelagic fish,Salt Water,ocean,Day,Any,Forbidden,Epic,0.09,20,600,36,88,0.8,,,,"opah circulate warm blood through much of the body, an unusual trait among fish. round silver flanks glow with red fins and pale spots.",inactive -4703,wahoo,Oceanic pelagic fish,Salt Water,ocean,Day,Any,Any,Epic,0.11,10,100,30,70,0.82,,,,wahoo are streamlined open-ocean hunters with rows of sharp teeth. blue vertical bars flicker across their sides during fast pursuits.,inactive -4801,albacore tuna,Oceanic tuna,Salt Water,ocean,Any,Any,Any,Rare,1.5,10,45,12,24,0.85,,,,albacore have unusually long pectoral fins. their warm muscles help them cruise across wide stretches of open ocean.,active -4802,bigeye tuna,Oceanic tuna,Salt Water,ocean,Any,Any,Any,Epic,0.55,20,120,22,48,0.8,,,,"bigeye tuna make daily trips between deep, cool water and warmer surface layers. their large eyes suit those dim depths.",active -4803,bluefin tuna,Oceanic tuna,Salt Water,ocean,Any,Any,Any,Legendary,0.18,30,250,35,90,0.78,,,,bluefin tuna are powerful ocean travelers. heat retained in their swimming muscles lets them thrive in surprisingly cold seas.,active -4804,skipjack tuna,Oceanic tuna,Salt Water,ocean,Any,Any,Any,Uncommon,3,5,25,8,16,0.9,,,,skipjack travel in fast-moving schools and have dark stripes along their lower sides. they rarely stop swimming.,active -4805,yellowfin tuna,Oceanic tuna,Salt Water,ocean,Any,Any,Any,Rare,1,15,80,16,36,0.82,,,,yellowfin are named for their bright yellow fins and finlets. large schools often gather with other open-ocean hunters.,active -4901,common octopus,Octopuses,Salt Water,ocean,Night,Any,Any,Uncommon,0.65,0.2,22,7,18,0.87,,,,common octopuses squeeze through narrow cracks and solve problems while hunting reefs. skin cells rapidly change color and texture.,inactive -4902,day octopus,Octopuses,Salt Water,ocean,Day,Any,Forbidden,Rare,0.24,0.2,15,15,36,0.88,,,,"day octopuses forage across tropical reefs while the sun is high. shifting bars and spots communicate alarm, camouflage, and threat.",inactive -4903,giant Pacific octopus,Octopuses,Salt Water,ocean,Night,Any,Required,Epic,0.1,5,200,28,70,0.81,,,,giant pacific octopuses explore cold rocky dens with thousands of arm suckers. females guard their eggs without feeding until they hatch.,inactive -4904,greater blue-ringed octopus,Octopuses,Salt Water,ocean,Day,Required,Any,Legendary,0.04,0.05,0.3,38,82,0.96,,,,greater blue-ringed octopuses reveal vivid rings when threatened. a tiny beak can deliver venom strong enough to stop breathing.,inactive -5001,sunfish,Open-ocean giants,Salt Water,ocean,Day,Any,Any,Common,7,0.4,2.5,3,3,1,,,,ocean sunfish are built more like enormous swimming heads than ordinary fish. they visit the surface and turn sideways to warm up.,active -5101,barndoor skate,Rays and skates,Salt Water,ocean,Any,Any,Required,Epic,0.1,5,150,28,68,0.8,,,,barndoor skates glide over cold atlantic bottoms with broad wing-like fins. rows of thorny spines protect the back and tail.,inactive -5102,giant manta ray,Rays and skates,Salt Water,ocean,Day,Any,Forbidden,Legendary,0.025,100,1000,65,150,0.76,,,,giant manta rays funnel plankton into wide mouths with two flexible head fins. each belly carries a unique pattern of dark spots.,inactive -5103,largetooth sawfish,Rays and skates,Salt Water,ocean,Night,Required,Any,Legendary,0.035,25,1300,58,135,0.78,,,,largetooth sawfish detect hidden prey with a long sensory rostrum. a swift sideways sweep stuns fish and exposes animals buried in mud.,inactive -5104,ocellate river stingray,Rays and skates,Fresh Water,river,Day,Required,Any,Epic,0.09,2,35,28,65,0.82,,,,ocellate river stingrays carry bright eye-like spots across a round disc. they hide beneath sand in south american rivers.,inactive -5105,southern stingray,Rays and skates,Salt Water,ocean,Day,Any,Any,Rare,0.23,2,80,15,40,0.82,,,,southern stingrays bury in warm sand with only their eyes and spiracles visible. crushing plates break open clams and crustaceans.,inactive -5201,red lionfish,Reef ambush fish,Salt Water,ocean,Night,Any,Any,Rare,0.3,0.2,3,11,25,0.92,,,,red lionfish spread ornate venomous spines when threatened. broad fins herd smaller fish into corners before a rapid gulp.,inactive -5202,red scorpionfish,Reef ambush fish,Salt Water,ocean,Night,Any,Any,Rare,0.3,0.2,7,11,25,0.9,,,,red scorpionfish vanish against rocky reefs through mottled color and skin flaps. venomous dorsal spines punish careless predators.,inactive -5301,green moray,Reef eels,Salt Water,ocean,Night,Any,Any,Rare,0.28,1,30,13,32,0.86,,,,green morays appear green because yellow mucus coats blue-gray skin. a second set of jaws pulls captured prey deeper into the throat.,inactive -5401,peacock flounder,Reef flatfish,Salt Water,ocean,Day,Any,Any,Rare,0.3,0.2,5,11,24,0.9,,,,peacock flounders change their spots and colors to match tropical sand. both eyes scan above while the flat body remains concealed.,inactive -5501,blue tang,Reef grazers,Salt Water,ocean,Day,Any,Any,Uncommon,0.9,0.05,1.5,5,11,0.95,,,,blue tangs graze algae from coral reefs with small close-set teeth. sharp folding spines near the tail give surgeonfish their name.,inactive -5502,rainbow parrotfish,Reef grazers,Salt Water,ocean,Day,Any,Any,Epic,0.12,2,40,25,58,0.84,,,,rainbow parrotfish scrape algae from reefs with fused beak-like teeth. crushed coral passes through them and returns to the reef as sand.,inactive -5503,stoplight parrotfish,Reef grazers,Salt Water,ocean,Day,Any,Any,Rare,0.28,0.5,15,12,29,0.88,,,,stoplight parrotfish change color dramatically as they mature. powerful dental plates bite algae from hard reef surfaces.,inactive -5504,yellow tang,Reef grazers,Salt Water,ocean,Day,Forbidden,Any,Rare,0.35,0.05,0.8,9,20,0.96,,,,yellow tangs browse algae across hawaiian reefs during daylight. at night their bright bodies darken and show a pale horizontal stripe.,inactive -5601,atlantic trumpetfish,Reef oddities,Salt Water,ocean,Day,Any,Any,Rare,0.3,0.1,2,10,24,0.94,,,,atlantic trumpetfish hover head-down among corals and sea fans. long tubular snouts expand suddenly to draw in small fish.,inactive -5602,gray triggerfish,Reef oddities,Salt Water,ocean,Day,Any,Any,Uncommon,0.8,0.3,12,7,17,0.88,,,,"gray triggerfish lock a stout dorsal spine upright when wedged into shelter. strong teeth crack barnacles, crabs, and shellfish.",inactive -5603,guineafowl puffer,Reef oddities,Salt Water,ocean,Day,Any,Any,Rare,0.3,0.2,5,11,26,0.9,,,,guineafowl puffers swallow water to inflate when threatened. adults may shift from a spotted dark pattern to a vivid yellow form.,inactive -5604,longhorn cowfish,Reef oddities,Salt Water,ocean,Day,Any,Required,Epic,0.13,0.1,2,23,52,0.94,,,,longhorn cowfish wear a rigid box of fused scales with horns above the eyes. small fins steer the angular body with surprising precision.,inactive -5605,queen triggerfish,Reef oddities,Salt Water,ocean,Day,Any,Forbidden,Rare,0.25,0.5,15,14,32,0.88,,,,queen triggerfish blow jets of water to uncover buried prey and flip sea urchins. vivid blue lines radiate across the face.,inactive -5606,red cornetfish,Reef oddities,Salt Water,ocean,Day,Any,Required,Epic,0.11,0.2,4,24,55,0.92,,,,red cornetfish stalk reefs with extremely long bodies and tubular snouts. a trailing filament extends from the center of the tail.,inactive -5607,spotted porcupinefish,Reef oddities,Salt Water,ocean,Night,Any,Required,Epic,0.12,0.5,7,24,54,0.9,,,,spotted porcupinefish inflate until long spines stand outward. fused teeth form a strong beak for crushing shelled prey.,inactive -5608,yellow boxfish,Reef oddities,Salt Water,ocean,Day,Any,Any,Rare,0.32,0.03,0.8,10,22,0.96,,,,yellow boxfish juveniles are bright cubes covered in black spots. rigid body armor leaves small fins to provide careful steering.,inactive -5701,copperband butterflyfish,Reef ornamentals,Salt Water,ocean,Day,Any,Forbidden,Rare,0.32,0.03,0.4,9,21,0.98,,,,copperband butterflyfish probe reef cracks with long narrow snouts. bold orange bands and a false eyespot confuse predators.,inactive -5702,ocellaris clownfish,Reef ornamentals,Salt Water,ocean,Day,Any,Any,Uncommon,1,0.01,0.15,5,10,1,,,,ocellaris clownfish shelter safely among stinging anemone tentacles. each group is led by a female that develops from the largest male.,inactive -5703,queen angelfish,Reef ornamentals,Salt Water,ocean,Day,Any,Any,Rare,0.3,0.1,2,11,25,0.94,,,,queen angelfish graze sponges from warm atlantic reefs. a blue-ringed spot on the forehead resembles a tiny crown.,inactive -5801,Atlantic goliath grouper,Reef predators,Salt Water,ocean,Any,Any,Required,Legendary,0.05,20,800,50,125,0.78,,,,"atlantic goliath groupers occupy reefs, wrecks, and mangrove roots. enormous mouths pull prey inward with a sudden pressure drop.",inactive -5802,bluefin trevally,Reef predators,Salt Water,ocean,Day,Any,Forbidden,Rare,0.3,1,25,14,32,0.86,,,,bluefin trevally hunt reef fish in coordinated groups. electric blue fins and scattered blue spots contrast with a golden body.,inactive -5803,giant grouper,Reef predators,Salt Water,ocean,Any,Any,Required,Legendary,0.045,20,880,52,128,0.78,,,,giant groupers become massive ambush predators around indo-pacific reefs. juveniles carry bold black-and-yellow markings.,inactive -5804,great barracuda,Reef predators,Salt Water,ocean,Day,Any,Required,Epic,0.12,5,80,28,65,0.82,,,,great barracudas hover motionless before accelerating toward prey. long jaws carry two distinct rows of sharp teeth.,inactive -5805,gulf grouper,Reef predators,Salt Water,ocean,Any,Any,Any,Uncommon,0.3,2,40,10,24,0.9,,,,gulf grouper are ambush predators that use a sudden gulp to pull prey into their cavernous mouths.,active -5806,Nassau grouper,Reef predators,Salt Water,ocean,Any,Any,Forbidden,Epic,0.12,2,55,25,62,0.82,,,,nassau groupers shift their bars and colors with mood and surroundings. adults gather at traditional reef sites to spawn.,inactive -5807,red grouper,Reef predators,Salt Water,ocean,Any,Any,Any,Rare,0.2,2,30,16,36,0.9,,,,red grouper excavate shelters in reef rubble. the hollows they make can become hiding places for many smaller animals.,active -5901,blue-green chromis,Reef schooling fish,Salt Water,ocean,Day,Any,Any,Common,2.8,0.01,0.25,2,4,1,,,,blue-green chromis form loose clouds above branching coral. the school dives into narrow shelter whenever a predator approaches.,inactive -5902,bluestriped grunt,Reef schooling fish,Salt Water,ocean,Day,Any,Any,Common,2,0.1,3,3,7,0.94,,,,bluestriped grunts shelter on reefs by day and spread over seagrass to feed at night. grinding throat teeth produce audible grunts.,inactive -5903,French grunt,Reef schooling fish,Salt Water,ocean,Day,Any,Any,Common,2,0.1,3.5,3,7,0.94,,,,french grunts gather in yellow-striped schools around reefs and wrecks. they travel into nearby sand and grass beds after dark.,inactive -5904,sergeant major,Reef schooling fish,Salt Water,ocean,Day,Any,Any,Common,2.5,0.02,0.5,2,5,0.98,,,,sergeant majors guard purple egg patches on hard reef surfaces. five dark bars cross their yellow and silver bodies.,inactive -6001,lane snapper,Reef snapper,Salt Water,ocean,Any,Any,Any,Common,0.45,0.5,5,5,11,0.9,,,,lane snapper use reef structure for cover and hunt small crustaceans and fish when the light begins to fade.,active -6002,mangrove snapper,Reef snapper,Salt Water,ocean,Any,Any,Any,Uncommon,0.35,0.5,12,7,16,0.9,,,,"mangrove snapper shelter among roots and docks when young, then move toward reefs as they grow.",active -6003,mutton snapper,Reef snapper,Salt Water,ocean,Any,Any,Any,Rare,0.2,2,30,12,28,0.9,,,,"mutton snapper have canine teeth that help them pick crabs, shrimp, and other hard-shelled prey from the reef.",active -6004,red snapper,Reef snapper,Salt Water,ocean,Any,Any,Any,Uncommon,0.35,1,25,8,19,0.9,,,,"red snapper gather around reefs, wrecks, and ledges. their diet includes small fish, shrimp, and squid.",active -6101,ballan wrasse,Reef wrasses,Salt Water,ocean,Day,Any,Any,Uncommon,0.8,0.2,10,6,15,0.9,,,,ballan wrasse crush shellfish and sea urchins with strong throat teeth. thick lips and mottled colors suit rocky european reefs.,inactive -6102,cleaner wrasse,Reef wrasses,Salt Water,ocean,Day,Any,Forbidden,Rare,0.35,0.01,0.2,9,20,1,,,,cleaner wrasses advertise with a bright stripe and dance at reef stations. larger fish wait while parasites are picked from skin and gills.,inactive -6103,hogfish,Reef wrasses,Salt Water,ocean,Day,Any,Any,Rare,0.3,0.5,20,12,30,0.86,,,,hogfish root through sand with long pig-like snouts in search of shellfish. adults can change from female to male as social groups shift.,inactive -6201,green sea turtle,Sea turtles,Salt Water,ocean,Day,Any,Forbidden,Legendary,0.018,65,500,62,145,0.78,,,,green sea turtles graze seagrass meadows with finely serrated jaws. adults migrate long distances between feeding and nesting grounds.,inactive -6202,hawksbill sea turtle,Sea turtles,Salt Water,ocean,Day,Required,Any,Legendary,0.014,75,250,66,150,0.8,,,,hawksbill sea turtles reach into reef crevices with narrow hooked beaks. a diet rich in sponges helps shape coral communities.,inactive -6203,leatherback sea turtle,Sea turtles,Salt Water,ocean,Night,Any,Required,Legendary,0.012,500,2000,75,175,0.76,,,,leatherback sea turtles cross entire oceans while hunting jellies. a flexible ridged shell and internal heat help them enter cold water.,inactive -6204,loggerhead sea turtle,Sea turtles,Salt Water,ocean,Day,Any,Any,Legendary,0.016,150,1200,68,155,0.77,,,,loggerhead sea turtles crush crabs and mollusks with massive jaws. females often return near their birth beaches to nest.,inactive -6301,leafy seadragon,Seahorses and seadragons,Salt Water,ocean,Day,Any,Forbidden,Epic,0.1,0.1,0.5,24,55,0.94,,,,leafy seadragons drift among seaweed with elaborate skin lobes that resemble leaves. males carry eggs beneath the tail.,inactive -6302,weedy seadragon,Seahorses and seadragons,Salt Water,ocean,Day,Any,Required,Rare,0.22,0.1,0.6,16,38,0.93,,,,weedy seadragons rely on slender bodies and small leaf-like lobes for camouflage. males brood rows of eggs on the underside of the tail.,inactive -6401,black-lip pearl oyster,Shellfish,Salt Water,ocean,Day,Any,Any,Rare,0.22,0.1,5,14,40,0.91,,,,black-lip pearl oysters line their shells with dark-edged nacre. a trapped irritant can become coated in the same pearly material.,inactive -6402,giant clam,Shellfish,Salt Water,ocean,Day,Any,Forbidden,Epic,0.1,5,500,28,72,0.8,,,,giant clams host photosynthetic algae inside brightly colored mantles. heavy shells remain anchored to one reef spot throughout adulthood.,inactive -6403,Pacific geoduck,Shellfish,Salt Water,ocean,Day,Any,Required,Rare,0.25,0.5,15,14,34,0.88,,,,pacific geoducks bury their shells deep while a long siphon reaches the seafloor. these clams can survive for well over a century.,inactive -6404,queen conch,Shellfish,Salt Water,ocean,Day,Any,Forbidden,Rare,0.24,1,5,15,36,0.91,,,,queen conchs graze algae with a long flexible snout. adults develop a broad flared shell lip and move by vaulting on one muscular foot.,inactive -6405,red abalone,Shellfish,Salt Water,ocean,Day,Any,Required,Epic,0.09,0.2,12,24,56,0.88,,,,red abalones cling to pacific rocks with broad muscular feet. rows of shell holes release water that has passed over the gills.,inactive -6501,bigfin reef squid,Squid,Salt Water,ocean,Day,Any,Forbidden,Rare,0.3,0.2,5,13,30,0.91,,,,bigfin reef squid hover in coordinated groups around warm reefs. shifting colors and body patterns signal to nearby squid.,inactive -6502,colossal squid,Squid,Salt Water,ocean,Night,Required,Any,Legendary,0.015,400,1100,82,190,0.76,,,,colossal squid carry swiveling hooks on their arms and tentacles. enormous eyes gather faint light in the deep southern ocean.,inactive -6503,giant squid,Squid,Salt Water,ocean,Night,Any,Required,Legendary,0.02,100,600,70,165,0.77,,,,giant squid hunt deep ocean prey with two long feeding tentacles. the largest eyes in the animal world watch for movement in darkness.,inactive -6504,Humboldt squid,Squid,Salt Water,ocean,Night,Any,Any,Epic,0.09,5,110,26,64,0.82,,,,humboldt squid flash red and white while hunting in large groups. powerful beaks and grasping suckers handle fish and other squid.,inactive -6601,ballyhoo,Surface ocean fish,Salt Water,ocean,Day,Any,Any,Common,2.5,0.05,1,2,5,0.98,,,,ballyhoo skim warm ocean surfaces with an extended lower jaw. tight schools scatter into quick leaps when predators strike.,inactive -6602,houndfish,Surface ocean fish,Salt Water,ocean,Day,Any,Any,Rare,0.3,0.5,10,11,25,0.88,,,,houndfish hunt near the surface with long jaws filled with fine teeth. powerful leaps can carry their narrow bodies far above the water.,inactive -6603,tropical flyingfish,Surface ocean fish,Salt Water,ocean,Day,Forbidden,Any,Rare,0.35,0.05,1.5,10,22,0.94,,,,tropical flyingfish accelerate underwater before spreading enlarged fins above the surface. glides help them escape pursuing predators.,inactive -6701,striped bass,Temperate coastal,Salt Water,ocean,Any,Any,Any,Uncommon,4,1.5,8,7,7,0.9,,,,"striped bass split their lives between salt and fresh water, returning upriver to spawn. a long-lived striper may see three decades.",active -6801,atlantic croaker,Temperate estuary,Salt Water,ocean,Night,Required,Any,Common,2.1,0.1,5,3,8,0.92,,,,atlantic croakers vibrate muscles against the swim bladder to make a croaking sound. chin barbels locate worms in sandy bays.,inactive -6802,black drum,Temperate estuary,Salt Water,ocean,Night,Any,Any,Uncommon,0.7,1,70,8,27,0.82,,,,black drum crush oysters and crabs with rounded throat teeth. large adults develop dark vertical bars that fade with age.,inactive -6803,red drum,Temperate estuary,Salt Water,ocean,Any,Required,Any,Uncommon,0.75,1,45,8,23,0.84,,,,red drum use powerful tails to patrol surf and estuaries. one or more black spots near the tail may confuse predators about which end is the head.,inactive -6804,striped mullet,Temperate estuary,Fresh Water | Salt Water,ocean,Day,Any,Any,Common,2.5,0.3,8,3,8,0.92,,,,striped mullet leap clear of the water and travel in coastal schools. they graze algae and detritus with specialized digestive systems.,inactive -6805,weakfish,Temperate estuary,Salt Water,ocean,Night,Any,Required,Rare,0.32,0.5,18,12,29,0.86,,,,weakfish are named for delicate mouth tissue that tears easily around a hook. iridescent spots scatter across their bronze backs.,inactive -6806,white perch,Temperate estuary,Fresh Water | Salt Water,river,Any,Any,Any,Uncommon,1.1,0.2,3.5,5,11,0.9,,,,white perch tolerate fresh and brackish water along the atlantic coast. deep silver bodies gather in schools around river mouths.,inactive -6807,yellowfin croaker,Temperate estuary,Salt Water,ocean,Any,Any,Any,Common,2,0.1,4,3,8,0.92,,,,yellowfin croakers search sandy surf zones with a small chin barbel. internal muscles produce croaks and drumming calls.,inactive -6901,black rockfish,Temperate reef fish,Salt Water,ocean,Any,Any,Any,Common,1.7,0.3,10,4,11,0.9,,,,"black rockfish gather above reefs and kelp along the north pacific coast. like other rockfish, they give birth to live young.",inactive -6902,black sea bass,Temperate reef fish,Salt Water,ocean,Day,Any,Any,Common,1.7,0.3,8,4,10,0.9,,,,"black sea bass shelter around reefs, piers, and wrecks. many begin life as female and later become male.",inactive -6903,canary rockfish,Temperate reef fish,Salt Water,ocean,Day,Any,Any,Uncommon,0.7,0.5,12,7,17,0.88,,,,canary rockfish glow orange-yellow over deep pacific reefs. these long-lived fish mature slowly and give birth to live young.,inactive -6904,scup,Temperate reef fish,Salt Water,ocean,Day,Any,Any,Common,2.2,0.1,5,3,8,0.92,,,,"scup use small strong teeth to crush shellfish and other bottom prey. deep silver bodies gather around piers, reefs, and eelgrass.",inactive -6905,sheepshead,Temperate reef fish,Salt Water,ocean,Day,Any,Any,Uncommon,0.75,0.5,20,7,18,0.86,,,,sheepshead carry flat human-like front teeth for biting barnacles and crabs. dark bars cross their high silver bodies.,inactive -6906,tautog,Temperate reef fish,Salt Water,ocean,Day,Any,Any,Uncommon,0.8,0.5,20,7,18,0.86,,,,tautog pry mussels and crabs from rocky structure with thick lips and strong teeth. adults return to familiar shelters year after year.,inactive -6907,yelloweye rockfish,Temperate reef fish,Salt Water,ocean,Any,Any,Required,Epic,0.09,2,35,28,64,0.84,,,,yelloweye rockfish can live for more than a century on deep pacific reefs. bright golden eyes stand out against orange-red bodies.,inactive -7001,lingcod,Temperate reef predators,Salt Water,ocean,Any,Any,Any,Rare,0.25,2,60,14,38,0.83,,,,"lingcod guard rocky dens and ambush fish with a huge tooth-lined mouth. despite the name, they are greenling relatives rather than cod.",inactive -7101,milkfish,Tropical coastal fish,Salt Water,ocean,Day,Any,Any,Common,1.8,0.5,25,4,12,0.88,,,,milkfish graze algae and tiny organisms in warm coastal shallows. deeply forked tails drive large schools through lagoons and estuaries.,inactive -7201,roosterfish,Tropical coastal predators,Salt Water,ocean,Day,Any,Any,Epic,0.11,5,100,30,70,0.82,,,,roosterfish raise seven long dorsal spines while chasing prey through tropical surf. dark bands cross their sleek silver bodies.,inactive -7301,atlantic tarpon,Tropical estuary,Fresh Water | Salt Water,ocean,Any,Required,Any,Epic,0.09,10,180,34,82,0.8,,,,atlantic tarpon gulp air with a lung-like swim bladder when coastal water runs low on oxygen. giant silver scales flash during leaps.,inactive -7302,barramundi,Tropical estuary,Fresh Water | Salt Water,river,Night,Required,Any,Rare,0.24,2,45,15,38,0.84,,,,barramundi move between rivers and coasts and can breathe in low-oxygen water. many mature first as males and later become females.,inactive -7303,common snook,Tropical estuary,Salt Water,ocean,Night,Required,Any,Rare,0.3,1,30,13,32,0.85,,,,common snook wait around mangrove roots and current seams to ambush prey. a bold black lateral line divides their silver flanks.,inactive -7401,bonefish,Tropical flats fish,Salt Water,ocean,Day,Any,Forbidden,Rare,0.25,0.5,15,13,31,0.86,,,,bonefish sweep tropical flats in silvery schools and root for buried prey. their speed and pale bodies make them difficult to follow in shallow water.,inactive -7402,Florida pompano,Tropical flats fish,Salt Water,ocean,Day,Any,Forbidden,Uncommon,0.85,0.5,9,7,16,0.88,,,,"florida pompano search warm surf for crabs, clams, and sand fleas. short blunt snouts lead into deep, silvery bodies.",inactive -7403,ladyfish,Tropical flats fish,Salt Water,ocean,Day,Required,Any,Common,1.7,0.2,8,4,10,0.9,,,,ladyfish race through warm shallows after schooling prey and often leap when pursued. a deeply forked tail powers their slender bodies.,inactive -7404,permit,Tropical flats fish,Salt Water,ocean,Day,Forbidden,Any,Epic,0.11,3,50,27,62,0.84,,,,permit browse tropical flats for crabs and shellfish with rubbery mouths. tall silver bodies carry long sickle-shaped dorsal and anal fins.,inactive -7501,clown knifefish,Tropical freshwater fish,Fresh Water,river,Night,Any,Required,Rare,0.25,1,25,16,38,0.86,,,,clown knifefish undulate one long belly fin to glide forward or backward. dark eye-like spots line their silver nocturnal bodies.,inactive -7502,clown loach,Tropical freshwater fish,Fresh Water,river,Day,Required,Any,Rare,0.32,0.1,2,10,22,0.9,,,,clown loaches rest in groups and make clicking sounds while feeding. orange bodies carry three broad black bands and small eye spines.,inactive -7503,discus,Tropical freshwater fish,Fresh Water,river,Day,Any,Required,Epic,0.12,0.1,1,24,52,0.92,,,,"discus move through quiet amazon backwaters with round, flattened bodies. parents feed newly hatched young with nutrient-rich skin mucus.",inactive -7504,freshwater angelfish,Tropical freshwater fish,Fresh Water,river,Day,Any,Any,Rare,0.3,0.05,0.5,10,22,0.95,,,,freshwater angelfish slip between tall plants on narrow triangular bodies. long fins and vertical bars resemble stems and shadows.,inactive -7505,giant gourami,Tropical freshwater fish,Fresh Water,lake,Day,Any,Any,Rare,0.25,2,20,13,31,0.86,,,,giant gouramis breathe surface air through a specialized labyrinth organ. adults graze plants but also investigate insects and small animals.,inactive -7506,Nile tilapia,Tropical freshwater fish,Fresh Water,lake,Day,Any,Any,Common,2.2,0.3,8,3,9,0.9,,,,nile tilapia thrive in warm lakes and rivers on a varied diet. females protect eggs and young inside their mouths.,inactive -7507,oscar,Tropical freshwater fish,Fresh Water,river,Day,Any,Any,Uncommon,0.8,0.3,4,6,14,0.9,,,,oscars are large south american cichlids that recognize routines and defend territories. a tail eyespot may redirect attacks away from the head.,inactive -7508,Siamese fighting fish,Tropical freshwater fish,Fresh Water,pond,Day,Required,Any,Uncommon,1,0.01,0.15,5,10,1,,,,siamese fighting fish breathe surface air with a labyrinth organ. males build bubble nests and guard the eggs beneath them.,inactive -7509,tambaqui,Tropical freshwater fish,Fresh Water,river,Day,Required,Any,Epic,0.1,8,80,30,68,0.82,,,,tambaqui follow seasonal floods into forests to feed on fruit and seeds. strong square teeth crack tough plant material.,inactive -7510,walking catfish,Tropical freshwater fish,Fresh Water,pond,Night,Required,Any,Rare,0.3,0.5,5,11,24,0.9,,,,walking catfish wriggle across wet ground using stiff pectoral spines for support. an air-breathing organ helps them survive the journey.,inactive -7601,giant snakehead,Tropical freshwater predators,Fresh Water,river,Night,Any,Required,Epic,0.1,3,45,28,64,0.84,,,,giant snakeheads breathe air and guard schools of young near the surface. long bodies launch sudden attacks from flooded vegetation.,inactive -7602,golden dorado,Tropical freshwater predators,Fresh Water,river,Day,Required,Any,Epic,0.1,5,55,29,66,0.82,,,,"golden dorado chase fish through powerful south american rivers. muscular tails, heavy jaws, and golden scales suit life in fast current.",inactive -7603,golden mahseer,Tropical freshwater predators,Fresh Water,river,Day,Required,Any,Epic,0.09,8,90,32,72,0.82,,,,golden mahseer migrate through swift mountain rivers to reach spawning grounds. large scales shine bronze beneath reddish fins.,inactive -7604,peacock bass,Tropical freshwater predators,Fresh Water,river,Day,Any,Any,Rare,0.25,1,25,15,36,0.84,,,,peacock bass are aggressive south american cichlids rather than true bass. adults guard nests and hunt fish in warm clear water.,inactive -7605,red-bellied piranha,Tropical freshwater predators,Fresh Water,river,Any,Required,Any,Rare,0.3,0.2,4,12,27,0.9,,,,"red-bellied piranhas communicate with barks and drum-like sounds. schools provide protection as they search for fish, insects, and carrion.",inactive -7606,silver arowana,Tropical freshwater predators,Fresh Water,river,Day,Any,Required,Epic,0.11,1,15,25,56,0.86,,,,silver arowanas patrol the surface with upturned mouths and long bodies. powerful jumps capture insects and small animals above the water.,inactive -7701,blue whale,Whales and dolphins,Salt Water,ocean,Day,Any,Forbidden,Legendary,0.005,100000,330000,120,300,0.72,,,,blue whales are the largest animals known to have lived. pleated throats expand around vast mouthfuls of water that baleen filters for krill.,inactive -7702,common bottlenose dolphin,Whales and dolphins,Salt Water,ocean,Day,Any,Forbidden,Legendary,0.012,330,1400,75,180,0.76,,,,"common bottlenose dolphins coordinate with whistles, clicks, and body signals. echolocation reveals prey hidden in dark or cloudy water.",inactive -7703,humpback whale,Whales and dolphins,Salt Water,ocean,Day,Any,Required,Legendary,0.008,40000,90000,105,260,0.73,,,,humpback whales use long pectoral fins while turning and feeding. males produce layered songs that change across breeding seasons.,inactive -7704,killer whale,Whales and dolphins,Salt Water,ocean,Day,Required,Any,Legendary,0.008,3000,12000,95,230,0.74,,,,killer whales live in close family groups with distinct calls and hunting traditions. different populations specialize in different prey.,inactive -7705,sperm whale,Whales and dolphins,Salt Water,ocean,Night,Any,Required,Legendary,0.006,15000,125000,115,280,0.72,,,,sperm whales make deep dives to hunt squid with powerful echolocation clicks. their enormous square heads contain a waxy spermaceti organ.,inactive diff --git a/docs/design/fish_catalog_proposal_final.csv b/docs/design/fish_catalog_proposal_final.csv deleted file mode 100644 index e0b402f..0000000 --- a/docs/design/fish_catalog_proposal_final.csv +++ /dev/null @@ -1,314 +0,0 @@ -catalog_number,id,implementation_status,active_status,art_status,fish_resource_path,display_texture_path,catch_profile_id -101,bowfin,implemented,inactive,missing icon,res://fish/species/bowfin/bowfin.tres,,common -102,sturgeon_lake,implemented,inactive,missing icon,res://fish/species/sturgeon_lake/sturgeon_lake.tres,,common -103,gar_longnose,implemented,inactive,missing icon,res://fish/species/gar_longnose/gar_longnose.tres,,common -104,paddlefish,implemented,inactive,missing icon,res://fish/species/paddlefish/paddlefish.tres,,common -105,sturgeon_shovelnose,implemented,inactive,missing icon,res://fish/species/sturgeon_shovelnose/sturgeon_shovelnose.tres,,common -106,gar_spotted,implemented,inactive,missing icon,res://fish/species/gar_spotted/gar_spotted.tres,,common -107,lungfish_west_african,implemented,inactive,missing icon,res://fish/species/lungfish_west_african/lungfish_west_african.tres,,common -201,mudskipper_atlantic,implemented,inactive,missing icon,res://fish/species/mudskipper_atlantic/mudskipper_atlantic.tres,,common -202,foureyes_largescale,implemented,inactive,missing icon,res://fish/species/foureyes_largescale/foureyes_largescale.tres,,common -301,mullet_red,implemented,inactive,missing icon,res://fish/species/mullet_red/mullet_red.tres,,common -401,plaice_european,implemented,inactive,missing icon,res://fish/species/plaice_european/plaice_european.tres,,common -402,flounder_summer,implemented,inactive,missing icon,res://fish/species/flounder_summer/flounder_summer.tres,,common -403,flounder_winter,implemented,inactive,missing icon,res://fish/species/flounder_winter/flounder_winter.tres,,common -501,dugong,implemented,inactive,missing icon,res://fish/species/dugong/dugong.tres,,common -502,seal_harbor,implemented,inactive,missing icon,res://fish/species/seal_harbor/seal_harbor.tres,,common -503,sea_otter,implemented,inactive,missing icon,res://fish/species/sea_otter/sea_otter.tres,,common -504,walrus,implemented,inactive,missing icon,res://fish/species/walrus/walrus.tres,,common -505,manatee_west_indian,implemented,inactive,missing icon,res://fish/species/manatee_west_indian/manatee_west_indian.tres,,common -601,pipefish_bay,implemented,inactive,missing icon,res://fish/species/pipefish_bay/pipefish_bay.tres,,common -602,seahorse_lined,implemented,inactive,missing icon,res://fish/species/seahorse_lined/seahorse_lined.tres,,common -603,monkfish,implemented,inactive,missing icon,res://fish/species/monkfish/monkfish.tres,,common -604,tripletail,implemented,inactive,missing icon,res://fish/species/tripletail/tripletail.tres,,common -701,mackerel_atlantic,implemented,active,complete,res://fish/species/mackerel_atlantic/mackerel_atlantic.tres,res://fish/species/mackerel_atlantic/fish_mackerel_atlantic.png,common -702,bluefish,implemented,inactive,missing icon,res://fish/species/bluefish/bluefish.tres,,common -703,mackerel_cero,implemented,active,complete,res://fish/species/mackerel_cero/mackerel_cero.tres,res://fish/species/mackerel_cero/fish_mackerel_cero.png,common -704,mackerel_chub,implemented,active,complete,res://fish/species/mackerel_chub/mackerel_chub.tres,res://fish/species/mackerel_chub/fish_mackerel_chub.png,common -705,jack_crevalle,implemented,inactive,missing icon,res://fish/species/jack_crevalle/jack_crevalle.tres,,common -706,mackerel_king,implemented,active,complete,res://fish/species/mackerel_king/mackerel_king.tres,res://fish/species/mackerel_king/fish_mackerel_king.png,common -707,mackerel_spanish,implemented,active,complete,res://fish/species/mackerel_spanish/mackerel_spanish.tres,res://fish/species/mackerel_spanish/fish_mackerel_spanish.png,common -708,queenfish_talang,implemented,inactive,missing icon,res://fish/species/queenfish_talang/queenfish_talang.tres,,common -801,sand_lance_american,implemented,inactive,missing icon,res://fish/species/sand_lance_american/sand_lance_american.tres,,common -802,menhaden_atlantic,implemented,inactive,missing icon,res://fish/species/menhaden_atlantic/menhaden_atlantic.tres,,common -803,pomfret_black,implemented,active,complete,res://fish/species/pomfret_black/pomfret_black.tres,res://fish/species/pomfret_black/fish_pomfret_black.png,common -804,pomfret_chinese,implemented,active,complete,res://fish/species/pomfret_chinese/pomfret_chinese.tres,res://fish/species/pomfret_chinese/fish_pomfret_chinese.png,common -805,anchovy_european,implemented,active,complete,res://fish/species/anchovy_european/anchovy_european.tres,res://fish/species/anchovy_european/fish_anchovy_european.png,common -806,sardine_european,implemented,inactive,missing icon,res://fish/species/sardine_european/sardine_european.tres,,common -807,pomfret_golden,implemented,active,complete,res://fish/species/pomfret_golden/pomfret_golden.tres,res://fish/species/pomfret_golden/fish_pomfret_golden.png,common -808,anchovy_northern,implemented,active,complete,res://fish/species/anchovy_northern/anchovy_northern.tres,res://fish/species/anchovy_northern/fish_anchovy_northern.png,common -809,sardine_pacific,implemented,inactive,missing icon,res://fish/species/sardine_pacific/sardine_pacific.tres,,common -810,pomfret_white,implemented,active,complete,res://fish/species/pomfret_white/pomfret_white.tres,res://fish/species/pomfret_white/fish_pomfret_white.png,common -901,shark_blacktip,implemented,inactive,missing icon,res://fish/species/shark_blacktip/shark_blacktip.tres,,common -902,shark_great_hammerhead,implemented,inactive,missing icon,res://fish/species/shark_great_hammerhead/shark_great_hammerhead.tres,,common -903,shark_great_white,implemented,inactive,missing icon,res://fish/species/shark_great_white/shark_great_white.tres,,common -904,shark_tiger,implemented,inactive,missing icon,res://fish/species/shark_tiger/shark_tiger.tres,,common -905,shark_whale,implemented,inactive,missing icon,res://fish/species/shark_whale/shark_whale.tres,,common -1001,burbot,implemented,inactive,missing icon,res://fish/species/burbot/burbot.tres,,common -1002,cisco,implemented,inactive,missing icon,res://fish/species/cisco/cisco.tres,,common -1003,whitefish_lake,implemented,inactive,missing icon,res://fish/species/whitefish_lake/whitefish_lake.tres,,common -1101,char_arctic,implemented,inactive,missing icon,res://fish/species/char_arctic/char_arctic.tres,,common -1102,grayling_arctic,implemented,inactive,missing icon,res://fish/species/grayling_arctic/grayling_arctic.tres,,common -1103,trout_brown,implemented,inactive,missing icon,res://fish/species/trout_brown/trout_brown.tres,,common -1104,trout_cutthroat,implemented,active,complete,res://fish/species/trout_cutthroat/trout_cutthroat.tres,res://fish/species/trout_cutthroat/fish_trout_cutthroat.png,common -1105,trout_golden,implemented,active,complete,res://fish/species/trout_golden/trout_golden.tres,res://fish/species/trout_golden/fish_trout_golden.png,common -1106,trout_rainbow,implemented,active,complete,res://fish/species/trout_rainbow/trout_rainbow.tres,res://fish/species/trout_rainbow/fish_trout_rainbow.png,common -1201,wolffish_atlantic,implemented,inactive,missing icon,res://fish/species/wolffish_atlantic/wolffish_atlantic.tres,,common -1202,cusk,implemented,inactive,missing icon,res://fish/species/cusk/cusk.tres,,common -1203,wolffish_spotted,implemented,inactive,missing icon,res://fish/species/wolffish_spotted/wolffish_spotted.tres,,common -1301,herring_atlantic,implemented,inactive,missing icon,res://fish/species/herring_atlantic/herring_atlantic.tres,,common -1302,capelin,implemented,inactive,missing icon,res://fish/species/capelin/capelin.tres,,common -1303,sprat_european,implemented,inactive,missing icon,res://fish/species/sprat_european/sprat_european.tres,,common -1304,herring_pacific,implemented,inactive,missing icon,res://fish/species/herring_pacific/herring_pacific.tres,,common -1401,pollock_alaska,implemented,inactive,missing icon,res://fish/species/pollock_alaska/pollock_alaska.tres,,common -1402,cod_atlantic,implemented,inactive,missing icon,res://fish/species/cod_atlantic/cod_atlantic.tres,,common -1403,pollock_atlantic,implemented,inactive,missing icon,res://fish/species/pollock_atlantic/pollock_atlantic.tres,,common -1404,sole_dover,implemented,inactive,missing icon,res://fish/species/sole_dover/sole_dover.tres,,common -1405,haddock,implemented,inactive,missing icon,res://fish/species/haddock/haddock.tres,,common -1406,cod_pacific,implemented,inactive,missing icon,res://fish/species/cod_pacific/cod_pacific.tres,,common -1407,hake_pacific,implemented,inactive,missing icon,res://fish/species/hake_pacific/hake_pacific.tres,,common -1408,hake_silver,implemented,inactive,missing icon,res://fish/species/hake_silver/hake_silver.tres,,common -1501,nautilus_chambered,implemented,inactive,missing icon,res://fish/species/nautilus_chambered/nautilus_chambered.tres,,common -1502,cuttlefish_common,implemented,inactive,missing icon,res://fish/species/cuttlefish_common/cuttlefish_common.tres,,common -1503,cuttlefish_flamboyant,implemented,inactive,missing icon,res://fish/species/cuttlefish_flamboyant/cuttlefish_flamboyant.tres,,common -1601,tilefish_blueline,implemented,inactive,missing icon,res://fish/species/tilefish_blueline/tilefish_blueline.tres,,common -1602,tilefish_golden,implemented,inactive,missing icon,res://fish/species/tilefish_golden/tilefish_golden.tres,,common -1603,ocean_perch_pacific,implemented,inactive,missing icon,res://fish/species/ocean_perch_pacific/ocean_perch_pacific.tres,,common -1604,sea_bass_chilean,implemented,inactive,missing icon,res://fish/species/sea_bass_chilean/sea_bass_chilean.tres,,common -1605,sablefish,implemented,inactive,missing icon,res://fish/species/sablefish/sablefish.tres,,common -1606,wreckfish,implemented,inactive,missing icon,res://fish/species/wreckfish/wreckfish.tres,,common -1701,oarfish_giant,implemented,inactive,missing icon,res://fish/species/oarfish_giant/oarfish_giant.tres,,common -1702,coelacanth_west_indian,implemented,inactive,missing icon,res://fish/species/coelacanth_west_indian/coelacanth_west_indian.tres,,common -1801,anglerfish_black_seadevil,implemented,inactive,missing icon,res://fish/species/anglerfish_black_seadevil/anglerfish_black_seadevil.tres,,common -1802,fangtooth_common,implemented,inactive,missing icon,res://fish/species/fangtooth_common/fangtooth_common.tres,,common -1803,gulper_eel,implemented,inactive,missing icon,res://fish/species/gulper_eel/gulper_eel.tres,,common -1804,barreleye_pacific,implemented,inactive,missing icon,res://fish/species/barreleye_pacific/barreleye_pacific.tres,,common -1805,blobfish_smooth_head,implemented,inactive,missing icon,res://fish/species/blobfish_smooth_head/blobfish_smooth_head.tres,,common -1806,lanternfish_spotted,implemented,inactive,missing icon,res://fish/species/lanternfish_spotted/lanternfish_spotted.tres,,common -1901,sea_star_crown_of_thorns,implemented,inactive,missing icon,res://fish/species/sea_star_crown_of_thorns/sea_star_crown_of_thorns.tres,,common -1902,sea_cucumber_giant_california,implemented,inactive,missing icon,res://fish/species/sea_cucumber_giant_california/sea_cucumber_giant_california.tres,,common -1903,urchin_purple,implemented,inactive,missing icon,res://fish/species/urchin_purple/urchin_purple.tres,,common -1904,sand_dollar,implemented,inactive,missing icon,res://fish/species/sand_dollar/sand_dollar.tres,,common -1905,sea_star_sunflower,implemented,inactive,missing icon,res://fish/species/sea_star_sunflower/sea_star_sunflower.tres,,common -2001,axolotl,implemented,inactive,missing icon,res://fish/species/axolotl/axolotl.tres,,common -2002,hellbender,implemented,inactive,missing icon,res://fish/species/hellbender/hellbender.tres,,common -2101,guppy,implemented,inactive,missing icon,res://fish/species/guppy/guppy.tres,,common -2102,tetra_neon,implemented,inactive,missing icon,res://fish/species/tetra_neon/tetra_neon.tres,,common -2103,danio_zebra,implemented,inactive,missing icon,res://fish/species/danio_zebra/danio_zebra.tres,,common -2201,largemouth_bass,implemented,inactive,missing icon,res://fish/species/largemouth_bass/largemouth_bass.tres,,common -2202,smallmouth_bass,implemented,inactive,missing icon,res://fish/species/smallmouth_bass/smallmouth_bass.tres,,common -2301,buffalo_bigmouth,implemented,inactive,missing icon,res://fish/species/buffalo_bigmouth/buffalo_bigmouth.tres,,common -2302,redhorse_golden,implemented,inactive,missing icon,res://fish/species/redhorse_golden/redhorse_golden.tres,,common -2303,quillback,implemented,inactive,missing icon,res://fish/species/quillback/quillback.tres,,common -2304,buffalo_smallmouth,implemented,inactive,missing icon,res://fish/species/buffalo_smallmouth/buffalo_smallmouth.tres,,common -2305,sucker_white,implemented,inactive,missing icon,res://fish/species/sucker_white/sucker_white.tres,,common -2401,bullhead_black,implemented,inactive,missing icon,res://fish/species/bullhead_black/bullhead_black.tres,,common -2402,catfish_blue,implemented,active,complete,res://fish/species/catfish_blue/catfish_blue.tres,res://fish/species/catfish_blue/fish_catfish_blue.png,bass -2403,bullhead_brown,implemented,inactive,missing icon,res://fish/species/bullhead_brown/bullhead_brown.tres,,common -2404,catfish_channel,implemented,active,complete,res://fish/species/catfish_channel/catfish_channel.tres,res://fish/species/catfish_channel/fish_catfish_channel.png,common -2405,catfish_flathead,implemented,active,complete,res://fish/species/catfish_flathead/catfish_flathead.tres,res://fish/species/catfish_flathead/fish_catfish_flathead.png,bass -2406,madtom_tadpole,implemented,inactive,missing icon,res://fish/species/madtom_tadpole/madtom_tadpole.tres,,common -2407,catfish_white,implemented,active,complete,res://fish/species/catfish_white/catfish_white.tres,res://fish/species/catfish_white/fish_catfish_white.png,common -2408,bullhead_yellow,implemented,inactive,missing icon,res://fish/species/bullhead_yellow/bullhead_yellow.tres,,common -2501,barbel_common,implemented,inactive,missing icon,res://fish/species/barbel_common/barbel_common.tres,,common -2502,bream_common,implemented,inactive,missing icon,res://fish/species/bream_common/bream_common.tres,,common -2503,carp,implemented,active,complete,res://fish/species/carp/carp.tres,res://fish/species/carp/fish_carp_common.png,carp -2504,roach_common,implemented,inactive,missing icon,res://fish/species/roach_common/roach_common.tres,,common -2505,chub_european,implemented,active,complete,res://fish/species/chub_european/chub_european.tres,res://fish/species/chub_european/fish_chub_european.png,common -2506,fallfish,implemented,inactive,missing icon,res://fish/species/fallfish/fallfish.tres,,common -2507,ide,implemented,inactive,missing icon,res://fish/species/ide/ide.tres,,common -2508,rudd,implemented,inactive,missing icon,res://fish/species/rudd/rudd.tres,,common -2509,tench,implemented,inactive,missing icon,res://fish/species/tench/tench.tres,,common -2601,crayfish_red_swamp,implemented,inactive,missing icon,res://fish/species/crayfish_red_swamp/crayfish_red_swamp.tres,,common -2701,gar_alligator,implemented,inactive,missing icon,res://fish/species/gar_alligator/gar_alligator.tres,,common -2702,arapaima,implemented,inactive,missing icon,res://fish/species/arapaima/arapaima.tres,,common -2703,tigerfish_goliath,implemented,inactive,missing icon,res://fish/species/tigerfish_goliath/tigerfish_goliath.tres,,common -2704,muskellunge,implemented,inactive,missing icon,res://fish/species/muskellunge/muskellunge.tres,,common -2801,shiner_common,implemented,inactive,missing icon,res://fish/species/shiner_common/shiner_common.tres,,common -2802,chub_creek,implemented,inactive,missing icon,res://fish/species/chub_creek/chub_creek.tres,,common -2803,shiner_emerald,implemented,inactive,missing icon,res://fish/species/shiner_emerald/shiner_emerald.tres,,common -2804,minnow_fathead,implemented,inactive,missing icon,res://fish/species/minnow_fathead/minnow_fathead.tres,,common -2805,chub_flame,implemented,active,complete,res://fish/species/chub_flame/chub_flame.tres,res://fish/species/chub_flame/fish_chub_flame.png,common -2806,shiner_golden,implemented,inactive,missing icon,res://fish/species/shiner_golden/shiner_golden.tres,,common -2807,chub_lake,implemented,active,complete,res://fish/species/chub_lake/chub_lake.tres,res://fish/species/chub_lake/fish_chub_lake.png,common -2901,electric_eel,implemented,inactive,missing icon,res://fish/species/electric_eel/electric_eel.tres,,common -2902,freshwater_drum,implemented,inactive,missing icon,res://fish/species/freshwater_drum/freshwater_drum.tres,,common -2903,goldeye,implemented,inactive,missing icon,res://fish/species/goldeye/goldeye.tres,,common -2904,mooneye,implemented,inactive,missing icon,res://fish/species/mooneye/mooneye.tres,,common -2905,loach_weather,implemented,inactive,missing icon,res://fish/species/loach_weather/loach_weather.tres,,common -3001,goldfish_bubbleeye,implemented,active,complete,res://fish/species/goldfish_bubbleeye/goldfish_bubbleeye.tres,res://fish/species/goldfish_bubbleeye/fish_goldfish_bubbleeye.png,common -3002,goldfish,implemented,active,complete,res://fish/species/goldfish/goldfish.tres,res://fish/species/goldfish/fish_goldfish.png,common -3003,koi,implemented,inactive,missing icon,res://fish/species/koi/koi.tres,,common -3101,crappie_black,implemented,inactive,missing icon,res://fish/species/crappie_black/crappie_black.tres,,common -3102,bluegill,implemented,active,complete,res://fish/species/bluegill/bluegill.tres,res://fish/species/bluegill/fish_bluegill.png,common -3103,green_sunfish,implemented,inactive,missing icon,res://fish/species/green_sunfish/green_sunfish.tres,,common -3104,pumpkinseed,implemented,inactive,missing icon,res://fish/species/pumpkinseed/pumpkinseed.tres,,common -3105,redear_sunfish,implemented,inactive,missing icon,res://fish/species/redear_sunfish/redear_sunfish.tres,,common -3106,warmouth,implemented,inactive,missing icon,res://fish/species/warmouth/warmouth.tres,,common -3107,crappie_white,implemented,inactive,missing icon,res://fish/species/crappie_white/crappie_white.tres,,common -3201,yellow_perch,implemented,inactive,missing icon,res://fish/species/yellow_perch/yellow_perch.tres,,common -3301,pickerel_chain,implemented,inactive,missing icon,res://fish/species/pickerel_chain/pickerel_chain.tres,,common -3302,pickerel_grass,implemented,inactive,missing icon,res://fish/species/pickerel_grass/pickerel_grass.tres,,common -3303,pike_northern,implemented,inactive,missing icon,res://fish/species/pike_northern/pike_northern.tres,,common -3304,sauger,implemented,active,complete,res://fish/species/sauger/sauger.tres,res://fish/species/sauger/fish_sauger.png,common -3305,saugeye,implemented,active,complete,res://fish/species/saugeye/saugeye.tres,res://fish/species/saugeye/fish_saugeye.png,common -3306,walleye,implemented,active,complete,res://fish/species/walleye/walleye.tres,res://fish/species/walleye/fish_walleye.png,common -3401,goby_round,implemented,active,complete,res://fish/species/goby_round/goby_round.tres,res://fish/species/goby_round/fish_goby_round.png,common -3501,jelly_crystal,implemented,inactive,missing icon,res://fish/species/jelly_crystal/jelly_crystal.tres,,common -3502,jelly_lions_mane,implemented,inactive,missing icon,res://fish/species/jelly_lions_mane/jelly_lions_mane.tres,,common -3503,jelly_moon,implemented,inactive,missing icon,res://fish/species/jelly_moon/jelly_moon.tres,,common -3504,jelly_pacific_sea_nettle,implemented,inactive,missing icon,res://fish/species/jelly_pacific_sea_nettle/jelly_pacific_sea_nettle.tres,,common -3505,jelly_sea_wasp,implemented,inactive,missing icon,res://fish/species/jelly_sea_wasp/jelly_sea_wasp.tres,,common -3601,pompano_african,implemented,inactive,missing icon,res://fish/species/pompano_african/pompano_african.tres,,common -3602,cobia,implemented,inactive,missing icon,res://fish/species/cobia/cobia.tres,,common -3603,trevally_giant,implemented,inactive,missing icon,res://fish/species/trevally_giant/trevally_giant.tres,,common -3604,amberjack_greater,implemented,inactive,missing icon,res://fish/species/amberjack_greater/amberjack_greater.tres,,common -3605,amberjack_lesser,implemented,inactive,missing icon,res://fish/species/amberjack_lesser/amberjack_lesser.tres,,common -3701,halibut_atlantic,implemented,inactive,missing icon,res://fish/species/halibut_atlantic/halibut_atlantic.tres,,common -3702,halibut_pacific,implemented,inactive,missing icon,res://fish/species/halibut_pacific/halibut_pacific.tres,,common -3703,turbot,implemented,inactive,missing icon,res://fish/species/turbot/turbot.tres,,common -3801,lobster_american,implemented,inactive,missing icon,res://fish/species/lobster_american/lobster_american.tres,,common -3802,krill_antarctic,implemented,inactive,missing icon,res://fish/species/krill_antarctic/krill_antarctic.tres,,common -3803,lobster_caribbean_spiny,implemented,inactive,missing icon,res://fish/species/lobster_caribbean_spiny/lobster_caribbean_spiny.tres,,common -3804,shrimp_peacock_mantis,implemented,inactive,missing icon,res://fish/species/shrimp_peacock_mantis/shrimp_peacock_mantis.tres,,common -3805,shrimp_skunk_cleaner,implemented,inactive,missing icon,res://fish/species/shrimp_skunk_cleaner/shrimp_skunk_cleaner.tres,,common -3901,crab_ghost,implemented,inactive,missing icon,res://fish/species/crab_ghost/crab_ghost.tres,,common -3902,crab_blue,implemented,inactive,missing icon,res://fish/species/crab_blue/crab_blue.tres,,common -3903,crab_dungeness,implemented,inactive,missing icon,res://fish/species/crab_dungeness/crab_dungeness.tres,,common -3904,crab_japanese_spider,implemented,inactive,missing icon,res://fish/species/crab_japanese_spider/crab_japanese_spider.tres,,common -3905,crab_red_king,implemented,inactive,missing icon,res://fish/species/crab_red_king/crab_red_king.tres,,common -4001,eel_american,implemented,inactive,missing icon,res://fish/species/eel_american/eel_american.tres,,common -4002,eel_european,implemented,inactive,missing icon,res://fish/species/eel_european/eel_european.tres,,common -4101,smelt_rainbow,implemented,inactive,missing icon,res://fish/species/smelt_rainbow/smelt_rainbow.tres,,common -4201,smelt_eulachon,implemented,inactive,missing icon,res://fish/species/smelt_eulachon/smelt_eulachon.tres,,common -4301,sturgeon_white,implemented,inactive,missing icon,res://fish/species/sturgeon_white/sturgeon_white.tres,,common -4401,salmon_atlantic,implemented,active,complete,res://fish/species/salmon_atlantic/salmon_atlantic.tres,res://fish/species/salmon_atlantic/fish_salmon_atlantic.png,bass -4402,salmon_chum,implemented,active,complete,res://fish/species/salmon_chum/salmon_chum.tres,res://fish/species/salmon_chum/fish_salmon_chum.png,bass -4403,salmon_coho,implemented,active,complete,res://fish/species/salmon_coho/salmon_coho.tres,res://fish/species/salmon_coho/fish_salmon_coho.png,bass -4404,salmon_pink,implemented,active,complete,res://fish/species/salmon_pink/salmon_pink.tres,res://fish/species/salmon_pink/fish_salmon_pink.png,bass -4405,salmon_sockeye,implemented,active,complete,res://fish/species/salmon_sockeye/salmon_sockeye.tres,res://fish/species/salmon_sockeye/fish_salmon_sockeye.png,bass -4501,trout_steelhead,implemented,active,complete,res://fish/species/trout_steelhead/trout_steelhead.tres,res://fish/species/trout_steelhead/fish_trout_steelhead.png,common -4601,marlin_black,implemented,active,complete,res://fish/species/marlin_black/marlin_black.tres,res://fish/species/marlin_black/fish_marlin_black.png,common -4602,marlin_blue,implemented,active,complete,res://fish/species/marlin_blue/marlin_blue.tres,res://fish/species/marlin_blue/fish_marlin_blue.png,common -4603,sailfish,implemented,active,complete,res://fish/species/sailfish/sailfish.tres,res://fish/species/sailfish/fish_sailfish.png,common -4604,swordfish,implemented,active,complete,res://fish/species/swordfish/swordfish.tres,res://fish/species/swordfish/fish_swordfish.png,common -4605,marlin_white,implemented,active,complete,res://fish/species/marlin_white/marlin_white.tres,res://fish/species/marlin_white/fish_marlin_white.png,common -4701,mahi_mahi,implemented,inactive,missing icon,res://fish/species/mahi_mahi/mahi_mahi.tres,,common -4702,opah,implemented,inactive,missing icon,res://fish/species/opah/opah.tres,,common -4703,wahoo,implemented,inactive,missing icon,res://fish/species/wahoo/wahoo.tres,,common -4801,tuna_albacore,implemented,active,complete,res://fish/species/tuna_albacore/tuna_albacore.tres,res://fish/species/tuna_albacore/fish_tuna_albacore.png,bass -4802,tuna_bigeye,implemented,active,complete,res://fish/species/tuna_bigeye/tuna_bigeye.tres,res://fish/species/tuna_bigeye/fish_tuna_bigeye.png,bass -4803,tuna_bluefin,implemented,active,complete,res://fish/species/tuna_bluefin/tuna_bluefin.tres,res://fish/species/tuna_bluefin/fish_tuna_bluefin.png,bass -4804,tuna_skipjack,implemented,active,complete,res://fish/species/tuna_skipjack/tuna_skipjack.tres,res://fish/species/tuna_skipjack/fish_tuna_skipjack.png,bass -4805,tuna_yellowfin,implemented,active,complete,res://fish/species/tuna_yellowfin/tuna_yellowfin.tres,res://fish/species/tuna_yellowfin/fish_tuna_yellowfin.png,bass -4901,octopus_common,implemented,inactive,missing icon,res://fish/species/octopus_common/octopus_common.tres,,common -4902,octopus_day,implemented,inactive,missing icon,res://fish/species/octopus_day/octopus_day.tres,,common -4903,octopus_giant_pacific,implemented,inactive,missing icon,res://fish/species/octopus_giant_pacific/octopus_giant_pacific.tres,,common -4904,octopus_greater_blue_ringed,implemented,inactive,missing icon,res://fish/species/octopus_greater_blue_ringed/octopus_greater_blue_ringed.tres,,common -5001,sunfish,implemented,active,complete,res://fish/species/sunfish/sunfish.tres,res://fish/species/sunfish/fish_sunfish.png,common -5101,skate_barndoor,implemented,inactive,missing icon,res://fish/species/skate_barndoor/skate_barndoor.tres,,common -5102,manta_ray_giant,implemented,inactive,missing icon,res://fish/species/manta_ray_giant/manta_ray_giant.tres,,common -5103,sawfish_largetooth,implemented,inactive,missing icon,res://fish/species/sawfish_largetooth/sawfish_largetooth.tres,,common -5104,stingray_ocellate_river,implemented,inactive,missing icon,res://fish/species/stingray_ocellate_river/stingray_ocellate_river.tres,,common -5105,stingray_southern,implemented,inactive,missing icon,res://fish/species/stingray_southern/stingray_southern.tres,,common -5201,lionfish_red,implemented,inactive,missing icon,res://fish/species/lionfish_red/lionfish_red.tres,,common -5202,scorpionfish_red,implemented,inactive,missing icon,res://fish/species/scorpionfish_red/scorpionfish_red.tres,,common -5301,moray_green,implemented,inactive,missing icon,res://fish/species/moray_green/moray_green.tres,,common -5401,flounder_peacock,implemented,inactive,missing icon,res://fish/species/flounder_peacock/flounder_peacock.tres,,common -5501,surgeonfish_blue,implemented,inactive,missing icon,res://fish/species/surgeonfish_blue/surgeonfish_blue.tres,,common -5502,parrotfish_rainbow,implemented,inactive,missing icon,res://fish/species/parrotfish_rainbow/parrotfish_rainbow.tres,,common -5503,parrotfish_stoplight,implemented,inactive,missing icon,res://fish/species/parrotfish_stoplight/parrotfish_stoplight.tres,,common -5504,tang_yellow,implemented,inactive,missing icon,res://fish/species/tang_yellow/tang_yellow.tres,,common -5601,trumpetfish_atlantic,implemented,inactive,missing icon,res://fish/species/trumpetfish_atlantic/trumpetfish_atlantic.tres,,common -5602,triggerfish_gray,implemented,inactive,missing icon,res://fish/species/triggerfish_gray/triggerfish_gray.tres,,common -5603,pufferfish_guineafowl,implemented,inactive,missing icon,res://fish/species/pufferfish_guineafowl/pufferfish_guineafowl.tres,,common -5604,cowfish_longhorn,implemented,inactive,missing icon,res://fish/species/cowfish_longhorn/cowfish_longhorn.tres,,common -5605,triggerfish_queen,implemented,inactive,missing icon,res://fish/species/triggerfish_queen/triggerfish_queen.tres,,common -5606,cornetfish_red,implemented,inactive,missing icon,res://fish/species/cornetfish_red/cornetfish_red.tres,,common -5607,porcupinefish_spotted,implemented,inactive,missing icon,res://fish/species/porcupinefish_spotted/porcupinefish_spotted.tres,,common -5608,boxfish_yellow,implemented,inactive,missing icon,res://fish/species/boxfish_yellow/boxfish_yellow.tres,,common -5701,butterflyfish_copperband,implemented,inactive,missing icon,res://fish/species/butterflyfish_copperband/butterflyfish_copperband.tres,,common -5702,clownfish_ocellaris,implemented,inactive,missing icon,res://fish/species/clownfish_ocellaris/clownfish_ocellaris.tres,,common -5703,angelfish_queen,implemented,inactive,missing icon,res://fish/species/angelfish_queen/angelfish_queen.tres,,common -5801,grouper_atlantic_goliath,implemented,inactive,missing icon,res://fish/species/grouper_atlantic_goliath/grouper_atlantic_goliath.tres,,common -5802,trevally_bluefin,implemented,inactive,missing icon,res://fish/species/trevally_bluefin/trevally_bluefin.tres,,common -5803,grouper_giant,implemented,inactive,missing icon,res://fish/species/grouper_giant/grouper_giant.tres,,common -5804,barracuda_great,implemented,inactive,missing icon,res://fish/species/barracuda_great/barracuda_great.tres,,common -5805,grouper_gulf,implemented,active,complete,res://fish/species/grouper_gulf/grouper_gulf.tres,res://fish/species/grouper_gulf/fish_grouper_gulf.png,common -5806,grouper_nassau,implemented,inactive,missing icon,res://fish/species/grouper_nassau/grouper_nassau.tres,,common -5807,grouper_red,implemented,active,complete,res://fish/species/grouper_red/grouper_red.tres,res://fish/species/grouper_red/fish_grouper_red.png,common -5901,chromis_blue_green,implemented,inactive,missing icon,res://fish/species/chromis_blue_green/chromis_blue_green.tres,,common -5902,grunt_bluestriped,implemented,inactive,missing icon,res://fish/species/grunt_bluestriped/grunt_bluestriped.tres,,common -5903,grunt_french,implemented,inactive,missing icon,res://fish/species/grunt_french/grunt_french.tres,,common -5904,damselfish_sergeant_major,implemented,inactive,missing icon,res://fish/species/damselfish_sergeant_major/damselfish_sergeant_major.tres,,common -6001,snapper_lane,implemented,active,complete,res://fish/species/snapper_lane/snapper_lane.tres,res://fish/species/snapper_lane/fish_snapper_lane.png,common -6002,snapper_mangrove,implemented,active,complete,res://fish/species/snapper_mangrove/snapper_mangrove.tres,res://fish/species/snapper_mangrove/fish_snapper_mangrove.png,common -6003,snapper_mutton,implemented,active,complete,res://fish/species/snapper_mutton/snapper_mutton.tres,res://fish/species/snapper_mutton/fish_snapper_mutton.png,common -6004,snapper_red,implemented,active,complete,res://fish/species/snapper_red/snapper_red.tres,res://fish/species/snapper_red/fish_snapper_red.png,common -6101,wrasse_ballan,implemented,inactive,missing icon,res://fish/species/wrasse_ballan/wrasse_ballan.tres,,common -6102,wrasse_cleaner,implemented,inactive,missing icon,res://fish/species/wrasse_cleaner/wrasse_cleaner.tres,,common -6103,hogfish,implemented,inactive,missing icon,res://fish/species/hogfish/hogfish.tres,,common -6201,turtle_green,implemented,inactive,missing icon,res://fish/species/turtle_green/turtle_green.tres,,common -6202,turtle_hawksbill,implemented,inactive,missing icon,res://fish/species/turtle_hawksbill/turtle_hawksbill.tres,,common -6203,turtle_leatherback,implemented,inactive,missing icon,res://fish/species/turtle_leatherback/turtle_leatherback.tres,,common -6204,turtle_loggerhead,implemented,inactive,missing icon,res://fish/species/turtle_loggerhead/turtle_loggerhead.tres,,common -6301,seadragon_leafy,implemented,inactive,missing icon,res://fish/species/seadragon_leafy/seadragon_leafy.tres,,common -6302,seadragon_weedy,implemented,inactive,missing icon,res://fish/species/seadragon_weedy/seadragon_weedy.tres,,common -6401,oyster_black_lip_pearl,implemented,inactive,missing icon,res://fish/species/oyster_black_lip_pearl/oyster_black_lip_pearl.tres,,common -6402,clam_giant,implemented,inactive,missing icon,res://fish/species/clam_giant/clam_giant.tres,,common -6403,clam_geoduck,implemented,inactive,missing icon,res://fish/species/clam_geoduck/clam_geoduck.tres,,common -6404,conch_queen,implemented,inactive,missing icon,res://fish/species/conch_queen/conch_queen.tres,,common -6405,abalone_red,implemented,inactive,missing icon,res://fish/species/abalone_red/abalone_red.tres,,common -6501,squid_bigfin_reef,implemented,inactive,missing icon,res://fish/species/squid_bigfin_reef/squid_bigfin_reef.tres,,common -6502,squid_colossal,implemented,inactive,missing icon,res://fish/species/squid_colossal/squid_colossal.tres,,common -6503,squid_giant,implemented,inactive,missing icon,res://fish/species/squid_giant/squid_giant.tres,,common -6504,squid_humboldt,implemented,inactive,missing icon,res://fish/species/squid_humboldt/squid_humboldt.tres,,common -6601,halfbeak_ballyhoo,implemented,inactive,missing icon,res://fish/species/halfbeak_ballyhoo/halfbeak_ballyhoo.tres,,common -6602,needlefish_hound,implemented,inactive,missing icon,res://fish/species/needlefish_hound/needlefish_hound.tres,,common -6603,flyingfish_tropical,implemented,inactive,missing icon,res://fish/species/flyingfish_tropical/flyingfish_tropical.tres,,common -6701,bass,implemented,active,complete,res://fish/species/bass/bass.tres,res://fish/species/bass/fish_bass_striped.png,bass -6801,croaker_atlantic,implemented,inactive,missing icon,res://fish/species/croaker_atlantic/croaker_atlantic.tres,,common -6802,black_drum,implemented,inactive,missing icon,res://fish/species/black_drum/black_drum.tres,,common -6803,red_drum,implemented,inactive,missing icon,res://fish/species/red_drum/red_drum.tres,,common -6804,mullet_striped,implemented,inactive,missing icon,res://fish/species/mullet_striped/mullet_striped.tres,,common -6805,weakfish,implemented,inactive,missing icon,res://fish/species/weakfish/weakfish.tres,,common -6806,white_perch,implemented,inactive,missing icon,res://fish/species/white_perch/white_perch.tres,,common -6807,croaker_yellowfin,implemented,inactive,missing icon,res://fish/species/croaker_yellowfin/croaker_yellowfin.tres,,common -6901,rockfish_black,implemented,inactive,missing icon,res://fish/species/rockfish_black/rockfish_black.tres,,common -6902,sea_bass_black,implemented,inactive,missing icon,res://fish/species/sea_bass_black/sea_bass_black.tres,,common -6903,rockfish_canary,implemented,inactive,missing icon,res://fish/species/rockfish_canary/rockfish_canary.tres,,common -6904,porgy_scup,implemented,inactive,missing icon,res://fish/species/porgy_scup/porgy_scup.tres,,common -6905,sheepshead,implemented,inactive,missing icon,res://fish/species/sheepshead/sheepshead.tres,,common -6906,tautog,implemented,inactive,missing icon,res://fish/species/tautog/tautog.tres,,common -6907,rockfish_yelloweye,implemented,inactive,missing icon,res://fish/species/rockfish_yelloweye/rockfish_yelloweye.tres,,common -7001,lingcod,implemented,inactive,missing icon,res://fish/species/lingcod/lingcod.tres,,common -7101,milkfish,implemented,inactive,missing icon,res://fish/species/milkfish/milkfish.tres,,common -7201,roosterfish,implemented,inactive,missing icon,res://fish/species/roosterfish/roosterfish.tres,,common -7301,tarpon_atlantic,implemented,inactive,missing icon,res://fish/species/tarpon_atlantic/tarpon_atlantic.tres,,common -7302,barramundi,implemented,inactive,missing icon,res://fish/species/barramundi/barramundi.tres,,common -7303,snook_common,implemented,inactive,missing icon,res://fish/species/snook_common/snook_common.tres,,common -7401,bonefish,implemented,inactive,missing icon,res://fish/species/bonefish/bonefish.tres,,common -7402,pompano_florida,implemented,inactive,missing icon,res://fish/species/pompano_florida/pompano_florida.tres,,common -7403,ladyfish,implemented,inactive,missing icon,res://fish/species/ladyfish/ladyfish.tres,,common -7404,permit,implemented,inactive,missing icon,res://fish/species/permit/permit.tres,,common -7501,knifefish_clown,implemented,inactive,missing icon,res://fish/species/knifefish_clown/knifefish_clown.tres,,common -7502,loach_clown,implemented,inactive,missing icon,res://fish/species/loach_clown/loach_clown.tres,,common -7503,discus,implemented,inactive,missing icon,res://fish/species/discus/discus.tres,,common -7504,angelfish_freshwater,implemented,inactive,missing icon,res://fish/species/angelfish_freshwater/angelfish_freshwater.tres,,common -7505,gourami_giant,implemented,inactive,missing icon,res://fish/species/gourami_giant/gourami_giant.tres,,common -7506,tilapia_nile,implemented,inactive,missing icon,res://fish/species/tilapia_nile/tilapia_nile.tres,,common -7507,oscar,implemented,inactive,missing icon,res://fish/species/oscar/oscar.tres,,common -7508,betta_siamese,implemented,inactive,missing icon,res://fish/species/betta_siamese/betta_siamese.tres,,common -7509,tambaqui,implemented,inactive,missing icon,res://fish/species/tambaqui/tambaqui.tres,,common -7510,catfish_walking,implemented,inactive,missing icon,res://fish/species/catfish_walking/catfish_walking.tres,,common -7601,snakehead_giant,implemented,inactive,missing icon,res://fish/species/snakehead_giant/snakehead_giant.tres,,common -7602,dorado_golden,implemented,inactive,missing icon,res://fish/species/dorado_golden/dorado_golden.tres,,common -7603,mahseer_golden,implemented,inactive,missing icon,res://fish/species/mahseer_golden/mahseer_golden.tres,,common -7604,peacock_bass,implemented,inactive,missing icon,res://fish/species/peacock_bass/peacock_bass.tres,,common -7605,piranha_red_bellied,implemented,inactive,missing icon,res://fish/species/piranha_red_bellied/piranha_red_bellied.tres,,common -7606,arowana_silver,implemented,inactive,missing icon,res://fish/species/arowana_silver/arowana_silver.tres,,common -7701,whale_blue,implemented,inactive,missing icon,res://fish/species/whale_blue/whale_blue.tres,,common -7702,dolphin_bottlenose,implemented,inactive,missing icon,res://fish/species/dolphin_bottlenose/dolphin_bottlenose.tres,,common -7703,whale_humpback,implemented,inactive,missing icon,res://fish/species/whale_humpback/whale_humpback.tres,,common -7704,whale_killer,implemented,inactive,missing icon,res://fish/species/whale_killer/whale_killer.tres,,common -7705,whale_sperm,implemented,inactive,missing icon,res://fish/species/whale_sperm/whale_sperm.tres,,common diff --git a/economy/art_shop_stock.gd b/economy/art_shop_stock.gd index ff84d09..acc5382 100644 --- a/economy/art_shop_stock.gd +++ b/economy/art_shop_stock.gd @@ -49,7 +49,7 @@ static func get_display_name(product_id: StringName) -> String: static func get_description(product_id: StringName) -> String: if product_id == ART_KIT_ITEM_ID: - return "Select the Art Kit in the Hotbar to paint." + return "Press P in the game world to paint!" var color_id: StringName = PlayerArtUnlocks.color_id_for_product(product_id) if not color_id.is_empty(): return "Unlocks this marker color in the Paint UI." diff --git a/economy/fishing_shop_stock.gd b/economy/fishing_shop_stock.gd index 4f5fda4..87795ad 100644 --- a/economy/fishing_shop_stock.gd +++ b/economy/fishing_shop_stock.gd @@ -3,12 +3,10 @@ extends RefCounted const ItemCatalogType = preload("res://items/item_catalog.gd") const ItemDataType = preload("res://items/item_data.gd") -const FishingRodDataType = preload("res://items/fishing_rod_data.gd") const PlayerBagType = preload("res://inventory/player_bag.gd") const PlayerWalletType = preload("res://economy/player_wallet.gd") const WORM_MAX_STACK: int = 10 const FISH_FINDER_ID: StringName = &"fish_finder" -const MAGNET_ID: StringName = &"magnet" const BATTERIES_ID: StringName = &"batteries" const ITEM_PRICES: Dictionary[StringName, int] = { @@ -24,7 +22,6 @@ const ITEM_PRICES: Dictionary[StringName, int] = { &"energy_drink": 35, &"snack": 30, FISH_FINDER_ID: 500, - MAGNET_ID: 250, BATTERIES_ID: 15, } const BAIT_UNLOCK_PRICES: Dictionary[StringName, int] = { @@ -45,7 +42,6 @@ const ITEM_ORDER: Array[StringName] = [ &"luminous_roe", &"the_standby", FISH_FINDER_ID, - MAGNET_ID, &"coffee", &"energy_drink", &"snack", @@ -61,25 +57,6 @@ static func get_stock_item_ids() -> Array[StringName]: return ITEM_ORDER.duplicate() -static func get_rod_stock( - catalog: ItemCatalogType, -) -> Array[FishingRodDataType]: - var rods: Array[FishingRodDataType] = [] - if catalog == null: - return rods - for item: ItemDataType in catalog.get_available_items(): - var rod := item as FishingRodDataType - if rod != null and rod.is_shop_available(): - rods.append(rod) - rods.sort_custom( - func(left: FishingRodDataType, right: FishingRodDataType) -> bool: - if left.shop_order == right.shop_order: - return str(left.item_id) < str(right.item_id) - return left.shop_order < right.shop_order - ) - return rods - - static func get_unlock_price(item_id: StringName) -> int: return BAIT_UNLOCK_PRICES.get(item_id, -1) @@ -104,12 +81,7 @@ static func is_permanent_unlock( ) -> bool: return ( item != null - and ( - item.is_lure() - or item_id == FISH_FINDER_ID - or item_id == MAGNET_ID - or item is FishingRodDataType - ) + and (item.is_lure() or item_id == FISH_FINDER_ID) ) @@ -139,8 +111,6 @@ static func purchase_one( if wallet == null or bag == null or catalog == null: return false var item: ItemDataType = catalog.get_item_by_id(item_id) - if item == null or not item.is_available(): - return false var bait_topoff: bool = is_bait_topoff(item_id) var permanent_unlock: bool = is_permanent_unlock(item_id, item) var quantity: int = get_purchase_quantity( @@ -148,20 +118,15 @@ static func purchase_one( bag.get_quantity(item_id), item.max_stack if item != null else WORM_MAX_STACK, ) - var rod := item as FishingRodDataType - var price: int = ( - rod.shop_price - if rod != null - else get_purchase_cost( - item_id, - quantity, - bag.is_bait_unlocked(item_id), - ) + var price: int = get_purchase_cost( + item_id, + quantity, + bag.is_bait_unlocked(item_id), ) if ( price < 0 - or not item.is_available() - or (rod != null and not rod.is_shop_available()) + or item == null + or not item.is_valid() or ( item.category != ItemDataType.Category.CONSUMABLE and not bait_topoff diff --git a/export_presets.cfg b/export_presets.cfg index bbcdec2..cb2bb67 100644 --- a/export_presets.cfg +++ b/export_presets.cfg @@ -9,7 +9,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.7.1-alpha/windows-x86_64/NETfishing.exe" +export_path="builds/v0.6.8-alpha/windows-x86_64/NETfishing.exe" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -35,11 +35,11 @@ application/modify_resources=true application/icon="res://art/exported/system_icons/netfishing.ico" application/console_wrapper_icon="" application/icon_interpolation=4 -application/file_version="0.7.1.0" -application/product_version="0.7.1.0" +application/file_version="0.6.8.0" +application/product_version="0.6.8.0" application/company_name="Woofmeow" application/product_name="NETfishing" -application/file_description="NETfishing v0.7.1-alpha" +application/file_description="NETfishing v0.6.8-alpha" application/copyright="Copyright © 2026 Woofmeow" application/trademarks="NETfishing and Woofmeow branding is reserved; see TRADEMARKS.md" application/export_angle=0 @@ -62,7 +62,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.7.1-alpha/linux-arm64/NETfishing.arm64" +export_path="builds/v0.6.8-alpha/linux-arm64/NETfishing.arm64" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -92,7 +92,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.7.1-alpha/macos/NETfishing.zip" +export_path="builds/v0.6.8-alpha/macos/NETfishing.zip" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -108,8 +108,8 @@ custom_template/release="" application/bundle_identifier="io.woofmeow.netfishing" application/icon="res://art/exported/system_icons/netfishing_1024.png" application/icon_interpolation=0 -application/short_version="0.7.1" -application/version="0.7.1" +application/short_version="0.6.8" +application/version="0.6.8" application/architecture="universal" codesign/enable=false notarization/enable=false @@ -125,7 +125,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*,tests/*" -export_path="builds/v0.7.1-alpha/server-linux-x86_64/NETfishingServer.x86_64" +export_path="builds/v0.6.8-alpha/server-linux-x86_64/NETfishingServer.x86_64" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -155,7 +155,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.7.1-alpha/android/NETfishing.apk" +export_path="builds/v0.6.8-alpha/android/NETfishing.apk" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -176,8 +176,8 @@ architectures/armeabi-v7a=false architectures/arm64-v8a=true architectures/x86=false architectures/x86_64=false -version/code=70100 -version/name="v0.7.1-alpha" +version/code=60800 +version/name="v0.6.8-alpha" package/unique_name="io.woofmeow.netfishing" package/name="NETfishing" package/signed=true @@ -214,7 +214,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.7.1-alpha/linux-x86_64/NETfishing.x86_64" +export_path="builds/v0.6.8-alpha/linux-x86_64/NETfishing.x86_64" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" diff --git a/fish/fish_data.gd b/fish/fish_data.gd index 60ce03e..2bb99af 100644 --- a/fish/fish_data.gd +++ b/fish/fish_data.gd @@ -26,21 +26,14 @@ enum Rarity { @export var id: StringName @export var display_name: String -@export_category("Developer Catalog") -## Disabled species remain resolvable for saves but cannot be newly selected. -@export var active: bool = true -@export_range(1, 999999, 1) var catalog_number: int = 1 -@export var collection_group: StringName -@export_multiline var logbook_fact: String -@export_category("Fishing") @export_flags("Fresh Water", "Salt Water") var allowed_water_types: int = WaterType.ALL_FISHABLE_MASK @export var rarity: Rarity = Rarity.COMMON @export_range(0.0, 1000.0, 0.01) var base_catch_weight: float = 1.0 @export var catch_profile: CatchDifficultyProfileType @export var availability: FishAvailabilityType -@export_range(0.001, 500000.0, 0.001) var weight_min_lb: float = 0.5 -@export_range(0.001, 500000.0, 0.001) var weight_max_lb: float = 1.0 +@export_range(0.01, 1000.0, 0.01) var weight_min_lb: float = 0.5 +@export_range(0.01, 1000.0, 0.01) var weight_max_lb: float = 1.0 # Retained in resource files for compatibility with existing authored data; # runtime presentation is derived from absolute weight below. @export_range(0.01, 20.0, 0.01) var display_scale_min: float = 0.8 @@ -54,8 +47,7 @@ var allowed_water_types: int = WaterType.ALL_FISHABLE_MASK func is_selectable() -> bool: return ( - active - and not id.is_empty() + not id.is_empty() and base_catch_weight > 0.0 and catch_profile != null and weight_min_lb > 0.0 @@ -82,7 +74,7 @@ func get_primary_water_type() -> WaterType.Type: func get_minimum_weight() -> float: - return maxf(weight_min_lb, 0.001) + return maxf(weight_min_lb, 0.01) func get_maximum_weight() -> float: diff --git a/fish/fish_selector.gd b/fish/fish_selector.gd index 89bc3ca..506a906 100644 --- a/fish/fish_selector.gd +++ b/fish/fish_selector.gd @@ -7,12 +7,10 @@ const FishDataType = preload("res://fish/fish_data.gd") const FishPoolType = preload("res://fish/fish_pool.gd") const FishQualityType = preload("res://fish/fish_quality.gd") const FishingContextType = preload("res://fishing/fishing_context.gd") -const FishingRodDataType = preload("res://items/fishing_rod_data.gd") var undiscovered_weight_multiplier: float = 1.5 var rarity_weight_multipliers: Array[float] = [] var quality_weight_multipliers: Array[float] = [] -var active_rod: FishingRodDataType var use_deterministic_test_seed: bool = false var deterministic_test_seed: int = 24680 var selection_seed: int = 0 @@ -57,16 +55,8 @@ func select_fish( # quality and rarity bands globally; required tags remain authoritative. if not collection_log.has_discovered(fish.id): final_weight *= maxf(undiscovered_weight_multiplier, 0.0) - if active_rod != null: - final_weight *= maxf( - active_rod.undiscovered_weight_multiplier, - 0.0, - ) if fish.rarity >= 0 and fish.rarity < rarity_weight_multipliers.size(): final_weight *= maxf(rarity_weight_multipliers[fish.rarity], 0.0) - if active_rod != null: - final_weight *= active_rod.get_rarity_multiplier(fish.rarity) - final_weight *= active_rod.get_affinity_multiplier(fish, context) if final_weight <= 0.0: continue all_fish.append(fish) @@ -97,8 +87,6 @@ func _roll_rarity(context: FishingContextType) -> int: for index: int in range(weights.size()): if index < rarity_weight_multipliers.size(): weights[index] *= maxf(rarity_weight_multipliers[index], 0.0) - if active_rod != null: - weights[index] *= active_rod.get_rarity_multiplier(index) var total: float = 0.0 for weight: float in weights: total += weight @@ -119,13 +107,9 @@ func create_catch(fish: FishDataType, bait_tags: Array[StringName] = []) -> Fish caught_fish.fish = fish caught_fish.fish_id = fish.id caught_fish.ensure_identity() - var weight_roll: float = _biased_unit_roll( - active_rod.weight_roll_bias if active_rod != null else 0.0 - ) - caught_fish.weight_lb = lerpf( + caught_fish.weight_lb = _rng.randf_range( fish.get_minimum_weight(), - fish.get_maximum_weight(), - weight_roll, + fish.get_maximum_weight() ) caught_fish.display_scale = fish.get_display_scale_for_weight( caught_fish.weight_lb @@ -134,11 +118,6 @@ func create_catch(fish: FishDataType, bait_tags: Array[StringName] = []) -> Fish var quality_multipliers: Array[float] = FishQualityType.roll_weights_for_bait(effective_bait) for quality: int in range(mini(quality_multipliers.size(), quality_weight_multipliers.size())): quality_multipliers[quality] *= maxf(quality_weight_multipliers[quality], 0.0) - for quality: int in range(quality_multipliers.size()): - if active_rod != null: - quality_multipliers[quality] *= active_rod.get_quality_multiplier( - quality - ) caught_fish.quality = FishQualityType.roll( _rng, quality_multipliers, @@ -148,14 +127,3 @@ func create_catch(fish: FishDataType, bait_tags: Array[StringName] = []) -> Fish caught_fish.quality, ) return caught_fish - - -func _biased_unit_roll(bias: float) -> float: - var roll: float = _rng.randf() - var safe_bias: float = clampf(bias, -0.5, 0.5) - if is_zero_approx(safe_bias): - return roll - var exponent: float = 1.0 / (1.0 + absf(safe_bias) * 2.0) - if safe_bias > 0.0: - return pow(roll, exponent) - return 1.0 - pow(1.0 - roll, exponent) diff --git a/fish/pools/fish_catalog.tres b/fish/pools/fish_catalog.tres index 666dce2..73609c8 100644 --- a/fish/pools/fish_catalog.tres +++ b/fish/pools/fish_catalog.tres @@ -1,4 +1,4 @@ -[gd_resource type="Resource" load_steps=315 format=3] +[gd_resource type="Resource" load_steps=55 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"] @@ -54,267 +54,7 @@ [ext_resource type="Resource" path="res://fish/species/trout_rainbow/trout_rainbow.tres" id="52_trout_rainbow"] [ext_resource type="Resource" path="res://fish/species/trout_steelhead/trout_steelhead.tres" id="53_trout_steelhead"] [ext_resource type="Resource" path="res://fish/species/walleye/walleye.tres" id="54_walleye"] -[ext_resource type="Resource" path="res://fish/species/bowfin/bowfin.tres" id="55_bowfin"] -[ext_resource type="Resource" path="res://fish/species/sturgeon_lake/sturgeon_lake.tres" id="56_sturgeon_lake"] -[ext_resource type="Resource" path="res://fish/species/gar_longnose/gar_longnose.tres" id="57_gar_longnose"] -[ext_resource type="Resource" path="res://fish/species/paddlefish/paddlefish.tres" id="58_paddlefish"] -[ext_resource type="Resource" path="res://fish/species/sturgeon_shovelnose/sturgeon_shovelnose.tres" id="59_sturgeon_shovelnose"] -[ext_resource type="Resource" path="res://fish/species/gar_spotted/gar_spotted.tres" id="60_gar_spotted"] -[ext_resource type="Resource" path="res://fish/species/lungfish_west_african/lungfish_west_african.tres" id="61_lungfish_west_african"] -[ext_resource type="Resource" path="res://fish/species/mudskipper_atlantic/mudskipper_atlantic.tres" id="62_mudskipper_atlantic"] -[ext_resource type="Resource" path="res://fish/species/foureyes_largescale/foureyes_largescale.tres" id="63_foureyes_largescale"] -[ext_resource type="Resource" path="res://fish/species/mullet_red/mullet_red.tres" id="64_mullet_red"] -[ext_resource type="Resource" path="res://fish/species/plaice_european/plaice_european.tres" id="65_plaice_european"] -[ext_resource type="Resource" path="res://fish/species/flounder_summer/flounder_summer.tres" id="66_flounder_summer"] -[ext_resource type="Resource" path="res://fish/species/flounder_winter/flounder_winter.tres" id="67_flounder_winter"] -[ext_resource type="Resource" path="res://fish/species/dugong/dugong.tres" id="68_dugong"] -[ext_resource type="Resource" path="res://fish/species/seal_harbor/seal_harbor.tres" id="69_seal_harbor"] -[ext_resource type="Resource" path="res://fish/species/sea_otter/sea_otter.tres" id="70_sea_otter"] -[ext_resource type="Resource" path="res://fish/species/walrus/walrus.tres" id="71_walrus"] -[ext_resource type="Resource" path="res://fish/species/manatee_west_indian/manatee_west_indian.tres" id="72_manatee_west_indian"] -[ext_resource type="Resource" path="res://fish/species/pipefish_bay/pipefish_bay.tres" id="73_pipefish_bay"] -[ext_resource type="Resource" path="res://fish/species/seahorse_lined/seahorse_lined.tres" id="74_seahorse_lined"] -[ext_resource type="Resource" path="res://fish/species/monkfish/monkfish.tres" id="75_monkfish"] -[ext_resource type="Resource" path="res://fish/species/tripletail/tripletail.tres" id="76_tripletail"] -[ext_resource type="Resource" path="res://fish/species/bluefish/bluefish.tres" id="77_bluefish"] -[ext_resource type="Resource" path="res://fish/species/jack_crevalle/jack_crevalle.tres" id="78_jack_crevalle"] -[ext_resource type="Resource" path="res://fish/species/queenfish_talang/queenfish_talang.tres" id="79_queenfish_talang"] -[ext_resource type="Resource" path="res://fish/species/sand_lance_american/sand_lance_american.tres" id="80_sand_lance_american"] -[ext_resource type="Resource" path="res://fish/species/menhaden_atlantic/menhaden_atlantic.tres" id="81_menhaden_atlantic"] -[ext_resource type="Resource" path="res://fish/species/sardine_european/sardine_european.tres" id="82_sardine_european"] -[ext_resource type="Resource" path="res://fish/species/sardine_pacific/sardine_pacific.tres" id="83_sardine_pacific"] -[ext_resource type="Resource" path="res://fish/species/shark_blacktip/shark_blacktip.tres" id="84_shark_blacktip"] -[ext_resource type="Resource" path="res://fish/species/shark_great_hammerhead/shark_great_hammerhead.tres" id="85_shark_great_hammerhead"] -[ext_resource type="Resource" path="res://fish/species/shark_great_white/shark_great_white.tres" id="86_shark_great_white"] -[ext_resource type="Resource" path="res://fish/species/shark_tiger/shark_tiger.tres" id="87_shark_tiger"] -[ext_resource type="Resource" path="res://fish/species/shark_whale/shark_whale.tres" id="88_shark_whale"] -[ext_resource type="Resource" path="res://fish/species/burbot/burbot.tres" id="89_burbot"] -[ext_resource type="Resource" path="res://fish/species/cisco/cisco.tres" id="90_cisco"] -[ext_resource type="Resource" path="res://fish/species/whitefish_lake/whitefish_lake.tres" id="91_whitefish_lake"] -[ext_resource type="Resource" path="res://fish/species/char_arctic/char_arctic.tres" id="92_char_arctic"] -[ext_resource type="Resource" path="res://fish/species/grayling_arctic/grayling_arctic.tres" id="93_grayling_arctic"] -[ext_resource type="Resource" path="res://fish/species/trout_brown/trout_brown.tres" id="94_trout_brown"] -[ext_resource type="Resource" path="res://fish/species/wolffish_atlantic/wolffish_atlantic.tres" id="95_wolffish_atlantic"] -[ext_resource type="Resource" path="res://fish/species/cusk/cusk.tres" id="96_cusk"] -[ext_resource type="Resource" path="res://fish/species/wolffish_spotted/wolffish_spotted.tres" id="97_wolffish_spotted"] -[ext_resource type="Resource" path="res://fish/species/herring_atlantic/herring_atlantic.tres" id="98_herring_atlantic"] -[ext_resource type="Resource" path="res://fish/species/capelin/capelin.tres" id="99_capelin"] -[ext_resource type="Resource" path="res://fish/species/sprat_european/sprat_european.tres" id="100_sprat_european"] -[ext_resource type="Resource" path="res://fish/species/herring_pacific/herring_pacific.tres" id="101_herring_pacific"] -[ext_resource type="Resource" path="res://fish/species/pollock_alaska/pollock_alaska.tres" id="102_pollock_alaska"] -[ext_resource type="Resource" path="res://fish/species/cod_atlantic/cod_atlantic.tres" id="103_cod_atlantic"] -[ext_resource type="Resource" path="res://fish/species/pollock_atlantic/pollock_atlantic.tres" id="104_pollock_atlantic"] -[ext_resource type="Resource" path="res://fish/species/sole_dover/sole_dover.tres" id="105_sole_dover"] -[ext_resource type="Resource" path="res://fish/species/haddock/haddock.tres" id="106_haddock"] -[ext_resource type="Resource" path="res://fish/species/cod_pacific/cod_pacific.tres" id="107_cod_pacific"] -[ext_resource type="Resource" path="res://fish/species/hake_pacific/hake_pacific.tres" id="108_hake_pacific"] -[ext_resource type="Resource" path="res://fish/species/hake_silver/hake_silver.tres" id="109_hake_silver"] -[ext_resource type="Resource" path="res://fish/species/nautilus_chambered/nautilus_chambered.tres" id="110_nautilus_chambered"] -[ext_resource type="Resource" path="res://fish/species/cuttlefish_common/cuttlefish_common.tres" id="111_cuttlefish_common"] -[ext_resource type="Resource" path="res://fish/species/cuttlefish_flamboyant/cuttlefish_flamboyant.tres" id="112_cuttlefish_flamboyant"] -[ext_resource type="Resource" path="res://fish/species/tilefish_blueline/tilefish_blueline.tres" id="113_tilefish_blueline"] -[ext_resource type="Resource" path="res://fish/species/tilefish_golden/tilefish_golden.tres" id="114_tilefish_golden"] -[ext_resource type="Resource" path="res://fish/species/ocean_perch_pacific/ocean_perch_pacific.tres" id="115_ocean_perch_pacific"] -[ext_resource type="Resource" path="res://fish/species/sea_bass_chilean/sea_bass_chilean.tres" id="116_sea_bass_chilean"] -[ext_resource type="Resource" path="res://fish/species/sablefish/sablefish.tres" id="117_sablefish"] -[ext_resource type="Resource" path="res://fish/species/wreckfish/wreckfish.tres" id="118_wreckfish"] -[ext_resource type="Resource" path="res://fish/species/oarfish_giant/oarfish_giant.tres" id="119_oarfish_giant"] -[ext_resource type="Resource" path="res://fish/species/coelacanth_west_indian/coelacanth_west_indian.tres" id="120_coelacanth_west_indian"] -[ext_resource type="Resource" path="res://fish/species/anglerfish_black_seadevil/anglerfish_black_seadevil.tres" id="121_anglerfish_black_seadevil"] -[ext_resource type="Resource" path="res://fish/species/fangtooth_common/fangtooth_common.tres" id="122_fangtooth_common"] -[ext_resource type="Resource" path="res://fish/species/gulper_eel/gulper_eel.tres" id="123_gulper_eel"] -[ext_resource type="Resource" path="res://fish/species/barreleye_pacific/barreleye_pacific.tres" id="124_barreleye_pacific"] -[ext_resource type="Resource" path="res://fish/species/blobfish_smooth_head/blobfish_smooth_head.tres" id="125_blobfish_smooth_head"] -[ext_resource type="Resource" path="res://fish/species/lanternfish_spotted/lanternfish_spotted.tres" id="126_lanternfish_spotted"] -[ext_resource type="Resource" path="res://fish/species/sea_star_crown_of_thorns/sea_star_crown_of_thorns.tres" id="127_sea_star_crown_of_thorns"] -[ext_resource type="Resource" path="res://fish/species/sea_cucumber_giant_california/sea_cucumber_giant_california.tres" id="128_sea_cucumber_giant_california"] -[ext_resource type="Resource" path="res://fish/species/urchin_purple/urchin_purple.tres" id="129_urchin_purple"] -[ext_resource type="Resource" path="res://fish/species/sand_dollar/sand_dollar.tres" id="130_sand_dollar"] -[ext_resource type="Resource" path="res://fish/species/sea_star_sunflower/sea_star_sunflower.tres" id="131_sea_star_sunflower"] -[ext_resource type="Resource" path="res://fish/species/axolotl/axolotl.tres" id="132_axolotl"] -[ext_resource type="Resource" path="res://fish/species/hellbender/hellbender.tres" id="133_hellbender"] -[ext_resource type="Resource" path="res://fish/species/guppy/guppy.tres" id="134_guppy"] -[ext_resource type="Resource" path="res://fish/species/tetra_neon/tetra_neon.tres" id="135_tetra_neon"] -[ext_resource type="Resource" path="res://fish/species/danio_zebra/danio_zebra.tres" id="136_danio_zebra"] -[ext_resource type="Resource" path="res://fish/species/largemouth_bass/largemouth_bass.tres" id="137_largemouth_bass"] -[ext_resource type="Resource" path="res://fish/species/smallmouth_bass/smallmouth_bass.tres" id="138_smallmouth_bass"] -[ext_resource type="Resource" path="res://fish/species/buffalo_bigmouth/buffalo_bigmouth.tres" id="139_buffalo_bigmouth"] -[ext_resource type="Resource" path="res://fish/species/redhorse_golden/redhorse_golden.tres" id="140_redhorse_golden"] -[ext_resource type="Resource" path="res://fish/species/quillback/quillback.tres" id="141_quillback"] -[ext_resource type="Resource" path="res://fish/species/buffalo_smallmouth/buffalo_smallmouth.tres" id="142_buffalo_smallmouth"] -[ext_resource type="Resource" path="res://fish/species/sucker_white/sucker_white.tres" id="143_sucker_white"] -[ext_resource type="Resource" path="res://fish/species/bullhead_black/bullhead_black.tres" id="144_bullhead_black"] -[ext_resource type="Resource" path="res://fish/species/bullhead_brown/bullhead_brown.tres" id="145_bullhead_brown"] -[ext_resource type="Resource" path="res://fish/species/madtom_tadpole/madtom_tadpole.tres" id="146_madtom_tadpole"] -[ext_resource type="Resource" path="res://fish/species/bullhead_yellow/bullhead_yellow.tres" id="147_bullhead_yellow"] -[ext_resource type="Resource" path="res://fish/species/barbel_common/barbel_common.tres" id="148_barbel_common"] -[ext_resource type="Resource" path="res://fish/species/bream_common/bream_common.tres" id="149_bream_common"] -[ext_resource type="Resource" path="res://fish/species/roach_common/roach_common.tres" id="150_roach_common"] -[ext_resource type="Resource" path="res://fish/species/fallfish/fallfish.tres" id="151_fallfish"] -[ext_resource type="Resource" path="res://fish/species/ide/ide.tres" id="152_ide"] -[ext_resource type="Resource" path="res://fish/species/rudd/rudd.tres" id="153_rudd"] -[ext_resource type="Resource" path="res://fish/species/tench/tench.tres" id="154_tench"] -[ext_resource type="Resource" path="res://fish/species/crayfish_red_swamp/crayfish_red_swamp.tres" id="155_crayfish_red_swamp"] -[ext_resource type="Resource" path="res://fish/species/gar_alligator/gar_alligator.tres" id="156_gar_alligator"] -[ext_resource type="Resource" path="res://fish/species/arapaima/arapaima.tres" id="157_arapaima"] -[ext_resource type="Resource" path="res://fish/species/tigerfish_goliath/tigerfish_goliath.tres" id="158_tigerfish_goliath"] -[ext_resource type="Resource" path="res://fish/species/muskellunge/muskellunge.tres" id="159_muskellunge"] -[ext_resource type="Resource" path="res://fish/species/shiner_common/shiner_common.tres" id="160_shiner_common"] -[ext_resource type="Resource" path="res://fish/species/chub_creek/chub_creek.tres" id="161_chub_creek"] -[ext_resource type="Resource" path="res://fish/species/shiner_emerald/shiner_emerald.tres" id="162_shiner_emerald"] -[ext_resource type="Resource" path="res://fish/species/minnow_fathead/minnow_fathead.tres" id="163_minnow_fathead"] -[ext_resource type="Resource" path="res://fish/species/shiner_golden/shiner_golden.tres" id="164_shiner_golden"] -[ext_resource type="Resource" path="res://fish/species/electric_eel/electric_eel.tres" id="165_electric_eel"] -[ext_resource type="Resource" path="res://fish/species/freshwater_drum/freshwater_drum.tres" id="166_freshwater_drum"] -[ext_resource type="Resource" path="res://fish/species/goldeye/goldeye.tres" id="167_goldeye"] -[ext_resource type="Resource" path="res://fish/species/mooneye/mooneye.tres" id="168_mooneye"] -[ext_resource type="Resource" path="res://fish/species/loach_weather/loach_weather.tres" id="169_loach_weather"] -[ext_resource type="Resource" path="res://fish/species/koi/koi.tres" id="170_koi"] -[ext_resource type="Resource" path="res://fish/species/crappie_black/crappie_black.tres" id="171_crappie_black"] -[ext_resource type="Resource" path="res://fish/species/green_sunfish/green_sunfish.tres" id="172_green_sunfish"] -[ext_resource type="Resource" path="res://fish/species/pumpkinseed/pumpkinseed.tres" id="173_pumpkinseed"] -[ext_resource type="Resource" path="res://fish/species/redear_sunfish/redear_sunfish.tres" id="174_redear_sunfish"] -[ext_resource type="Resource" path="res://fish/species/warmouth/warmouth.tres" id="175_warmouth"] -[ext_resource type="Resource" path="res://fish/species/crappie_white/crappie_white.tres" id="176_crappie_white"] -[ext_resource type="Resource" path="res://fish/species/yellow_perch/yellow_perch.tres" id="177_yellow_perch"] -[ext_resource type="Resource" path="res://fish/species/pickerel_chain/pickerel_chain.tres" id="178_pickerel_chain"] -[ext_resource type="Resource" path="res://fish/species/pickerel_grass/pickerel_grass.tres" id="179_pickerel_grass"] -[ext_resource type="Resource" path="res://fish/species/pike_northern/pike_northern.tres" id="180_pike_northern"] -[ext_resource type="Resource" path="res://fish/species/jelly_crystal/jelly_crystal.tres" id="181_jelly_crystal"] -[ext_resource type="Resource" path="res://fish/species/jelly_lions_mane/jelly_lions_mane.tres" id="182_jelly_lions_mane"] -[ext_resource type="Resource" path="res://fish/species/jelly_moon/jelly_moon.tres" id="183_jelly_moon"] -[ext_resource type="Resource" path="res://fish/species/jelly_pacific_sea_nettle/jelly_pacific_sea_nettle.tres" id="184_jelly_pacific_sea_nettle"] -[ext_resource type="Resource" path="res://fish/species/jelly_sea_wasp/jelly_sea_wasp.tres" id="185_jelly_sea_wasp"] -[ext_resource type="Resource" path="res://fish/species/pompano_african/pompano_african.tres" id="186_pompano_african"] -[ext_resource type="Resource" path="res://fish/species/cobia/cobia.tres" id="187_cobia"] -[ext_resource type="Resource" path="res://fish/species/trevally_giant/trevally_giant.tres" id="188_trevally_giant"] -[ext_resource type="Resource" path="res://fish/species/amberjack_greater/amberjack_greater.tres" id="189_amberjack_greater"] -[ext_resource type="Resource" path="res://fish/species/amberjack_lesser/amberjack_lesser.tres" id="190_amberjack_lesser"] -[ext_resource type="Resource" path="res://fish/species/halibut_atlantic/halibut_atlantic.tres" id="191_halibut_atlantic"] -[ext_resource type="Resource" path="res://fish/species/halibut_pacific/halibut_pacific.tres" id="192_halibut_pacific"] -[ext_resource type="Resource" path="res://fish/species/turbot/turbot.tres" id="193_turbot"] -[ext_resource type="Resource" path="res://fish/species/lobster_american/lobster_american.tres" id="194_lobster_american"] -[ext_resource type="Resource" path="res://fish/species/krill_antarctic/krill_antarctic.tres" id="195_krill_antarctic"] -[ext_resource type="Resource" path="res://fish/species/lobster_caribbean_spiny/lobster_caribbean_spiny.tres" id="196_lobster_caribbean_spiny"] -[ext_resource type="Resource" path="res://fish/species/shrimp_peacock_mantis/shrimp_peacock_mantis.tres" id="197_shrimp_peacock_mantis"] -[ext_resource type="Resource" path="res://fish/species/shrimp_skunk_cleaner/shrimp_skunk_cleaner.tres" id="198_shrimp_skunk_cleaner"] -[ext_resource type="Resource" path="res://fish/species/crab_ghost/crab_ghost.tres" id="199_crab_ghost"] -[ext_resource type="Resource" path="res://fish/species/crab_blue/crab_blue.tres" id="200_crab_blue"] -[ext_resource type="Resource" path="res://fish/species/crab_dungeness/crab_dungeness.tres" id="201_crab_dungeness"] -[ext_resource type="Resource" path="res://fish/species/crab_japanese_spider/crab_japanese_spider.tres" id="202_crab_japanese_spider"] -[ext_resource type="Resource" path="res://fish/species/crab_red_king/crab_red_king.tres" id="203_crab_red_king"] -[ext_resource type="Resource" path="res://fish/species/eel_american/eel_american.tres" id="204_eel_american"] -[ext_resource type="Resource" path="res://fish/species/eel_european/eel_european.tres" id="205_eel_european"] -[ext_resource type="Resource" path="res://fish/species/smelt_rainbow/smelt_rainbow.tres" id="206_smelt_rainbow"] -[ext_resource type="Resource" path="res://fish/species/smelt_eulachon/smelt_eulachon.tres" id="207_smelt_eulachon"] -[ext_resource type="Resource" path="res://fish/species/sturgeon_white/sturgeon_white.tres" id="208_sturgeon_white"] -[ext_resource type="Resource" path="res://fish/species/mahi_mahi/mahi_mahi.tres" id="209_mahi_mahi"] -[ext_resource type="Resource" path="res://fish/species/opah/opah.tres" id="210_opah"] -[ext_resource type="Resource" path="res://fish/species/wahoo/wahoo.tres" id="211_wahoo"] -[ext_resource type="Resource" path="res://fish/species/octopus_common/octopus_common.tres" id="212_octopus_common"] -[ext_resource type="Resource" path="res://fish/species/octopus_day/octopus_day.tres" id="213_octopus_day"] -[ext_resource type="Resource" path="res://fish/species/octopus_giant_pacific/octopus_giant_pacific.tres" id="214_octopus_giant_pacific"] -[ext_resource type="Resource" path="res://fish/species/octopus_greater_blue_ringed/octopus_greater_blue_ringed.tres" id="215_octopus_greater_blue_ringed"] -[ext_resource type="Resource" path="res://fish/species/skate_barndoor/skate_barndoor.tres" id="216_skate_barndoor"] -[ext_resource type="Resource" path="res://fish/species/manta_ray_giant/manta_ray_giant.tres" id="217_manta_ray_giant"] -[ext_resource type="Resource" path="res://fish/species/sawfish_largetooth/sawfish_largetooth.tres" id="218_sawfish_largetooth"] -[ext_resource type="Resource" path="res://fish/species/stingray_ocellate_river/stingray_ocellate_river.tres" id="219_stingray_ocellate_river"] -[ext_resource type="Resource" path="res://fish/species/stingray_southern/stingray_southern.tres" id="220_stingray_southern"] -[ext_resource type="Resource" path="res://fish/species/lionfish_red/lionfish_red.tres" id="221_lionfish_red"] -[ext_resource type="Resource" path="res://fish/species/scorpionfish_red/scorpionfish_red.tres" id="222_scorpionfish_red"] -[ext_resource type="Resource" path="res://fish/species/moray_green/moray_green.tres" id="223_moray_green"] -[ext_resource type="Resource" path="res://fish/species/flounder_peacock/flounder_peacock.tres" id="224_flounder_peacock"] -[ext_resource type="Resource" path="res://fish/species/surgeonfish_blue/surgeonfish_blue.tres" id="225_surgeonfish_blue"] -[ext_resource type="Resource" path="res://fish/species/parrotfish_rainbow/parrotfish_rainbow.tres" id="226_parrotfish_rainbow"] -[ext_resource type="Resource" path="res://fish/species/parrotfish_stoplight/parrotfish_stoplight.tres" id="227_parrotfish_stoplight"] -[ext_resource type="Resource" path="res://fish/species/tang_yellow/tang_yellow.tres" id="228_tang_yellow"] -[ext_resource type="Resource" path="res://fish/species/trumpetfish_atlantic/trumpetfish_atlantic.tres" id="229_trumpetfish_atlantic"] -[ext_resource type="Resource" path="res://fish/species/triggerfish_gray/triggerfish_gray.tres" id="230_triggerfish_gray"] -[ext_resource type="Resource" path="res://fish/species/pufferfish_guineafowl/pufferfish_guineafowl.tres" id="231_pufferfish_guineafowl"] -[ext_resource type="Resource" path="res://fish/species/cowfish_longhorn/cowfish_longhorn.tres" id="232_cowfish_longhorn"] -[ext_resource type="Resource" path="res://fish/species/triggerfish_queen/triggerfish_queen.tres" id="233_triggerfish_queen"] -[ext_resource type="Resource" path="res://fish/species/cornetfish_red/cornetfish_red.tres" id="234_cornetfish_red"] -[ext_resource type="Resource" path="res://fish/species/porcupinefish_spotted/porcupinefish_spotted.tres" id="235_porcupinefish_spotted"] -[ext_resource type="Resource" path="res://fish/species/boxfish_yellow/boxfish_yellow.tres" id="236_boxfish_yellow"] -[ext_resource type="Resource" path="res://fish/species/butterflyfish_copperband/butterflyfish_copperband.tres" id="237_butterflyfish_copperband"] -[ext_resource type="Resource" path="res://fish/species/clownfish_ocellaris/clownfish_ocellaris.tres" id="238_clownfish_ocellaris"] -[ext_resource type="Resource" path="res://fish/species/angelfish_queen/angelfish_queen.tres" id="239_angelfish_queen"] -[ext_resource type="Resource" path="res://fish/species/grouper_atlantic_goliath/grouper_atlantic_goliath.tres" id="240_grouper_atlantic_goliath"] -[ext_resource type="Resource" path="res://fish/species/trevally_bluefin/trevally_bluefin.tres" id="241_trevally_bluefin"] -[ext_resource type="Resource" path="res://fish/species/grouper_giant/grouper_giant.tres" id="242_grouper_giant"] -[ext_resource type="Resource" path="res://fish/species/barracuda_great/barracuda_great.tres" id="243_barracuda_great"] -[ext_resource type="Resource" path="res://fish/species/grouper_nassau/grouper_nassau.tres" id="244_grouper_nassau"] -[ext_resource type="Resource" path="res://fish/species/chromis_blue_green/chromis_blue_green.tres" id="245_chromis_blue_green"] -[ext_resource type="Resource" path="res://fish/species/grunt_bluestriped/grunt_bluestriped.tres" id="246_grunt_bluestriped"] -[ext_resource type="Resource" path="res://fish/species/grunt_french/grunt_french.tres" id="247_grunt_french"] -[ext_resource type="Resource" path="res://fish/species/damselfish_sergeant_major/damselfish_sergeant_major.tres" id="248_damselfish_sergeant_major"] -[ext_resource type="Resource" path="res://fish/species/wrasse_ballan/wrasse_ballan.tres" id="249_wrasse_ballan"] -[ext_resource type="Resource" path="res://fish/species/wrasse_cleaner/wrasse_cleaner.tres" id="250_wrasse_cleaner"] -[ext_resource type="Resource" path="res://fish/species/hogfish/hogfish.tres" id="251_hogfish"] -[ext_resource type="Resource" path="res://fish/species/turtle_green/turtle_green.tres" id="252_turtle_green"] -[ext_resource type="Resource" path="res://fish/species/turtle_hawksbill/turtle_hawksbill.tres" id="253_turtle_hawksbill"] -[ext_resource type="Resource" path="res://fish/species/turtle_leatherback/turtle_leatherback.tres" id="254_turtle_leatherback"] -[ext_resource type="Resource" path="res://fish/species/turtle_loggerhead/turtle_loggerhead.tres" id="255_turtle_loggerhead"] -[ext_resource type="Resource" path="res://fish/species/seadragon_leafy/seadragon_leafy.tres" id="256_seadragon_leafy"] -[ext_resource type="Resource" path="res://fish/species/seadragon_weedy/seadragon_weedy.tres" id="257_seadragon_weedy"] -[ext_resource type="Resource" path="res://fish/species/oyster_black_lip_pearl/oyster_black_lip_pearl.tres" id="258_oyster_black_lip_pearl"] -[ext_resource type="Resource" path="res://fish/species/clam_giant/clam_giant.tres" id="259_clam_giant"] -[ext_resource type="Resource" path="res://fish/species/clam_geoduck/clam_geoduck.tres" id="260_clam_geoduck"] -[ext_resource type="Resource" path="res://fish/species/conch_queen/conch_queen.tres" id="261_conch_queen"] -[ext_resource type="Resource" path="res://fish/species/abalone_red/abalone_red.tres" id="262_abalone_red"] -[ext_resource type="Resource" path="res://fish/species/squid_bigfin_reef/squid_bigfin_reef.tres" id="263_squid_bigfin_reef"] -[ext_resource type="Resource" path="res://fish/species/squid_colossal/squid_colossal.tres" id="264_squid_colossal"] -[ext_resource type="Resource" path="res://fish/species/squid_giant/squid_giant.tres" id="265_squid_giant"] -[ext_resource type="Resource" path="res://fish/species/squid_humboldt/squid_humboldt.tres" id="266_squid_humboldt"] -[ext_resource type="Resource" path="res://fish/species/halfbeak_ballyhoo/halfbeak_ballyhoo.tres" id="267_halfbeak_ballyhoo"] -[ext_resource type="Resource" path="res://fish/species/needlefish_hound/needlefish_hound.tres" id="268_needlefish_hound"] -[ext_resource type="Resource" path="res://fish/species/flyingfish_tropical/flyingfish_tropical.tres" id="269_flyingfish_tropical"] -[ext_resource type="Resource" path="res://fish/species/croaker_atlantic/croaker_atlantic.tres" id="270_croaker_atlantic"] -[ext_resource type="Resource" path="res://fish/species/black_drum/black_drum.tres" id="271_black_drum"] -[ext_resource type="Resource" path="res://fish/species/red_drum/red_drum.tres" id="272_red_drum"] -[ext_resource type="Resource" path="res://fish/species/mullet_striped/mullet_striped.tres" id="273_mullet_striped"] -[ext_resource type="Resource" path="res://fish/species/weakfish/weakfish.tres" id="274_weakfish"] -[ext_resource type="Resource" path="res://fish/species/white_perch/white_perch.tres" id="275_white_perch"] -[ext_resource type="Resource" path="res://fish/species/croaker_yellowfin/croaker_yellowfin.tres" id="276_croaker_yellowfin"] -[ext_resource type="Resource" path="res://fish/species/rockfish_black/rockfish_black.tres" id="277_rockfish_black"] -[ext_resource type="Resource" path="res://fish/species/sea_bass_black/sea_bass_black.tres" id="278_sea_bass_black"] -[ext_resource type="Resource" path="res://fish/species/rockfish_canary/rockfish_canary.tres" id="279_rockfish_canary"] -[ext_resource type="Resource" path="res://fish/species/porgy_scup/porgy_scup.tres" id="280_porgy_scup"] -[ext_resource type="Resource" path="res://fish/species/sheepshead/sheepshead.tres" id="281_sheepshead"] -[ext_resource type="Resource" path="res://fish/species/tautog/tautog.tres" id="282_tautog"] -[ext_resource type="Resource" path="res://fish/species/rockfish_yelloweye/rockfish_yelloweye.tres" id="283_rockfish_yelloweye"] -[ext_resource type="Resource" path="res://fish/species/lingcod/lingcod.tres" id="284_lingcod"] -[ext_resource type="Resource" path="res://fish/species/milkfish/milkfish.tres" id="285_milkfish"] -[ext_resource type="Resource" path="res://fish/species/roosterfish/roosterfish.tres" id="286_roosterfish"] -[ext_resource type="Resource" path="res://fish/species/tarpon_atlantic/tarpon_atlantic.tres" id="287_tarpon_atlantic"] -[ext_resource type="Resource" path="res://fish/species/barramundi/barramundi.tres" id="288_barramundi"] -[ext_resource type="Resource" path="res://fish/species/snook_common/snook_common.tres" id="289_snook_common"] -[ext_resource type="Resource" path="res://fish/species/bonefish/bonefish.tres" id="290_bonefish"] -[ext_resource type="Resource" path="res://fish/species/pompano_florida/pompano_florida.tres" id="291_pompano_florida"] -[ext_resource type="Resource" path="res://fish/species/ladyfish/ladyfish.tres" id="292_ladyfish"] -[ext_resource type="Resource" path="res://fish/species/permit/permit.tres" id="293_permit"] -[ext_resource type="Resource" path="res://fish/species/knifefish_clown/knifefish_clown.tres" id="294_knifefish_clown"] -[ext_resource type="Resource" path="res://fish/species/loach_clown/loach_clown.tres" id="295_loach_clown"] -[ext_resource type="Resource" path="res://fish/species/discus/discus.tres" id="296_discus"] -[ext_resource type="Resource" path="res://fish/species/angelfish_freshwater/angelfish_freshwater.tres" id="297_angelfish_freshwater"] -[ext_resource type="Resource" path="res://fish/species/gourami_giant/gourami_giant.tres" id="298_gourami_giant"] -[ext_resource type="Resource" path="res://fish/species/tilapia_nile/tilapia_nile.tres" id="299_tilapia_nile"] -[ext_resource type="Resource" path="res://fish/species/oscar/oscar.tres" id="300_oscar"] -[ext_resource type="Resource" path="res://fish/species/betta_siamese/betta_siamese.tres" id="301_betta_siamese"] -[ext_resource type="Resource" path="res://fish/species/tambaqui/tambaqui.tres" id="302_tambaqui"] -[ext_resource type="Resource" path="res://fish/species/catfish_walking/catfish_walking.tres" id="303_catfish_walking"] -[ext_resource type="Resource" path="res://fish/species/snakehead_giant/snakehead_giant.tres" id="304_snakehead_giant"] -[ext_resource type="Resource" path="res://fish/species/dorado_golden/dorado_golden.tres" id="305_dorado_golden"] -[ext_resource type="Resource" path="res://fish/species/mahseer_golden/mahseer_golden.tres" id="306_mahseer_golden"] -[ext_resource type="Resource" path="res://fish/species/peacock_bass/peacock_bass.tres" id="307_peacock_bass"] -[ext_resource type="Resource" path="res://fish/species/piranha_red_bellied/piranha_red_bellied.tres" id="308_piranha_red_bellied"] -[ext_resource type="Resource" path="res://fish/species/arowana_silver/arowana_silver.tres" id="309_arowana_silver"] -[ext_resource type="Resource" path="res://fish/species/whale_blue/whale_blue.tres" id="310_whale_blue"] -[ext_resource type="Resource" path="res://fish/species/dolphin_bottlenose/dolphin_bottlenose.tres" id="311_dolphin_bottlenose"] -[ext_resource type="Resource" path="res://fish/species/whale_humpback/whale_humpback.tres" id="312_whale_humpback"] -[ext_resource type="Resource" path="res://fish/species/whale_killer/whale_killer.tres" id="313_whale_killer"] -[ext_resource type="Resource" path="res://fish/species/whale_sperm/whale_sperm.tres" id="314_whale_sperm"] [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"), 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"), ExtResource("21_anchovy_european"), ExtResource("22_anchovy_northern"), ExtResource("23_chub_european"), ExtResource("24_chub_flame"), ExtResource("25_chub_lake"), ExtResource("26_goldfish"), ExtResource("27_goldfish_bubbleeye"), ExtResource("28_grouper_gulf"), ExtResource("29_grouper_red"), ExtResource("30_mackerel_atlantic"), ExtResource("31_mackerel_cero"), ExtResource("32_mackerel_chub"), ExtResource("33_mackerel_king"), ExtResource("34_mackerel_spanish"), ExtResource("35_marlin_black"), ExtResource("36_marlin_blue"), ExtResource("37_marlin_white"), ExtResource("38_pomfret_black"), ExtResource("39_pomfret_chinese"), ExtResource("40_pomfret_golden"), ExtResource("41_pomfret_white"), ExtResource("42_sailfish"), ExtResource("43_sauger"), ExtResource("44_saugeye"), ExtResource("45_snapper_lane"), ExtResource("46_snapper_mangrove"), ExtResource("47_snapper_mutton"), ExtResource("48_snapper_red"), ExtResource("49_swordfish"), ExtResource("50_trout_cutthroat"), ExtResource("51_trout_golden"), ExtResource("52_trout_rainbow"), ExtResource("53_trout_steelhead"), ExtResource("54_walleye"), ExtResource("55_bowfin"), ExtResource("56_sturgeon_lake"), ExtResource("57_gar_longnose"), ExtResource("58_paddlefish"), ExtResource("59_sturgeon_shovelnose"), ExtResource("60_gar_spotted"), ExtResource("61_lungfish_west_african"), ExtResource("62_mudskipper_atlantic"), ExtResource("63_foureyes_largescale"), ExtResource("64_mullet_red"), ExtResource("65_plaice_european"), ExtResource("66_flounder_summer"), ExtResource("67_flounder_winter"), ExtResource("68_dugong"), ExtResource("69_seal_harbor"), ExtResource("70_sea_otter"), ExtResource("71_walrus"), ExtResource("72_manatee_west_indian"), ExtResource("73_pipefish_bay"), ExtResource("74_seahorse_lined"), ExtResource("75_monkfish"), ExtResource("76_tripletail"), ExtResource("77_bluefish"), ExtResource("78_jack_crevalle"), ExtResource("79_queenfish_talang"), ExtResource("80_sand_lance_american"), ExtResource("81_menhaden_atlantic"), ExtResource("82_sardine_european"), ExtResource("83_sardine_pacific"), ExtResource("84_shark_blacktip"), ExtResource("85_shark_great_hammerhead"), ExtResource("86_shark_great_white"), ExtResource("87_shark_tiger"), ExtResource("88_shark_whale"), ExtResource("89_burbot"), ExtResource("90_cisco"), ExtResource("91_whitefish_lake"), ExtResource("92_char_arctic"), ExtResource("93_grayling_arctic"), ExtResource("94_trout_brown"), ExtResource("95_wolffish_atlantic"), ExtResource("96_cusk"), ExtResource("97_wolffish_spotted"), ExtResource("98_herring_atlantic"), ExtResource("99_capelin"), ExtResource("100_sprat_european"), ExtResource("101_herring_pacific"), ExtResource("102_pollock_alaska"), ExtResource("103_cod_atlantic"), ExtResource("104_pollock_atlantic"), ExtResource("105_sole_dover"), ExtResource("106_haddock"), ExtResource("107_cod_pacific"), ExtResource("108_hake_pacific"), ExtResource("109_hake_silver"), ExtResource("110_nautilus_chambered"), ExtResource("111_cuttlefish_common"), ExtResource("112_cuttlefish_flamboyant"), ExtResource("113_tilefish_blueline"), ExtResource("114_tilefish_golden"), ExtResource("115_ocean_perch_pacific"), ExtResource("116_sea_bass_chilean"), ExtResource("117_sablefish"), ExtResource("118_wreckfish"), ExtResource("119_oarfish_giant"), ExtResource("120_coelacanth_west_indian"), ExtResource("121_anglerfish_black_seadevil"), ExtResource("122_fangtooth_common"), ExtResource("123_gulper_eel"), ExtResource("124_barreleye_pacific"), ExtResource("125_blobfish_smooth_head"), ExtResource("126_lanternfish_spotted"), ExtResource("127_sea_star_crown_of_thorns"), ExtResource("128_sea_cucumber_giant_california"), ExtResource("129_urchin_purple"), ExtResource("130_sand_dollar"), ExtResource("131_sea_star_sunflower"), ExtResource("132_axolotl"), ExtResource("133_hellbender"), ExtResource("134_guppy"), ExtResource("135_tetra_neon"), ExtResource("136_danio_zebra"), ExtResource("137_largemouth_bass"), ExtResource("138_smallmouth_bass"), ExtResource("139_buffalo_bigmouth"), ExtResource("140_redhorse_golden"), ExtResource("141_quillback"), ExtResource("142_buffalo_smallmouth"), ExtResource("143_sucker_white"), ExtResource("144_bullhead_black"), ExtResource("145_bullhead_brown"), ExtResource("146_madtom_tadpole"), ExtResource("147_bullhead_yellow"), ExtResource("148_barbel_common"), ExtResource("149_bream_common"), ExtResource("150_roach_common"), ExtResource("151_fallfish"), ExtResource("152_ide"), ExtResource("153_rudd"), ExtResource("154_tench"), ExtResource("155_crayfish_red_swamp"), ExtResource("156_gar_alligator"), ExtResource("157_arapaima"), ExtResource("158_tigerfish_goliath"), ExtResource("159_muskellunge"), ExtResource("160_shiner_common"), ExtResource("161_chub_creek"), ExtResource("162_shiner_emerald"), ExtResource("163_minnow_fathead"), ExtResource("164_shiner_golden"), ExtResource("165_electric_eel"), ExtResource("166_freshwater_drum"), ExtResource("167_goldeye"), ExtResource("168_mooneye"), ExtResource("169_loach_weather"), ExtResource("170_koi"), ExtResource("171_crappie_black"), ExtResource("172_green_sunfish"), ExtResource("173_pumpkinseed"), ExtResource("174_redear_sunfish"), ExtResource("175_warmouth"), ExtResource("176_crappie_white"), ExtResource("177_yellow_perch"), ExtResource("178_pickerel_chain"), ExtResource("179_pickerel_grass"), ExtResource("180_pike_northern"), ExtResource("181_jelly_crystal"), ExtResource("182_jelly_lions_mane"), ExtResource("183_jelly_moon"), ExtResource("184_jelly_pacific_sea_nettle"), ExtResource("185_jelly_sea_wasp"), ExtResource("186_pompano_african"), ExtResource("187_cobia"), ExtResource("188_trevally_giant"), ExtResource("189_amberjack_greater"), ExtResource("190_amberjack_lesser"), ExtResource("191_halibut_atlantic"), ExtResource("192_halibut_pacific"), ExtResource("193_turbot"), ExtResource("194_lobster_american"), ExtResource("195_krill_antarctic"), ExtResource("196_lobster_caribbean_spiny"), ExtResource("197_shrimp_peacock_mantis"), ExtResource("198_shrimp_skunk_cleaner"), ExtResource("199_crab_ghost"), ExtResource("200_crab_blue"), ExtResource("201_crab_dungeness"), ExtResource("202_crab_japanese_spider"), ExtResource("203_crab_red_king"), ExtResource("204_eel_american"), ExtResource("205_eel_european"), ExtResource("206_smelt_rainbow"), ExtResource("207_smelt_eulachon"), ExtResource("208_sturgeon_white"), ExtResource("209_mahi_mahi"), ExtResource("210_opah"), ExtResource("211_wahoo"), ExtResource("212_octopus_common"), ExtResource("213_octopus_day"), ExtResource("214_octopus_giant_pacific"), ExtResource("215_octopus_greater_blue_ringed"), ExtResource("216_skate_barndoor"), ExtResource("217_manta_ray_giant"), ExtResource("218_sawfish_largetooth"), ExtResource("219_stingray_ocellate_river"), ExtResource("220_stingray_southern"), ExtResource("221_lionfish_red"), ExtResource("222_scorpionfish_red"), ExtResource("223_moray_green"), ExtResource("224_flounder_peacock"), ExtResource("225_surgeonfish_blue"), ExtResource("226_parrotfish_rainbow"), ExtResource("227_parrotfish_stoplight"), ExtResource("228_tang_yellow"), ExtResource("229_trumpetfish_atlantic"), ExtResource("230_triggerfish_gray"), ExtResource("231_pufferfish_guineafowl"), ExtResource("232_cowfish_longhorn"), ExtResource("233_triggerfish_queen"), ExtResource("234_cornetfish_red"), ExtResource("235_porcupinefish_spotted"), ExtResource("236_boxfish_yellow"), ExtResource("237_butterflyfish_copperband"), ExtResource("238_clownfish_ocellaris"), ExtResource("239_angelfish_queen"), ExtResource("240_grouper_atlantic_goliath"), ExtResource("241_trevally_bluefin"), ExtResource("242_grouper_giant"), ExtResource("243_barracuda_great"), ExtResource("244_grouper_nassau"), ExtResource("245_chromis_blue_green"), ExtResource("246_grunt_bluestriped"), ExtResource("247_grunt_french"), ExtResource("248_damselfish_sergeant_major"), ExtResource("249_wrasse_ballan"), ExtResource("250_wrasse_cleaner"), ExtResource("251_hogfish"), ExtResource("252_turtle_green"), ExtResource("253_turtle_hawksbill"), ExtResource("254_turtle_leatherback"), ExtResource("255_turtle_loggerhead"), ExtResource("256_seadragon_leafy"), ExtResource("257_seadragon_weedy"), ExtResource("258_oyster_black_lip_pearl"), ExtResource("259_clam_giant"), ExtResource("260_clam_geoduck"), ExtResource("261_conch_queen"), ExtResource("262_abalone_red"), ExtResource("263_squid_bigfin_reef"), ExtResource("264_squid_colossal"), ExtResource("265_squid_giant"), ExtResource("266_squid_humboldt"), ExtResource("267_halfbeak_ballyhoo"), ExtResource("268_needlefish_hound"), ExtResource("269_flyingfish_tropical"), ExtResource("270_croaker_atlantic"), ExtResource("271_black_drum"), ExtResource("272_red_drum"), ExtResource("273_mullet_striped"), ExtResource("274_weakfish"), ExtResource("275_white_perch"), ExtResource("276_croaker_yellowfin"), ExtResource("277_rockfish_black"), ExtResource("278_sea_bass_black"), ExtResource("279_rockfish_canary"), ExtResource("280_porgy_scup"), ExtResource("281_sheepshead"), ExtResource("282_tautog"), ExtResource("283_rockfish_yelloweye"), ExtResource("284_lingcod"), ExtResource("285_milkfish"), ExtResource("286_roosterfish"), ExtResource("287_tarpon_atlantic"), ExtResource("288_barramundi"), ExtResource("289_snook_common"), ExtResource("290_bonefish"), ExtResource("291_pompano_florida"), ExtResource("292_ladyfish"), ExtResource("293_permit"), ExtResource("294_knifefish_clown"), ExtResource("295_loach_clown"), ExtResource("296_discus"), ExtResource("297_angelfish_freshwater"), ExtResource("298_gourami_giant"), ExtResource("299_tilapia_nile"), ExtResource("300_oscar"), ExtResource("301_betta_siamese"), ExtResource("302_tambaqui"), ExtResource("303_catfish_walking"), ExtResource("304_snakehead_giant"), ExtResource("305_dorado_golden"), ExtResource("306_mahseer_golden"), ExtResource("307_peacock_bass"), ExtResource("308_piranha_red_bellied"), ExtResource("309_arowana_silver"), ExtResource("310_whale_blue"), ExtResource("311_dolphin_bottlenose"), ExtResource("312_whale_humpback"), ExtResource("313_whale_killer"), ExtResource("314_whale_sperm")] +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"), ExtResource("21_anchovy_european"), ExtResource("22_anchovy_northern"), ExtResource("23_chub_european"), ExtResource("24_chub_flame"), ExtResource("25_chub_lake"), ExtResource("26_goldfish"), ExtResource("27_goldfish_bubbleeye"), ExtResource("28_grouper_gulf"), ExtResource("29_grouper_red"), ExtResource("30_mackerel_atlantic"), ExtResource("31_mackerel_cero"), ExtResource("32_mackerel_chub"), ExtResource("33_mackerel_king"), ExtResource("34_mackerel_spanish"), ExtResource("35_marlin_black"), ExtResource("36_marlin_blue"), ExtResource("37_marlin_white"), ExtResource("38_pomfret_black"), ExtResource("39_pomfret_chinese"), ExtResource("40_pomfret_golden"), ExtResource("41_pomfret_white"), ExtResource("42_sailfish"), ExtResource("43_sauger"), ExtResource("44_saugeye"), ExtResource("45_snapper_lane"), ExtResource("46_snapper_mangrove"), ExtResource("47_snapper_mutton"), ExtResource("48_snapper_red"), ExtResource("49_swordfish"), ExtResource("50_trout_cutthroat"), ExtResource("51_trout_golden"), ExtResource("52_trout_rainbow"), ExtResource("53_trout_steelhead"), ExtResource("54_walleye")] diff --git a/fish/species/abalone_red/abalone_red.tres b/fish/species/abalone_red/abalone_red.tres deleted file mode 100644 index 039c7e2..0000000 --- a/fish/species/abalone_red/abalone_red.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -require_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"abalone_red" -display_name = "red abalone" -active = false -catalog_number = 6405 -collection_group = &"Shellfish" -logbook_fact = "red abalones cling to pacific rocks with broad muscular feet. rows of shell holes release water that has passed over the gills." -allowed_water_types = 2 -rarity = 3 -base_catch_weight = 0.09 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.2 -weight_max_lb = 12.0 -sell_value_min = 24 -sell_value_max = 56 -sell_value_curve = 0.88 diff --git a/fish/species/amberjack_greater/amberjack_greater.tres b/fish/species/amberjack_greater/amberjack_greater.tres deleted file mode 100644 index 53ea638..0000000 --- a/fish/species/amberjack_greater/amberjack_greater.tres +++ /dev/null @@ -1,27 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") - -[resource] -script = ExtResource("1_fish_data") -id = &"amberjack_greater" -display_name = "greater amberjack" -active = false -catalog_number = 3604 -collection_group = &"Large coastal predators" -logbook_fact = "greater amberjacks circle reefs, wrecks, and offshore platforms. a dark stripe crosses the eye of their sturdy torpedo-shaped bodies." -allowed_water_types = 2 -rarity = 2 -base_catch_weight = 0.25 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 5.0 -weight_max_lb = 90.0 -sell_value_min = 15 -sell_value_max = 42 -sell_value_curve = 0.82 diff --git a/fish/species/amberjack_lesser/amberjack_lesser.tres b/fish/species/amberjack_lesser/amberjack_lesser.tres deleted file mode 100644 index 2fd0aec..0000000 --- a/fish/species/amberjack_lesser/amberjack_lesser.tres +++ /dev/null @@ -1,27 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") - -[resource] -script = ExtResource("1_fish_data") -id = &"amberjack_lesser" -display_name = "lesser amberjack" -active = false -catalog_number = 3605 -collection_group = &"Large coastal predators" -logbook_fact = "lesser amberjacks school around deep reefs and floating objects. an enlarged eye suits their preference for dimmer water." -allowed_water_types = 2 -rarity = 1 -base_catch_weight = 0.75 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 1.0 -weight_max_lb = 20.0 -sell_value_min = 7 -sell_value_max = 18 -sell_value_curve = 0.86 diff --git a/fish/species/anchovy_european/anchovy_european.tres b/fish/species/anchovy_european/anchovy_european.tres index 722fbaf..fea09ed 100644 --- a/fish/species/anchovy_european/anchovy_european.tres +++ b/fish/species/anchovy_european/anchovy_european.tres @@ -13,10 +13,6 @@ allowed_location_tags = Array[StringName]([&"ocean"]) script = ExtResource("1_fish_data") id = &"anchovy_european" display_name = "european anchovy" -active = true -catalog_number = 805 -collection_group = &"Coastal schooling fish" -logbook_fact = "european anchovies form dense schools and feed by filtering tiny plankton from coastal water." allowed_water_types = 2 base_catch_weight = 0.5 catch_profile = ExtResource("2_profile") diff --git a/fish/species/anchovy_northern/anchovy_northern.tres b/fish/species/anchovy_northern/anchovy_northern.tres index a1940d5..ad53d6e 100644 --- a/fish/species/anchovy_northern/anchovy_northern.tres +++ b/fish/species/anchovy_northern/anchovy_northern.tres @@ -13,10 +13,6 @@ allowed_location_tags = Array[StringName]([&"ocean"]) script = ExtResource("1_fish_data") id = &"anchovy_northern" display_name = "northern anchovy" -active = true -catalog_number = 808 -collection_group = &"Coastal schooling fish" -logbook_fact = "northern anchovies gather in huge schools along the pacific coast and filter plankton with their fine gill rakers." allowed_water_types = 2 base_catch_weight = 0.5 catch_profile = ExtResource("2_profile") diff --git a/fish/species/angelfish_freshwater/angelfish_freshwater.tres b/fish/species/angelfish_freshwater/angelfish_freshwater.tres deleted file mode 100644 index 5d9bda2..0000000 --- a/fish/species/angelfish_freshwater/angelfish_freshwater.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"angelfish_freshwater" -display_name = "freshwater angelfish" -active = false -catalog_number = 7504 -collection_group = &"Tropical freshwater fish" -logbook_fact = "freshwater angelfish slip between tall plants on narrow triangular bodies. long fins and vertical bars resemble stems and shadows." -allowed_water_types = 1 -rarity = 2 -base_catch_weight = 0.3 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.05 -weight_max_lb = 0.5 -sell_value_min = 10 -sell_value_max = 22 -sell_value_curve = 0.95 diff --git a/fish/species/angelfish_queen/angelfish_queen.tres b/fish/species/angelfish_queen/angelfish_queen.tres deleted file mode 100644 index d45bbea..0000000 --- a/fish/species/angelfish_queen/angelfish_queen.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"angelfish_queen" -display_name = "queen angelfish" -active = false -catalog_number = 5703 -collection_group = &"Reef ornamentals" -logbook_fact = "queen angelfish graze sponges from warm atlantic reefs. a blue-ringed spot on the forehead resembles a tiny crown." -allowed_water_types = 2 -rarity = 2 -base_catch_weight = 0.3 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.1 -weight_max_lb = 2.0 -sell_value_min = 11 -sell_value_max = 25 -sell_value_curve = 0.94 diff --git a/fish/species/anglerfish_black_seadevil/anglerfish_black_seadevil.tres b/fish/species/anglerfish_black_seadevil/anglerfish_black_seadevil.tres deleted file mode 100644 index 2888120..0000000 --- a/fish/species/anglerfish_black_seadevil/anglerfish_black_seadevil.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false - -[resource] -script = ExtResource("1_fish_data") -id = &"anglerfish_black_seadevil" -display_name = "black seadevil" -active = false -catalog_number = 1801 -collection_group = &"Deep-sea oddities" -logbook_fact = "black seadevils lure prey with a glowing organ suspended above the mouth. tiny males permanently attach to much larger females." -allowed_water_types = 2 -rarity = 4 -base_catch_weight = 0.05 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.1 -weight_max_lb = 2.0 -sell_value_min = 48 -sell_value_max = 105 -sell_value_curve = 0.92 diff --git a/fish/species/arapaima/arapaima.tres b/fish/species/arapaima/arapaima.tres deleted file mode 100644 index 2ee2c75..0000000 --- a/fish/species/arapaima/arapaima.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"arapaima" -display_name = "arapaima" -active = false -catalog_number = 2702 -collection_group = &"Freshwater giants" -logbook_fact = "arapaima must surface frequently to gulp air through a specialized swim bladder. large armored scales protect their long river-going bodies." -allowed_water_types = 1 -rarity = 4 -base_catch_weight = 0.04 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 40.0 -weight_max_lb = 400.0 -sell_value_min = 60 -sell_value_max = 140 -sell_value_curve = 0.78 diff --git a/fish/species/arowana_silver/arowana_silver.tres b/fish/species/arowana_silver/arowana_silver.tres deleted file mode 100644 index 413621c..0000000 --- a/fish/species/arowana_silver/arowana_silver.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -require_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"arowana_silver" -display_name = "silver arowana" -active = false -catalog_number = 7606 -collection_group = &"Tropical freshwater predators" -logbook_fact = "silver arowanas patrol the surface with upturned mouths and long bodies. powerful jumps capture insects and small animals above the water." -allowed_water_types = 1 -rarity = 3 -base_catch_weight = 0.11 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 1.0 -weight_max_lb = 15.0 -sell_value_min = 25 -sell_value_max = 56 -sell_value_curve = 0.86 diff --git a/fish/species/axolotl/axolotl.tres b/fish/species/axolotl/axolotl.tres deleted file mode 100644 index 17ba5ad..0000000 --- a/fish/species/axolotl/axolotl.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false -require_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"axolotl" -display_name = "axolotl" -active = false -catalog_number = 2001 -collection_group = &"Freshwater amphibians" -logbook_fact = "axolotls remain aquatic and keep feathery external gills throughout adulthood. lost limbs and parts of several organs can regenerate." -allowed_water_types = 1 -rarity = 4 -base_catch_weight = 0.04 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.1 -weight_max_lb = 0.7 -sell_value_min = 36 -sell_value_max = 78 -sell_value_curve = 0.96 diff --git a/fish/species/barbel_common/barbel_common.tres b/fish/species/barbel_common/barbel_common.tres deleted file mode 100644 index 4e1b93d..0000000 --- a/fish/species/barbel_common/barbel_common.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false -require_rain = true - -[resource] -script = ExtResource("1_fish_data") -id = &"barbel_common" -display_name = "common barbel" -active = false -catalog_number = 2501 -collection_group = &"Freshwater coarse fish" -logbook_fact = "common barbels hold close to fast river bottoms with streamlined bodies and broad fins. four mouth barbels locate food among stones." -allowed_water_types = 1 -rarity = 2 -base_catch_weight = 0.28 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 1.0 -weight_max_lb = 25.0 -sell_value_min = 13 -sell_value_max = 31 -sell_value_curve = 0.85 diff --git a/fish/species/barracuda_great/barracuda_great.tres b/fish/species/barracuda_great/barracuda_great.tres deleted file mode 100644 index c2a105f..0000000 --- a/fish/species/barracuda_great/barracuda_great.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -require_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"barracuda_great" -display_name = "great barracuda" -active = false -catalog_number = 5804 -collection_group = &"Reef predators" -logbook_fact = "great barracudas hover motionless before accelerating toward prey. long jaws carry two distinct rows of sharp teeth." -allowed_water_types = 2 -rarity = 3 -base_catch_weight = 0.12 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 5.0 -weight_max_lb = 80.0 -sell_value_min = 28 -sell_value_max = 65 -sell_value_curve = 0.82 diff --git a/fish/species/barramundi/barramundi.tres b/fish/species/barramundi/barramundi.tres deleted file mode 100644 index afbd336..0000000 --- a/fish/species/barramundi/barramundi.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false -require_rain = true - -[resource] -script = ExtResource("1_fish_data") -id = &"barramundi" -display_name = "barramundi" -active = false -catalog_number = 7302 -collection_group = &"Tropical estuary" -logbook_fact = "barramundi move between rivers and coasts and can breathe in low-oxygen water. many mature first as males and later become females." -allowed_water_types = 3 -rarity = 2 -base_catch_weight = 0.24 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 2.0 -weight_max_lb = 45.0 -sell_value_min = 15 -sell_value_max = 38 -sell_value_curve = 0.84 diff --git a/fish/species/barreleye_pacific/barreleye_pacific.tres b/fish/species/barreleye_pacific/barreleye_pacific.tres deleted file mode 100644 index d784c35..0000000 --- a/fish/species/barreleye_pacific/barreleye_pacific.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false -require_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"barreleye_pacific" -display_name = "Pacific barreleye" -active = false -catalog_number = 1804 -collection_group = &"Deep-sea oddities" -logbook_fact = "pacific barreleyes peer upward through transparent shields covering the head. tubular eyes rotate forward when the fish turns to feed." -allowed_water_types = 2 -rarity = 4 -base_catch_weight = 0.045 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.2 -weight_max_lb = 2.5 -sell_value_min = 42 -sell_value_max = 88 -sell_value_curve = 0.9 diff --git a/fish/species/bass/bass.tres b/fish/species/bass/bass.tres index b263c3f..bc2b026 100644 --- a/fish/species/bass/bass.tres +++ b/fish/species/bass/bass.tres @@ -14,10 +14,6 @@ preferred_bait_weight_multiplier = 1.4 script = ExtResource("1_fish_data") id = &"bass" display_name = "striped bass" -active = true -catalog_number = 6701 -collection_group = &"Temperate coastal" -logbook_fact = "striped bass split their lives between salt and fresh water, returning upriver to spawn. a long-lived striper may see three decades." allowed_water_types = 2 rarity = 1 base_catch_weight = 4.0 diff --git a/fish/species/betta_siamese/betta_siamese.tres b/fish/species/betta_siamese/betta_siamese.tres deleted file mode 100644 index 06bbac6..0000000 --- a/fish/species/betta_siamese/betta_siamese.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -require_rain = true - -[resource] -script = ExtResource("1_fish_data") -id = &"betta_siamese" -display_name = "Siamese fighting fish" -active = false -catalog_number = 7508 -collection_group = &"Tropical freshwater fish" -logbook_fact = "siamese fighting fish breathe surface air with a labyrinth organ. males build bubble nests and guard the eggs beneath them." -allowed_water_types = 1 -rarity = 1 -base_catch_weight = 1.0 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.01 -weight_max_lb = 0.15 -sell_value_min = 5 -sell_value_max = 10 -sell_value_curve = 1.0 diff --git a/fish/species/black_drum/black_drum.tres b/fish/species/black_drum/black_drum.tres deleted file mode 100644 index 88a4ee2..0000000 --- a/fish/species/black_drum/black_drum.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false - -[resource] -script = ExtResource("1_fish_data") -id = &"black_drum" -display_name = "black drum" -active = false -catalog_number = 6802 -collection_group = &"Temperate estuary" -logbook_fact = "black drum crush oysters and crabs with rounded throat teeth. large adults develop dark vertical bars that fade with age." -allowed_water_types = 2 -rarity = 1 -base_catch_weight = 0.7 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 1.0 -weight_max_lb = 70.0 -sell_value_min = 8 -sell_value_max = 27 -sell_value_curve = 0.82 diff --git a/fish/species/blobfish_smooth_head/blobfish_smooth_head.tres b/fish/species/blobfish_smooth_head/blobfish_smooth_head.tres deleted file mode 100644 index 0117988..0000000 --- a/fish/species/blobfish_smooth_head/blobfish_smooth_head.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false -require_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"blobfish_smooth_head" -display_name = "smooth-head blobfish" -active = false -catalog_number = 1805 -collection_group = &"Deep-sea oddities" -logbook_fact = "smooth-head blobfish rest on deep slopes where pressure supports their soft bodies. they conserve energy by waiting for edible matter nearby." -allowed_water_types = 2 -rarity = 4 -base_catch_weight = 0.04 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.5 -weight_max_lb = 5.0 -sell_value_min = 42 -sell_value_max = 90 -sell_value_curve = 0.86 diff --git a/fish/species/bluefish/bluefish.tres b/fish/species/bluefish/bluefish.tres deleted file mode 100644 index 70288f5..0000000 --- a/fish/species/bluefish/bluefish.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"bluefish" -display_name = "bluefish" -active = false -catalog_number = 702 -collection_group = &"Coastal pelagic fish" -logbook_fact = "bluefish race in coordinated schools while pursuing smaller fish. sharp teeth and powerful jaws make their feeding bursts especially fierce." -allowed_water_types = 2 -rarity = 1 -base_catch_weight = 0.85 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.5 -weight_max_lb = 25.0 -sell_value_min = 7 -sell_value_max = 19 -sell_value_curve = 0.85 diff --git a/fish/species/bluegill/bluegill.tres b/fish/species/bluegill/bluegill.tres index 04c03d0..9e98a5b 100644 --- a/fish/species/bluegill/bluegill.tres +++ b/fish/species/bluegill/bluegill.tres @@ -9,10 +9,6 @@ script = ExtResource("1_fish_data") id = &"bluegill" display_name = "bluegill" -active = true -catalog_number = 3102 -collection_group = &"Freshwater panfish" -logbook_fact = "bluegill fathers sweep shallow bowls into the bottom for nests, then stand guard. whole neighborhoods of nests can crowd together." allowed_water_types = 1 rarity = 0 base_catch_weight = 10.0 diff --git a/fish/species/bonefish/bonefish.tres b/fish/species/bonefish/bonefish.tres deleted file mode 100644 index 0c0d6dd..0000000 --- a/fish/species/bonefish/bonefish.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -forbid_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"bonefish" -display_name = "bonefish" -active = false -catalog_number = 7401 -collection_group = &"Tropical flats fish" -logbook_fact = "bonefish sweep tropical flats in silvery schools and root for buried prey. their speed and pale bodies make them difficult to follow in shallow water." -allowed_water_types = 2 -rarity = 2 -base_catch_weight = 0.25 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.5 -weight_max_lb = 15.0 -sell_value_min = 13 -sell_value_max = 31 -sell_value_curve = 0.86 diff --git a/fish/species/bowfin/bowfin.tres b/fish/species/bowfin/bowfin.tres deleted file mode 100644 index 748197a..0000000 --- a/fish/species/bowfin/bowfin.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false -require_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"bowfin" -display_name = "bowfin" -active = false -catalog_number = 101 -collection_group = &"Ancient freshwater fish" -logbook_fact = "bowfin can gulp air at the surface when warm backwaters run low on oxygen. a long dorsal fin ripples as they stalk prey." -allowed_water_types = 1 -rarity = 2 -base_catch_weight = 0.28 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 1.0 -weight_max_lb = 20.0 -sell_value_min = 13 -sell_value_max = 30 -sell_value_curve = 0.85 diff --git a/fish/species/boxfish_yellow/boxfish_yellow.tres b/fish/species/boxfish_yellow/boxfish_yellow.tres deleted file mode 100644 index d701ada..0000000 --- a/fish/species/boxfish_yellow/boxfish_yellow.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"boxfish_yellow" -display_name = "yellow boxfish" -active = false -catalog_number = 5608 -collection_group = &"Reef oddities" -logbook_fact = "yellow boxfish juveniles are bright cubes covered in black spots. rigid body armor leaves small fins to provide careful steering." -allowed_water_types = 2 -rarity = 2 -base_catch_weight = 0.32 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.03 -weight_max_lb = 0.8 -sell_value_min = 10 -sell_value_max = 22 -sell_value_curve = 0.96 diff --git a/fish/species/bream_common/bream_common.tres b/fish/species/bream_common/bream_common.tres deleted file mode 100644 index 54ecc57..0000000 --- a/fish/species/bream_common/bream_common.tres +++ /dev/null @@ -1,27 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") - -[resource] -script = ExtResource("1_fish_data") -id = &"bream_common" -display_name = "common bream" -active = false -catalog_number = 2502 -collection_group = &"Freshwater coarse fish" -logbook_fact = "common bream gather in slow rivers and lakes with silvery, deep-sided bodies. protruding mouths sift insect larvae from soft bottoms." -allowed_water_types = 1 -rarity = 0 -base_catch_weight = 1.8 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.3 -weight_max_lb = 15.0 -sell_value_min = 4 -sell_value_max = 12 -sell_value_curve = 0.88 diff --git a/fish/species/buffalo_bigmouth/buffalo_bigmouth.tres b/fish/species/buffalo_bigmouth/buffalo_bigmouth.tres deleted file mode 100644 index 4053eb6..0000000 --- a/fish/species/buffalo_bigmouth/buffalo_bigmouth.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -require_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"buffalo_bigmouth" -display_name = "bigmouth buffalo" -active = false -catalog_number = 2301 -collection_group = &"Freshwater bottom fish" -logbook_fact = "bigmouth buffalo filter plankton with fine gill rakers instead of rooting for prey. some individuals survive for more than a century." -allowed_water_types = 1 -rarity = 3 -base_catch_weight = 0.12 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 8.0 -weight_max_lb = 80.0 -sell_value_min = 28 -sell_value_max = 63 -sell_value_curve = 0.82 diff --git a/fish/species/buffalo_smallmouth/buffalo_smallmouth.tres b/fish/species/buffalo_smallmouth/buffalo_smallmouth.tres deleted file mode 100644 index f0d2780..0000000 --- a/fish/species/buffalo_smallmouth/buffalo_smallmouth.tres +++ /dev/null @@ -1,27 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") - -[resource] -script = ExtResource("1_fish_data") -id = &"buffalo_smallmouth" -display_name = "smallmouth buffalo" -active = false -catalog_number = 2304 -collection_group = &"Freshwater bottom fish" -logbook_fact = "smallmouth buffalo use thick lips to graze bottom-dwelling food in warm rivers. their deep, heavy bodies form a pronounced arch behind the head." -allowed_water_types = 1 -rarity = 2 -base_catch_weight = 0.3 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 3.0 -weight_max_lb = 45.0 -sell_value_min = 14 -sell_value_max = 34 -sell_value_curve = 0.84 diff --git a/fish/species/bullhead_black/bullhead_black.tres b/fish/species/bullhead_black/bullhead_black.tres deleted file mode 100644 index 87f6155..0000000 --- a/fish/species/bullhead_black/bullhead_black.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false - -[resource] -script = ExtResource("1_fish_data") -id = &"bullhead_black" -display_name = "black bullhead" -active = false -catalog_number = 2401 -collection_group = &"Freshwater catfish" -logbook_fact = "black bullheads tolerate warm, cloudy water with little oxygen. stout spines protect the dorsal and pectoral fins from predators." -allowed_water_types = 1 -rarity = 1 -base_catch_weight = 1.0 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.3 -weight_max_lb = 6.0 -sell_value_min = 5 -sell_value_max = 11 -sell_value_curve = 0.92 diff --git a/fish/species/bullhead_brown/bullhead_brown.tres b/fish/species/bullhead_brown/bullhead_brown.tres deleted file mode 100644 index c900d5f..0000000 --- a/fish/species/bullhead_brown/bullhead_brown.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false - -[resource] -script = ExtResource("1_fish_data") -id = &"bullhead_brown" -display_name = "brown bullhead" -active = false -catalog_number = 2403 -collection_group = &"Freshwater catfish" -logbook_fact = "brown bullheads search muddy bottoms with eight sensitive barbels. males guard nests and herd newly hatched young in a dark moving ball." -allowed_water_types = 1 -rarity = 0 -base_catch_weight = 2.3 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.2 -weight_max_lb = 4.0 -sell_value_min = 3 -sell_value_max = 7 -sell_value_curve = 0.95 diff --git a/fish/species/bullhead_yellow/bullhead_yellow.tres b/fish/species/bullhead_yellow/bullhead_yellow.tres deleted file mode 100644 index e2b5d63..0000000 --- a/fish/species/bullhead_yellow/bullhead_yellow.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false -require_rain = true - -[resource] -script = ExtResource("1_fish_data") -id = &"bullhead_yellow" -display_name = "yellow bullhead" -active = false -catalog_number = 2408 -collection_group = &"Freshwater catfish" -logbook_fact = "yellow bullheads use pale chin barbels to distinguish food in murky shallows. both parents may guard the nest and schooling young." -allowed_water_types = 1 -rarity = 0 -base_catch_weight = 2.0 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.2 -weight_max_lb = 3.5 -sell_value_min = 3 -sell_value_max = 7 -sell_value_curve = 0.95 diff --git a/fish/species/burbot/burbot.tres b/fish/species/burbot/burbot.tres deleted file mode 100644 index 25e9277..0000000 --- a/fish/species/burbot/burbot.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false -require_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"burbot" -display_name = "burbot" -active = false -catalog_number = 1001 -collection_group = &"Cold freshwater fish" -logbook_fact = "burbot are the only freshwater members of the cod family. they become most active in cold darkness and may spawn beneath winter ice." -allowed_water_types = 1 -rarity = 2 -base_catch_weight = 0.24 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.5 -weight_max_lb = 18.0 -sell_value_min = 12 -sell_value_max = 28 -sell_value_curve = 0.86 diff --git a/fish/species/butterflyfish_copperband/butterflyfish_copperband.tres b/fish/species/butterflyfish_copperband/butterflyfish_copperband.tres deleted file mode 100644 index e9a3385..0000000 --- a/fish/species/butterflyfish_copperband/butterflyfish_copperband.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -forbid_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"butterflyfish_copperband" -display_name = "copperband butterflyfish" -active = false -catalog_number = 5701 -collection_group = &"Reef ornamentals" -logbook_fact = "copperband butterflyfish probe reef cracks with long narrow snouts. bold orange bands and a false eyespot confuse predators." -allowed_water_types = 2 -rarity = 2 -base_catch_weight = 0.32 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.03 -weight_max_lb = 0.4 -sell_value_min = 9 -sell_value_max = 21 -sell_value_curve = 0.98 diff --git a/fish/species/capelin/capelin.tres b/fish/species/capelin/capelin.tres deleted file mode 100644 index 0e5f25b..0000000 --- a/fish/species/capelin/capelin.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -require_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"capelin" -display_name = "capelin" -active = false -catalog_number = 1302 -collection_group = &"Cold schooling fish" -logbook_fact = "capelin are small polar fish that feed whales, seabirds, and larger fish. many schools roll onto beaches or shallows to release their eggs." -allowed_water_types = 2 -rarity = 1 -base_catch_weight = 1.0 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.03 -weight_max_lb = 0.2 -sell_value_min = 4 -sell_value_max = 8 -sell_value_curve = 1.0 diff --git a/fish/species/carp/carp.tres b/fish/species/carp/carp.tres index 4bcdb6c..5673834 100644 --- a/fish/species/carp/carp.tres +++ b/fish/species/carp/carp.tres @@ -14,10 +14,6 @@ preferred_bait_weight_multiplier = 1.5 script = ExtResource("1_fish_data") id = &"carp" display_name = "common carp" -active = true -catalog_number = 2503 -collection_group = &"Freshwater coarse fish" -logbook_fact = "whisker-like barbels help a common carp investigate the bottom. nosing through sediment can cloud the water and loosen plants." allowed_water_types = 1 rarity = 2 base_catch_weight = 1.5 diff --git a/fish/species/catfish_blue/catfish_blue.tres b/fish/species/catfish_blue/catfish_blue.tres index 98fda16..482520a 100644 --- a/fish/species/catfish_blue/catfish_blue.tres +++ b/fish/species/catfish_blue/catfish_blue.tres @@ -16,10 +16,6 @@ preferred_bait_weight_multiplier = 1.35 script = ExtResource("1_fish_data") id = &"catfish_blue" display_name = "blue catfish" -active = true -catalog_number = 2402 -collection_group = &"Freshwater catfish" -logbook_fact = "a deep fork in the tail inspired the blue catfish's scientific name. it rests deep by daylight and becomes more active after dark." allowed_water_types = 1 rarity = 1 base_catch_weight = 1.25 diff --git a/fish/species/catfish_channel/catfish_channel.tres b/fish/species/catfish_channel/catfish_channel.tres index 69aff97..265daad 100644 --- a/fish/species/catfish_channel/catfish_channel.tres +++ b/fish/species/catfish_channel/catfish_channel.tres @@ -16,10 +16,6 @@ preferred_bait_weight_multiplier = 1.35 script = ExtResource("1_fish_data") id = &"catfish_channel" display_name = "channel catfish" -active = true -catalog_number = 2404 -collection_group = &"Freshwater catfish" -logbook_fact = "a channel catfish can taste through skin all over its body, especially near its gills and whiskers. the male watches the eggs." allowed_water_types = 1 base_catch_weight = 2.0 catch_profile = ExtResource("2_profile") diff --git a/fish/species/catfish_flathead/catfish_flathead.tres b/fish/species/catfish_flathead/catfish_flathead.tres index 84a6f01..651359a 100644 --- a/fish/species/catfish_flathead/catfish_flathead.tres +++ b/fish/species/catfish_flathead/catfish_flathead.tres @@ -16,10 +16,6 @@ preferred_bait_weight_multiplier = 1.35 script = ExtResource("1_fish_data") id = &"catfish_flathead" display_name = "flathead catfish" -active = true -catalog_number = 2405 -collection_group = &"Freshwater catfish" -logbook_fact = "flatheads favor hideouts made by logs, rocks, ledges, and other underwater structure. as they grow, fish dominate their menu." allowed_water_types = 1 rarity = 1 catch_profile = ExtResource("2_profile") diff --git a/fish/species/catfish_walking/catfish_walking.tres b/fish/species/catfish_walking/catfish_walking.tres deleted file mode 100644 index 7b8dbf4..0000000 --- a/fish/species/catfish_walking/catfish_walking.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false -require_rain = true - -[resource] -script = ExtResource("1_fish_data") -id = &"catfish_walking" -display_name = "walking catfish" -active = false -catalog_number = 7510 -collection_group = &"Tropical freshwater fish" -logbook_fact = "walking catfish wriggle across wet ground using stiff pectoral spines for support. an air-breathing organ helps them survive the journey." -allowed_water_types = 1 -rarity = 2 -base_catch_weight = 0.3 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.5 -weight_max_lb = 5.0 -sell_value_min = 11 -sell_value_max = 24 -sell_value_curve = 0.9 diff --git a/fish/species/catfish_white/catfish_white.tres b/fish/species/catfish_white/catfish_white.tres index e5cc545..6ee72ea 100644 --- a/fish/species/catfish_white/catfish_white.tres +++ b/fish/species/catfish_white/catfish_white.tres @@ -16,10 +16,6 @@ preferred_bait_weight_multiplier = 1.35 script = ExtResource("1_fish_data") id = &"catfish_white" display_name = "white catfish" -active = true -catalog_number = 2407 -collection_group = &"Freshwater catfish" -logbook_fact = "white catfish began along the atlantic coast between new york and florida. people later carried them far beyond that home range." allowed_water_types = 1 base_catch_weight = 2.0 catch_profile = ExtResource("2_profile") diff --git a/fish/species/char_arctic/char_arctic.tres b/fish/species/char_arctic/char_arctic.tres deleted file mode 100644 index cb47137..0000000 --- a/fish/species/char_arctic/char_arctic.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -forbid_rain = true - -[resource] -script = ExtResource("1_fish_data") -id = &"char_arctic" -display_name = "arctic char" -active = false -catalog_number = 1101 -collection_group = &"Cold freshwater salmonids" -logbook_fact = "arctic char thrive farther north than any other freshwater fish. some remain in lakes while others migrate between rivers and the sea." -allowed_water_types = 3 -rarity = 2 -base_catch_weight = 0.3 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 1.0 -weight_max_lb = 25.0 -sell_value_min = 14 -sell_value_max = 32 -sell_value_curve = 0.86 diff --git a/fish/species/chromis_blue_green/chromis_blue_green.tres b/fish/species/chromis_blue_green/chromis_blue_green.tres deleted file mode 100644 index e02ded5..0000000 --- a/fish/species/chromis_blue_green/chromis_blue_green.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"chromis_blue_green" -display_name = "blue-green chromis" -active = false -catalog_number = 5901 -collection_group = &"Reef schooling fish" -logbook_fact = "blue-green chromis form loose clouds above branching coral. the school dives into narrow shelter whenever a predator approaches." -allowed_water_types = 2 -rarity = 0 -base_catch_weight = 2.8 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.01 -weight_max_lb = 0.25 -sell_value_min = 2 -sell_value_max = 4 -sell_value_curve = 1.0 diff --git a/fish/species/chub_creek/chub_creek.tres b/fish/species/chub_creek/chub_creek.tres deleted file mode 100644 index e2bda01..0000000 --- a/fish/species/chub_creek/chub_creek.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"chub_creek" -display_name = "creek chub" -active = false -catalog_number = 2802 -collection_group = &"Freshwater minnows" -logbook_fact = "creek chubs gather around pools and undercut banks in small streams. males build gravel ridges where several fish may spawn." -allowed_water_types = 1 -rarity = 0 -base_catch_weight = 3.2 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.05 -weight_max_lb = 0.8 -sell_value_min = 2 -sell_value_max = 4 -sell_value_curve = 1.0 diff --git a/fish/species/chub_european/chub_european.tres b/fish/species/chub_european/chub_european.tres index aeed2b7..e282b90 100644 --- a/fish/species/chub_european/chub_european.tres +++ b/fish/species/chub_european/chub_european.tres @@ -13,10 +13,6 @@ allowed_location_tags = Array[StringName]([&"starter_pond"]) script = ExtResource("1_fish_data") id = &"chub_european" display_name = "european chub" -active = true -catalog_number = 2505 -collection_group = &"Freshwater coarse fish" -logbook_fact = "european chub are adaptable river fish. adults often patrol shallows and feed on insects, small fish, and fruit." allowed_water_types = 1 base_catch_weight = 0.55 catch_profile = ExtResource("2_profile") diff --git a/fish/species/chub_flame/chub_flame.tres b/fish/species/chub_flame/chub_flame.tres index 4ca30fe..d631ab0 100644 --- a/fish/species/chub_flame/chub_flame.tres +++ b/fish/species/chub_flame/chub_flame.tres @@ -13,10 +13,6 @@ allowed_location_tags = Array[StringName]([&"starter_pond"]) script = ExtResource("1_fish_data") id = &"chub_flame" display_name = "flame chub" -active = true -catalog_number = 2805 -collection_group = &"Freshwater minnows" -logbook_fact = "flame chubs prefer cool, clear streams. their bright breeding colors make a small fish easy to spot in spring water." allowed_water_types = 1 rarity = 1 base_catch_weight = 0.4 diff --git a/fish/species/chub_lake/chub_lake.tres b/fish/species/chub_lake/chub_lake.tres index 8b8927f..c04c5b3 100644 --- a/fish/species/chub_lake/chub_lake.tres +++ b/fish/species/chub_lake/chub_lake.tres @@ -13,10 +13,6 @@ allowed_location_tags = Array[StringName]([&"starter_pond"]) script = ExtResource("1_fish_data") id = &"chub_lake" display_name = "lake chub" -active = true -catalog_number = 2807 -collection_group = &"Freshwater minnows" -logbook_fact = "lake chubs school in cold northern water and use their small mouths to pick insects and other tiny prey from the current." allowed_water_types = 1 base_catch_weight = 0.55 catch_profile = ExtResource("2_profile") diff --git a/fish/species/cisco/cisco.tres b/fish/species/cisco/cisco.tres deleted file mode 100644 index 694a9ec..0000000 --- a/fish/species/cisco/cisco.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"cisco" -display_name = "cisco" -active = false -catalog_number = 1002 -collection_group = &"Cold freshwater fish" -logbook_fact = "cisco school in the cool open water of northern lakes. these slim relatives of salmon feed on plankton and become prey for larger fish." -allowed_water_types = 1 -rarity = 0 -base_catch_weight = 2.2 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.1 -weight_max_lb = 3.0 -sell_value_min = 3 -sell_value_max = 7 -sell_value_curve = 0.95 diff --git a/fish/species/clam_geoduck/clam_geoduck.tres b/fish/species/clam_geoduck/clam_geoduck.tres deleted file mode 100644 index 82c8eac..0000000 --- a/fish/species/clam_geoduck/clam_geoduck.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -require_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"clam_geoduck" -display_name = "Pacific geoduck" -active = false -catalog_number = 6403 -collection_group = &"Shellfish" -logbook_fact = "pacific geoducks bury their shells deep while a long siphon reaches the seafloor. these clams can survive for well over a century." -allowed_water_types = 2 -rarity = 2 -base_catch_weight = 0.25 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.5 -weight_max_lb = 15.0 -sell_value_min = 14 -sell_value_max = 34 -sell_value_curve = 0.88 diff --git a/fish/species/clam_giant/clam_giant.tres b/fish/species/clam_giant/clam_giant.tres deleted file mode 100644 index d56f410..0000000 --- a/fish/species/clam_giant/clam_giant.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -forbid_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"clam_giant" -display_name = "giant clam" -active = false -catalog_number = 6402 -collection_group = &"Shellfish" -logbook_fact = "giant clams host photosynthetic algae inside brightly colored mantles. heavy shells remain anchored to one reef spot throughout adulthood." -allowed_water_types = 2 -rarity = 3 -base_catch_weight = 0.1 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 5.0 -weight_max_lb = 500.0 -sell_value_min = 28 -sell_value_max = 72 -sell_value_curve = 0.8 diff --git a/fish/species/clownfish_ocellaris/clownfish_ocellaris.tres b/fish/species/clownfish_ocellaris/clownfish_ocellaris.tres deleted file mode 100644 index b09dbdb..0000000 --- a/fish/species/clownfish_ocellaris/clownfish_ocellaris.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"clownfish_ocellaris" -display_name = "ocellaris clownfish" -active = false -catalog_number = 5702 -collection_group = &"Reef ornamentals" -logbook_fact = "ocellaris clownfish shelter safely among stinging anemone tentacles. each group is led by a female that develops from the largest male." -allowed_water_types = 2 -rarity = 1 -base_catch_weight = 1.0 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.01 -weight_max_lb = 0.15 -sell_value_min = 5 -sell_value_max = 10 -sell_value_curve = 1.0 diff --git a/fish/species/cobia/cobia.tres b/fish/species/cobia/cobia.tres deleted file mode 100644 index 885f55a..0000000 --- a/fish/species/cobia/cobia.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"cobia" -display_name = "cobia" -active = false -catalog_number = 3602 -collection_group = &"Large coastal predators" -logbook_fact = "cobia often follow sharks, rays, and floating structures in warm seas. a broad dark stripe runs along their long, powerful bodies." -allowed_water_types = 2 -rarity = 2 -base_catch_weight = 0.24 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 5.0 -weight_max_lb = 80.0 -sell_value_min = 15 -sell_value_max = 40 -sell_value_curve = 0.82 diff --git a/fish/species/cod_atlantic/cod_atlantic.tres b/fish/species/cod_atlantic/cod_atlantic.tres deleted file mode 100644 index 22ee1ca..0000000 --- a/fish/species/cod_atlantic/cod_atlantic.tres +++ /dev/null @@ -1,27 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") - -[resource] -script = ExtResource("1_fish_data") -id = &"cod_atlantic" -display_name = "atlantic cod" -active = false -catalog_number = 1402 -collection_group = &"Cold shelf fish" -logbook_fact = "atlantic cod carry a pale lateral line and one chin barbel. they search cold seafloors for crustaceans, mollusks, and smaller fish." -allowed_water_types = 2 -rarity = 0 -base_catch_weight = 1.8 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 1.0 -weight_max_lb = 55.0 -sell_value_min = 5 -sell_value_max = 18 -sell_value_curve = 0.85 diff --git a/fish/species/cod_pacific/cod_pacific.tres b/fish/species/cod_pacific/cod_pacific.tres deleted file mode 100644 index 7f0b8ce..0000000 --- a/fish/species/cod_pacific/cod_pacific.tres +++ /dev/null @@ -1,27 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") - -[resource] -script = ExtResource("1_fish_data") -id = &"cod_pacific" -display_name = "pacific cod" -active = false -catalog_number = 1406 -collection_group = &"Cold shelf fish" -logbook_fact = "pacific cod use a chin barbel to investigate cold shelf bottoms. seasonal schools follow prey between deeper water and coastal spawning grounds." -allowed_water_types = 2 -rarity = 0 -base_catch_weight = 1.8 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 1.0 -weight_max_lb = 45.0 -sell_value_min = 5 -sell_value_max = 17 -sell_value_curve = 0.85 diff --git a/fish/species/coelacanth_west_indian/coelacanth_west_indian.tres b/fish/species/coelacanth_west_indian/coelacanth_west_indian.tres deleted file mode 100644 index fafc161..0000000 --- a/fish/species/coelacanth_west_indian/coelacanth_west_indian.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false -require_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"coelacanth_west_indian" -display_name = "West Indian Ocean coelacanth" -active = false -catalog_number = 1702 -collection_group = &"Deep-sea legends" -logbook_fact = "west indian ocean coelacanths shelter in deep volcanic caves by day. fleshy lobed fins move in an alternating, limb-like rhythm." -allowed_water_types = 2 -rarity = 4 -base_catch_weight = 0.03 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 20.0 -weight_max_lb = 200.0 -sell_value_min = 65 -sell_value_max = 145 -sell_value_curve = 0.8 diff --git a/fish/species/conch_queen/conch_queen.tres b/fish/species/conch_queen/conch_queen.tres deleted file mode 100644 index 0868ddf..0000000 --- a/fish/species/conch_queen/conch_queen.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -forbid_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"conch_queen" -display_name = "queen conch" -active = false -catalog_number = 6404 -collection_group = &"Shellfish" -logbook_fact = "queen conchs graze algae with a long flexible snout. adults develop a broad flared shell lip and move by vaulting on one muscular foot." -allowed_water_types = 2 -rarity = 2 -base_catch_weight = 0.24 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 1.0 -weight_max_lb = 5.0 -sell_value_min = 15 -sell_value_max = 36 -sell_value_curve = 0.91 diff --git a/fish/species/cornetfish_red/cornetfish_red.tres b/fish/species/cornetfish_red/cornetfish_red.tres deleted file mode 100644 index fe4fbc9..0000000 --- a/fish/species/cornetfish_red/cornetfish_red.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -require_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"cornetfish_red" -display_name = "red cornetfish" -active = false -catalog_number = 5606 -collection_group = &"Reef oddities" -logbook_fact = "red cornetfish stalk reefs with extremely long bodies and tubular snouts. a trailing filament extends from the center of the tail." -allowed_water_types = 2 -rarity = 3 -base_catch_weight = 0.11 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.2 -weight_max_lb = 4.0 -sell_value_min = 24 -sell_value_max = 55 -sell_value_curve = 0.92 diff --git a/fish/species/cowfish_longhorn/cowfish_longhorn.tres b/fish/species/cowfish_longhorn/cowfish_longhorn.tres deleted file mode 100644 index 2f647cc..0000000 --- a/fish/species/cowfish_longhorn/cowfish_longhorn.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -require_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"cowfish_longhorn" -display_name = "longhorn cowfish" -active = false -catalog_number = 5604 -collection_group = &"Reef oddities" -logbook_fact = "longhorn cowfish wear a rigid box of fused scales with horns above the eyes. small fins steer the angular body with surprising precision." -allowed_water_types = 2 -rarity = 3 -base_catch_weight = 0.13 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.1 -weight_max_lb = 2.0 -sell_value_min = 23 -sell_value_max = 52 -sell_value_curve = 0.94 diff --git a/fish/species/crab_blue/crab_blue.tres b/fish/species/crab_blue/crab_blue.tres deleted file mode 100644 index 2248f78..0000000 --- a/fish/species/crab_blue/crab_blue.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"crab_blue" -display_name = "blue crab" -active = false -catalog_number = 3902 -collection_group = &"Marine crabs" -logbook_fact = "blue crabs swim with flattened rear legs shaped like paddles. bright blue claws and an olive shell conceal a quick, defensive temperament." -allowed_water_types = 2 -rarity = 0 -base_catch_weight = 1.15 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.1 -weight_max_lb = 1.1 -sell_value_min = 3 -sell_value_max = 8 -sell_value_curve = 0.95 diff --git a/fish/species/crab_dungeness/crab_dungeness.tres b/fish/species/crab_dungeness/crab_dungeness.tres deleted file mode 100644 index 6a75ee3..0000000 --- a/fish/species/crab_dungeness/crab_dungeness.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -require_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"crab_dungeness" -display_name = "Dungeness crab" -active = false -catalog_number = 3903 -collection_group = &"Marine crabs" -logbook_fact = "dungeness crabs bury beneath sand with only their eyes and antennae exposed. broad toothed shells protect them along cool pacific coasts." -allowed_water_types = 2 -rarity = 1 -base_catch_weight = 0.65 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.5 -weight_max_lb = 3.0 -sell_value_min = 6 -sell_value_max = 14 -sell_value_curve = 0.92 diff --git a/fish/species/crab_ghost/crab_ghost.tres b/fish/species/crab_ghost/crab_ghost.tres deleted file mode 100644 index 5713645..0000000 --- a/fish/species/crab_ghost/crab_ghost.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false -forbid_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"crab_ghost" -display_name = "Atlantic ghost crab" -active = false -catalog_number = 3901 -collection_group = &"Marine crabs" -logbook_fact = "atlantic ghost crabs dash across beaches on long pale legs and retreat into deep burrows. raised eyes scan nearly every direction." -allowed_water_types = 2 -rarity = 2 -base_catch_weight = 0.28 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.02 -weight_max_lb = 0.5 -sell_value_min = 11 -sell_value_max = 24 -sell_value_curve = 0.97 diff --git a/fish/species/crab_japanese_spider/crab_japanese_spider.tres b/fish/species/crab_japanese_spider/crab_japanese_spider.tres deleted file mode 100644 index e045021..0000000 --- a/fish/species/crab_japanese_spider/crab_japanese_spider.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false - -[resource] -script = ExtResource("1_fish_data") -id = &"crab_japanese_spider" -display_name = "Japanese spider crab" -active = false -catalog_number = 3904 -collection_group = &"Marine crabs" -logbook_fact = "japanese spider crabs carry the longest leg span of any living arthropod. adults roam deep seafloors around japan." -allowed_water_types = 2 -rarity = 4 -base_catch_weight = 0.045 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 5.0 -weight_max_lb = 44.0 -sell_value_min = 38 -sell_value_max = 88 -sell_value_curve = 0.84 diff --git a/fish/species/crab_red_king/crab_red_king.tres b/fish/species/crab_red_king/crab_red_king.tres deleted file mode 100644 index d0b8a74..0000000 --- a/fish/species/crab_red_king/crab_red_king.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false -require_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"crab_red_king" -display_name = "red king crab" -active = false -catalog_number = 3905 -collection_group = &"Marine crabs" -logbook_fact = "red king crabs stride over cold northern bottoms on long armored legs. despite the name, they are closer to hermit crabs than true crabs." -allowed_water_types = 2 -rarity = 3 -base_catch_weight = 0.11 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 2.0 -weight_max_lb = 24.0 -sell_value_min = 24 -sell_value_max = 58 -sell_value_curve = 0.85 diff --git a/fish/species/crappie_black/crappie_black.tres b/fish/species/crappie_black/crappie_black.tres deleted file mode 100644 index ba6956e..0000000 --- a/fish/species/crappie_black/crappie_black.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -require_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"crappie_black" -display_name = "black crappie" -active = false -catalog_number = 3101 -collection_group = &"Freshwater panfish" -logbook_fact = "black crappie gather around submerged wood and vegetation in clear water. irregular dark speckles scatter across their deep silver bodies." -allowed_water_types = 1 -rarity = 1 -base_catch_weight = 1.0 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.2 -weight_max_lb = 4.0 -sell_value_min = 5 -sell_value_max = 11 -sell_value_curve = 0.9 diff --git a/fish/species/crappie_white/crappie_white.tres b/fish/species/crappie_white/crappie_white.tres deleted file mode 100644 index 85c22b0..0000000 --- a/fish/species/crappie_white/crappie_white.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false - -[resource] -script = ExtResource("1_fish_data") -id = &"crappie_white" -display_name = "white crappie" -active = false -catalog_number = 3107 -collection_group = &"Freshwater panfish" -logbook_fact = "white crappie favor warm, cloudy water and gather around structure. vertical bars cross their silver sides instead of scattered speckles." -allowed_water_types = 1 -rarity = 0 -base_catch_weight = 1.7 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.2 -weight_max_lb = 4.5 -sell_value_min = 4 -sell_value_max = 9 -sell_value_curve = 0.9 diff --git a/fish/species/crayfish_red_swamp/crayfish_red_swamp.tres b/fish/species/crayfish_red_swamp/crayfish_red_swamp.tres deleted file mode 100644 index cd9d6a0..0000000 --- a/fish/species/crayfish_red_swamp/crayfish_red_swamp.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false -require_rain = true - -[resource] -script = ExtResource("1_fish_data") -id = &"crayfish_red_swamp" -display_name = "red swamp crayfish" -active = false -catalog_number = 2601 -collection_group = &"Freshwater crustaceans" -logbook_fact = "red swamp crayfish burrow into wet ground when water recedes. adaptable populations feed on plants, carrion, and small aquatic animals." -allowed_water_types = 1 -rarity = 0 -base_catch_weight = 1.1 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.03 -weight_max_lb = 0.25 -sell_value_min = 3 -sell_value_max = 7 -sell_value_curve = 0.98 diff --git a/fish/species/croaker_atlantic/croaker_atlantic.tres b/fish/species/croaker_atlantic/croaker_atlantic.tres deleted file mode 100644 index 2f4df70..0000000 --- a/fish/species/croaker_atlantic/croaker_atlantic.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false -require_rain = true - -[resource] -script = ExtResource("1_fish_data") -id = &"croaker_atlantic" -display_name = "atlantic croaker" -active = false -catalog_number = 6801 -collection_group = &"Temperate estuary" -logbook_fact = "atlantic croakers vibrate muscles against the swim bladder to make a croaking sound. chin barbels locate worms in sandy bays." -allowed_water_types = 2 -rarity = 0 -base_catch_weight = 2.1 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.1 -weight_max_lb = 5.0 -sell_value_min = 3 -sell_value_max = 8 -sell_value_curve = 0.92 diff --git a/fish/species/croaker_yellowfin/croaker_yellowfin.tres b/fish/species/croaker_yellowfin/croaker_yellowfin.tres deleted file mode 100644 index ed5410d..0000000 --- a/fish/species/croaker_yellowfin/croaker_yellowfin.tres +++ /dev/null @@ -1,27 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") - -[resource] -script = ExtResource("1_fish_data") -id = &"croaker_yellowfin" -display_name = "yellowfin croaker" -active = false -catalog_number = 6807 -collection_group = &"Temperate estuary" -logbook_fact = "yellowfin croakers search sandy surf zones with a small chin barbel. internal muscles produce croaks and drumming calls." -allowed_water_types = 2 -rarity = 0 -base_catch_weight = 2.0 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.1 -weight_max_lb = 4.0 -sell_value_min = 3 -sell_value_max = 8 -sell_value_curve = 0.92 diff --git a/fish/species/cusk/cusk.tres b/fish/species/cusk/cusk.tres deleted file mode 100644 index c43b1b7..0000000 --- a/fish/species/cusk/cusk.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false - -[resource] -script = ExtResource("1_fish_data") -id = &"cusk" -display_name = "cusk" -active = false -catalog_number = 1202 -collection_group = &"Cold reef fish" -logbook_fact = "cusk move slowly across cold rocky bottoms, sheltering in cracks and caves. a single long fin runs around much of the rear body." -allowed_water_types = 2 -rarity = 1 -base_catch_weight = 0.75 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.5 -weight_max_lb = 30.0 -sell_value_min = 7 -sell_value_max = 19 -sell_value_curve = 0.85 diff --git a/fish/species/cuttlefish_common/cuttlefish_common.tres b/fish/species/cuttlefish_common/cuttlefish_common.tres deleted file mode 100644 index 98ec8a0..0000000 --- a/fish/species/cuttlefish_common/cuttlefish_common.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"cuttlefish_common" -display_name = "common cuttlefish" -active = false -catalog_number = 1502 -collection_group = &"Cuttlefish and nautiluses" -logbook_fact = "common cuttlefish flash changing colors and patterns through specialized skin cells. an internal cuttlebone controls buoyancy." -allowed_water_types = 2 -rarity = 1 -base_catch_weight = 0.55 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.2 -weight_max_lb = 12.0 -sell_value_min = 7 -sell_value_max = 17 -sell_value_curve = 0.9 diff --git a/fish/species/cuttlefish_flamboyant/cuttlefish_flamboyant.tres b/fish/species/cuttlefish_flamboyant/cuttlefish_flamboyant.tres deleted file mode 100644 index 4c19554..0000000 --- a/fish/species/cuttlefish_flamboyant/cuttlefish_flamboyant.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -require_rain = true - -[resource] -script = ExtResource("1_fish_data") -id = &"cuttlefish_flamboyant" -display_name = "flamboyant cuttlefish" -active = false -catalog_number = 1503 -collection_group = &"Cuttlefish and nautiluses" -logbook_fact = "flamboyant cuttlefish walk along the seafloor on their arms and fins. vivid displays warn predators of potent toxins." -allowed_water_types = 2 -rarity = 3 -base_catch_weight = 0.1 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.05 -weight_max_lb = 0.4 -sell_value_min = 26 -sell_value_max = 58 -sell_value_curve = 0.96 diff --git a/fish/species/damselfish_sergeant_major/damselfish_sergeant_major.tres b/fish/species/damselfish_sergeant_major/damselfish_sergeant_major.tres deleted file mode 100644 index 24260cf..0000000 --- a/fish/species/damselfish_sergeant_major/damselfish_sergeant_major.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"damselfish_sergeant_major" -display_name = "sergeant major" -active = false -catalog_number = 5904 -collection_group = &"Reef schooling fish" -logbook_fact = "sergeant majors guard purple egg patches on hard reef surfaces. five dark bars cross their yellow and silver bodies." -allowed_water_types = 2 -rarity = 0 -base_catch_weight = 2.5 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.02 -weight_max_lb = 0.5 -sell_value_min = 2 -sell_value_max = 5 -sell_value_curve = 0.98 diff --git a/fish/species/danio_zebra/danio_zebra.tres b/fish/species/danio_zebra/danio_zebra.tres deleted file mode 100644 index 72567d8..0000000 --- a/fish/species/danio_zebra/danio_zebra.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"danio_zebra" -display_name = "zebrafish" -active = false -catalog_number = 2103 -collection_group = &"Freshwater aquarium fish" -logbook_fact = "zebrafish carry horizontal blue stripes from gill to tail. hardy schools thrive in shallow streams, flooded fields, and quiet pools." -allowed_water_types = 1 -rarity = 0 -base_catch_weight = 1.35 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.01 -weight_max_lb = 0.12 -sell_value_min = 2 -sell_value_max = 5 -sell_value_curve = 0.98 diff --git a/fish/species/discus/discus.tres b/fish/species/discus/discus.tres deleted file mode 100644 index 4b84820..0000000 --- a/fish/species/discus/discus.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -require_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"discus" -display_name = "discus" -active = false -catalog_number = 7503 -collection_group = &"Tropical freshwater fish" -logbook_fact = "discus move through quiet amazon backwaters with round, flattened bodies. parents feed newly hatched young with nutrient-rich skin mucus." -allowed_water_types = 1 -rarity = 3 -base_catch_weight = 0.12 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.1 -weight_max_lb = 1.0 -sell_value_min = 24 -sell_value_max = 52 -sell_value_curve = 0.92 diff --git a/fish/species/dolphin_bottlenose/dolphin_bottlenose.tres b/fish/species/dolphin_bottlenose/dolphin_bottlenose.tres deleted file mode 100644 index 8d07e73..0000000 --- a/fish/species/dolphin_bottlenose/dolphin_bottlenose.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -forbid_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"dolphin_bottlenose" -display_name = "common bottlenose dolphin" -active = false -catalog_number = 7702 -collection_group = &"Whales and dolphins" -logbook_fact = "common bottlenose dolphins coordinate with whistles, clicks, and body signals. echolocation reveals prey hidden in dark or cloudy water." -allowed_water_types = 2 -rarity = 4 -base_catch_weight = 0.012 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 330.0 -weight_max_lb = 1400.0 -sell_value_min = 75 -sell_value_max = 180 -sell_value_curve = 0.76 diff --git a/fish/species/dorado_golden/dorado_golden.tres b/fish/species/dorado_golden/dorado_golden.tres deleted file mode 100644 index c5f7abf..0000000 --- a/fish/species/dorado_golden/dorado_golden.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -require_rain = true - -[resource] -script = ExtResource("1_fish_data") -id = &"dorado_golden" -display_name = "golden dorado" -active = false -catalog_number = 7602 -collection_group = &"Tropical freshwater predators" -logbook_fact = "golden dorado chase fish through powerful south american rivers. muscular tails, heavy jaws, and golden scales suit life in fast current." -allowed_water_types = 1 -rarity = 3 -base_catch_weight = 0.1 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 5.0 -weight_max_lb = 55.0 -sell_value_min = 29 -sell_value_max = 66 -sell_value_curve = 0.82 diff --git a/fish/species/dugong/dugong.tres b/fish/species/dugong/dugong.tres deleted file mode 100644 index d6c756d..0000000 --- a/fish/species/dugong/dugong.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -forbid_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"dugong" -display_name = "dugong" -active = false -catalog_number = 501 -collection_group = &"Coastal marine mammals" -logbook_fact = "dugongs graze seagrass meadows with a downturned, bristled snout. they are the only fully marine members of the sirenian family." -allowed_water_types = 2 -rarity = 4 -base_catch_weight = 0.011 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 500.0 -weight_max_lb = 1100.0 -sell_value_min = 72 -sell_value_max = 165 -sell_value_curve = 0.77 diff --git a/fish/species/eel_american/eel_american.tres b/fish/species/eel_american/eel_american.tres deleted file mode 100644 index 54a671b..0000000 --- a/fish/species/eel_american/eel_american.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false -require_rain = true - -[resource] -script = ExtResource("1_fish_data") -id = &"eel_american" -display_name = "american eel" -active = false -catalog_number = 4001 -collection_group = &"Migratory eels" -logbook_fact = "american eels hatch far out in the sargasso sea before entering freshwater rivers. adults later reverse the journey to spawn once." -allowed_water_types = 3 -rarity = 2 -base_catch_weight = 0.25 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.3 -weight_max_lb = 8.0 -sell_value_min = 12 -sell_value_max = 27 -sell_value_curve = 0.88 diff --git a/fish/species/eel_european/eel_european.tres b/fish/species/eel_european/eel_european.tres deleted file mode 100644 index 54a0c61..0000000 --- a/fish/species/eel_european/eel_european.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false -require_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"eel_european" -display_name = "european eel" -active = false -catalog_number = 4002 -collection_group = &"Migratory eels" -logbook_fact = "european eels cross the atlantic as transparent larvae before entering rivers and lakes. mature silver eels return to sea to reproduce." -allowed_water_types = 3 -rarity = 2 -base_catch_weight = 0.2 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.3 -weight_max_lb = 10.0 -sell_value_min = 13 -sell_value_max = 30 -sell_value_curve = 0.88 diff --git a/fish/species/electric_eel/electric_eel.tres b/fish/species/electric_eel/electric_eel.tres deleted file mode 100644 index cc63eea..0000000 --- a/fish/species/electric_eel/electric_eel.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false -require_rain = true - -[resource] -script = ExtResource("1_fish_data") -id = &"electric_eel" -display_name = "electric eel" -active = false -catalog_number = 2901 -collection_group = &"Freshwater oddities" -logbook_fact = "electric eels navigate and hunt with electrical pulses produced along most of the body. they must surface regularly to breathe air." -allowed_water_types = 1 -rarity = 3 -base_catch_weight = 0.1 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 1.0 -weight_max_lb = 44.0 -sell_value_min = 25 -sell_value_max = 60 -sell_value_curve = 0.82 diff --git a/fish/species/fallfish/fallfish.tres b/fish/species/fallfish/fallfish.tres deleted file mode 100644 index 72e3774..0000000 --- a/fish/species/fallfish/fallfish.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -require_rain = true - -[resource] -script = ExtResource("1_fish_data") -id = &"fallfish" -display_name = "fallfish" -active = false -catalog_number = 2506 -collection_group = &"Freshwater coarse fish" -logbook_fact = "fallfish are large minnows that build broad stone nests in flowing water. other stream fish often reuse the gravel mounds for spawning." -allowed_water_types = 1 -rarity = 1 -base_catch_weight = 0.9 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.2 -weight_max_lb = 3.5 -sell_value_min = 5 -sell_value_max = 10 -sell_value_curve = 0.92 diff --git a/fish/species/fangtooth_common/fangtooth_common.tres b/fish/species/fangtooth_common/fangtooth_common.tres deleted file mode 100644 index e53e1ad..0000000 --- a/fish/species/fangtooth_common/fangtooth_common.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false - -[resource] -script = ExtResource("1_fish_data") -id = &"fangtooth_common" -display_name = "common fangtooth" -active = false -catalog_number = 1802 -collection_group = &"Deep-sea oddities" -logbook_fact = "common fangtooths carry outsized teeth that fit into pockets in the roof of the mouth. they migrate upward from deep water after dark." -allowed_water_types = 2 -rarity = 3 -base_catch_weight = 0.1 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.05 -weight_max_lb = 0.5 -sell_value_min = 25 -sell_value_max = 56 -sell_value_curve = 0.96 diff --git a/fish/species/flounder_peacock/flounder_peacock.tres b/fish/species/flounder_peacock/flounder_peacock.tres deleted file mode 100644 index 54737a4..0000000 --- a/fish/species/flounder_peacock/flounder_peacock.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"flounder_peacock" -display_name = "peacock flounder" -active = false -catalog_number = 5401 -collection_group = &"Reef flatfish" -logbook_fact = "peacock flounders change their spots and colors to match tropical sand. both eyes scan above while the flat body remains concealed." -allowed_water_types = 2 -rarity = 2 -base_catch_weight = 0.3 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.2 -weight_max_lb = 5.0 -sell_value_min = 11 -sell_value_max = 24 -sell_value_curve = 0.9 diff --git a/fish/species/flounder_summer/flounder_summer.tres b/fish/species/flounder_summer/flounder_summer.tres deleted file mode 100644 index 9d5892b..0000000 --- a/fish/species/flounder_summer/flounder_summer.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"flounder_summer" -display_name = "summer flounder" -active = false -catalog_number = 402 -collection_group = &"Coastal flatfish" -logbook_fact = "summer flounder bury themselves in sand with only their eyes exposed. a sudden burst carries them upward to seize passing prey." -allowed_water_types = 2 -rarity = 1 -base_catch_weight = 0.9 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.3 -weight_max_lb = 15.0 -sell_value_min = 6 -sell_value_max = 16 -sell_value_curve = 0.88 diff --git a/fish/species/flounder_winter/flounder_winter.tres b/fish/species/flounder_winter/flounder_winter.tres deleted file mode 100644 index 6ad7a4b..0000000 --- a/fish/species/flounder_winter/flounder_winter.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -forbid_rain = true - -[resource] -script = ExtResource("1_fish_data") -id = &"flounder_winter" -display_name = "winter flounder" -active = false -catalog_number = 403 -collection_group = &"Coastal flatfish" -logbook_fact = "winter flounder favor cool bays and estuaries where they rest on muddy bottoms. their eyes sit on the right side of the body." -allowed_water_types = 2 -rarity = 0 -base_catch_weight = 1.8 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.2 -weight_max_lb = 8.0 -sell_value_min = 4 -sell_value_max = 9 -sell_value_curve = 0.9 diff --git a/fish/species/flyingfish_tropical/flyingfish_tropical.tres b/fish/species/flyingfish_tropical/flyingfish_tropical.tres deleted file mode 100644 index 7f94269..0000000 --- a/fish/species/flyingfish_tropical/flyingfish_tropical.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -forbid_rain = true - -[resource] -script = ExtResource("1_fish_data") -id = &"flyingfish_tropical" -display_name = "tropical flyingfish" -active = false -catalog_number = 6603 -collection_group = &"Surface ocean fish" -logbook_fact = "tropical flyingfish accelerate underwater before spreading enlarged fins above the surface. glides help them escape pursuing predators." -allowed_water_types = 2 -rarity = 2 -base_catch_weight = 0.35 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.05 -weight_max_lb = 1.5 -sell_value_min = 10 -sell_value_max = 22 -sell_value_curve = 0.94 diff --git a/fish/species/foureyes_largescale/foureyes_largescale.tres b/fish/species/foureyes_largescale/foureyes_largescale.tres deleted file mode 100644 index 23b1b6c..0000000 --- a/fish/species/foureyes_largescale/foureyes_largescale.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"foureyes_largescale" -display_name = "largescale foureyes" -active = false -catalog_number = 202 -collection_group = &"Brackish oddities" -logbook_fact = "largescale foureyes cruise with each eye divided across the waterline. one half watches above while the other scans below." -allowed_water_types = 3 -rarity = 2 -base_catch_weight = 0.32 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.05 -weight_max_lb = 1.0 -sell_value_min = 10 -sell_value_max = 23 -sell_value_curve = 0.95 diff --git a/fish/species/freshwater_drum/freshwater_drum.tres b/fish/species/freshwater_drum/freshwater_drum.tres deleted file mode 100644 index bd1389b..0000000 --- a/fish/species/freshwater_drum/freshwater_drum.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false -require_rain = true - -[resource] -script = ExtResource("1_fish_data") -id = &"freshwater_drum" -display_name = "freshwater drum" -active = false -catalog_number = 2902 -collection_group = &"Freshwater oddities" -logbook_fact = "freshwater drum crush snails and mussels with powerful throat teeth. muscles vibrating against the swim bladder produce a low drumming sound." -allowed_water_types = 1 -rarity = 1 -base_catch_weight = 0.7 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 1.0 -weight_max_lb = 35.0 -sell_value_min = 7 -sell_value_max = 20 -sell_value_curve = 0.85 diff --git a/fish/species/gar_alligator/gar_alligator.tres b/fish/species/gar_alligator/gar_alligator.tres deleted file mode 100644 index 48c02e2..0000000 --- a/fish/species/gar_alligator/gar_alligator.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false - -[resource] -script = ExtResource("1_fish_data") -id = &"gar_alligator" -display_name = "alligator gar" -active = false -catalog_number = 2701 -collection_group = &"Freshwater giants" -logbook_fact = "alligator gar combine a broad tooth-filled snout with heavy armor-like scales. a vascular swim bladder lets them breathe air at the surface." -allowed_water_types = 1 -rarity = 4 -base_catch_weight = 0.055 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 20.0 -weight_max_lb = 300.0 -sell_value_min = 55 -sell_value_max = 125 -sell_value_curve = 0.8 diff --git a/fish/species/gar_longnose/gar_longnose.tres b/fish/species/gar_longnose/gar_longnose.tres deleted file mode 100644 index 29a8d68..0000000 --- a/fish/species/gar_longnose/gar_longnose.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"gar_longnose" -display_name = "longnose gar" -active = false -catalog_number = 103 -collection_group = &"Ancient freshwater fish" -logbook_fact = "longnose gar wait near the surface before snapping sideways at passing fish. their narrow jaws carry rows of fine needle-like teeth." -allowed_water_types = 1 -rarity = 2 -base_catch_weight = 0.24 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 2.0 -weight_max_lb = 35.0 -sell_value_min = 14 -sell_value_max = 34 -sell_value_curve = 0.85 diff --git a/fish/species/gar_spotted/gar_spotted.tres b/fish/species/gar_spotted/gar_spotted.tres deleted file mode 100644 index abb3d16..0000000 --- a/fish/species/gar_spotted/gar_spotted.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -require_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"gar_spotted" -display_name = "spotted gar" -active = false -catalog_number = 106 -collection_group = &"Ancient freshwater fish" -logbook_fact = "spotted gar linger among vegetation where their mottled bodies break up their outline. they rise to gulp air as well as breathing through gills." -allowed_water_types = 1 -rarity = 2 -base_catch_weight = 0.2 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 1.0 -weight_max_lb = 15.0 -sell_value_min = 13 -sell_value_max = 29 -sell_value_curve = 0.88 diff --git a/fish/species/goby_round/goby_round.tres b/fish/species/goby_round/goby_round.tres index 20d76a4..4c8872e 100644 --- a/fish/species/goby_round/goby_round.tres +++ b/fish/species/goby_round/goby_round.tres @@ -14,10 +14,6 @@ preferred_bait_weight_multiplier = 1.35 script = ExtResource("1_fish_data") id = &"goby_round" display_name = "round goby" -active = true -catalog_number = 3401 -collection_group = &"Freshwater small fish" -logbook_fact = "round gobies use fused pelvic fins like a suction cup to hold onto rocks. they are small fish with a famously large appetite." allowed_water_types = 1 base_catch_weight = 8.0 catch_profile = ExtResource("2_profile") diff --git a/fish/species/goldeye/goldeye.tres b/fish/species/goldeye/goldeye.tres deleted file mode 100644 index c623dc8..0000000 --- a/fish/species/goldeye/goldeye.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false -require_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"goldeye" -display_name = "goldeye" -active = false -catalog_number = 2903 -collection_group = &"Freshwater oddities" -logbook_fact = "goldeye patrol turbid rivers with large light-sensitive eyes and a toothed tongue. they rise toward the surface to hunt insects and small fish." -allowed_water_types = 1 -rarity = 2 -base_catch_weight = 0.3 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.3 -weight_max_lb = 6.0 -sell_value_min = 12 -sell_value_max = 25 -sell_value_curve = 0.9 diff --git a/fish/species/goldfish/goldfish.tres b/fish/species/goldfish/goldfish.tres index c70b2d3..153365d 100644 --- a/fish/species/goldfish/goldfish.tres +++ b/fish/species/goldfish/goldfish.tres @@ -13,10 +13,6 @@ allowed_location_tags = Array[StringName]([&"starter_pond"]) script = ExtResource("1_fish_data") id = &"goldfish" display_name = "goldfish" -active = true -catalog_number = 3002 -collection_group = &"Freshwater ornamental" -logbook_fact = "goldfish can tolerate a surprisingly wide range of conditions. their wild relatives often live in slow, weedy water." allowed_water_types = 1 base_catch_weight = 0.5 catch_profile = ExtResource("2_profile") diff --git a/fish/species/goldfish_bubbleeye/goldfish_bubbleeye.tres b/fish/species/goldfish_bubbleeye/goldfish_bubbleeye.tres index aa75c08..d6a288a 100644 --- a/fish/species/goldfish_bubbleeye/goldfish_bubbleeye.tres +++ b/fish/species/goldfish_bubbleeye/goldfish_bubbleeye.tres @@ -13,10 +13,6 @@ allowed_location_tags = Array[StringName]([&"starter_pond"]) script = ExtResource("1_fish_data") id = &"goldfish_bubbleeye" display_name = "bubble-eye goldfish" -active = true -catalog_number = 3001 -collection_group = &"Freshwater ornamental" -logbook_fact = "bubble-eye goldfish have delicate fluid-filled sacs beneath their eyes, making careful handling especially important." allowed_water_types = 1 rarity = 1 base_catch_weight = 0.35 diff --git a/fish/species/gourami_giant/gourami_giant.tres b/fish/species/gourami_giant/gourami_giant.tres deleted file mode 100644 index b7a9095..0000000 --- a/fish/species/gourami_giant/gourami_giant.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"gourami_giant" -display_name = "giant gourami" -active = false -catalog_number = 7505 -collection_group = &"Tropical freshwater fish" -logbook_fact = "giant gouramis breathe surface air through a specialized labyrinth organ. adults graze plants but also investigate insects and small animals." -allowed_water_types = 1 -rarity = 2 -base_catch_weight = 0.25 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 2.0 -weight_max_lb = 20.0 -sell_value_min = 13 -sell_value_max = 31 -sell_value_curve = 0.86 diff --git a/fish/species/grayling_arctic/grayling_arctic.tres b/fish/species/grayling_arctic/grayling_arctic.tres deleted file mode 100644 index fc1e09d..0000000 --- a/fish/species/grayling_arctic/grayling_arctic.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -forbid_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"grayling_arctic" -display_name = "arctic grayling" -active = false -catalog_number = 1102 -collection_group = &"Cold freshwater salmonids" -logbook_fact = "arctic grayling carry a tall, colorful dorsal fin like a sail. they feed on drifting insects in cold, clear rivers and lakes." -allowed_water_types = 1 -rarity = 1 -base_catch_weight = 0.75 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.3 -weight_max_lb = 6.0 -sell_value_min = 6 -sell_value_max = 14 -sell_value_curve = 0.9 diff --git a/fish/species/green_sunfish/green_sunfish.tres b/fish/species/green_sunfish/green_sunfish.tres deleted file mode 100644 index 92a6838..0000000 --- a/fish/species/green_sunfish/green_sunfish.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"green_sunfish" -display_name = "green sunfish" -active = false -catalog_number = 3103 -collection_group = &"Freshwater panfish" -logbook_fact = "green sunfish tolerate small, warm, cloudy pools better than many relatives. a large mouth lets them tackle insects, crayfish, and fish." -allowed_water_types = 1 -rarity = 0 -base_catch_weight = 3.2 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.1 -weight_max_lb = 1.5 -sell_value_min = 2 -sell_value_max = 5 -sell_value_curve = 1.0 diff --git a/fish/species/grouper_atlantic_goliath/grouper_atlantic_goliath.tres b/fish/species/grouper_atlantic_goliath/grouper_atlantic_goliath.tres deleted file mode 100644 index fae0ea5..0000000 --- a/fish/species/grouper_atlantic_goliath/grouper_atlantic_goliath.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -require_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"grouper_atlantic_goliath" -display_name = "Atlantic goliath grouper" -active = false -catalog_number = 5801 -collection_group = &"Reef predators" -logbook_fact = "atlantic goliath groupers occupy reefs, wrecks, and mangrove roots. enormous mouths pull prey inward with a sudden pressure drop." -allowed_water_types = 2 -rarity = 4 -base_catch_weight = 0.05 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 20.0 -weight_max_lb = 800.0 -sell_value_min = 50 -sell_value_max = 125 -sell_value_curve = 0.78 diff --git a/fish/species/grouper_giant/grouper_giant.tres b/fish/species/grouper_giant/grouper_giant.tres deleted file mode 100644 index bc4ecf1..0000000 --- a/fish/species/grouper_giant/grouper_giant.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -require_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"grouper_giant" -display_name = "giant grouper" -active = false -catalog_number = 5803 -collection_group = &"Reef predators" -logbook_fact = "giant groupers become massive ambush predators around indo-pacific reefs. juveniles carry bold black-and-yellow markings." -allowed_water_types = 2 -rarity = 4 -base_catch_weight = 0.045 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 20.0 -weight_max_lb = 880.0 -sell_value_min = 52 -sell_value_max = 128 -sell_value_curve = 0.78 diff --git a/fish/species/grouper_gulf/grouper_gulf.tres b/fish/species/grouper_gulf/grouper_gulf.tres index c3aaffa..1e0446e 100644 --- a/fish/species/grouper_gulf/grouper_gulf.tres +++ b/fish/species/grouper_gulf/grouper_gulf.tres @@ -13,10 +13,6 @@ allowed_location_tags = Array[StringName]([&"ocean"]) script = ExtResource("1_fish_data") id = &"grouper_gulf" display_name = "gulf grouper" -active = true -catalog_number = 5805 -collection_group = &"Reef predators" -logbook_fact = "gulf grouper are ambush predators that use a sudden gulp to pull prey into their cavernous mouths." allowed_water_types = 2 rarity = 1 base_catch_weight = 0.3 diff --git a/fish/species/grouper_nassau/grouper_nassau.tres b/fish/species/grouper_nassau/grouper_nassau.tres deleted file mode 100644 index 06bbcdf..0000000 --- a/fish/species/grouper_nassau/grouper_nassau.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -forbid_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"grouper_nassau" -display_name = "Nassau grouper" -active = false -catalog_number = 5806 -collection_group = &"Reef predators" -logbook_fact = "nassau groupers shift their bars and colors with mood and surroundings. adults gather at traditional reef sites to spawn." -allowed_water_types = 2 -rarity = 3 -base_catch_weight = 0.12 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 2.0 -weight_max_lb = 55.0 -sell_value_min = 25 -sell_value_max = 62 -sell_value_curve = 0.82 diff --git a/fish/species/grouper_red/grouper_red.tres b/fish/species/grouper_red/grouper_red.tres index b83fecb..5594641 100644 --- a/fish/species/grouper_red/grouper_red.tres +++ b/fish/species/grouper_red/grouper_red.tres @@ -13,10 +13,6 @@ allowed_location_tags = Array[StringName]([&"ocean"]) script = ExtResource("1_fish_data") id = &"grouper_red" display_name = "red grouper" -active = true -catalog_number = 5807 -collection_group = &"Reef predators" -logbook_fact = "red grouper excavate shelters in reef rubble. the hollows they make can become hiding places for many smaller animals." allowed_water_types = 2 rarity = 2 base_catch_weight = 0.2 diff --git a/fish/species/grunt_bluestriped/grunt_bluestriped.tres b/fish/species/grunt_bluestriped/grunt_bluestriped.tres deleted file mode 100644 index ef78e38..0000000 --- a/fish/species/grunt_bluestriped/grunt_bluestriped.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"grunt_bluestriped" -display_name = "bluestriped grunt" -active = false -catalog_number = 5902 -collection_group = &"Reef schooling fish" -logbook_fact = "bluestriped grunts shelter on reefs by day and spread over seagrass to feed at night. grinding throat teeth produce audible grunts." -allowed_water_types = 2 -rarity = 0 -base_catch_weight = 2.0 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.1 -weight_max_lb = 3.0 -sell_value_min = 3 -sell_value_max = 7 -sell_value_curve = 0.94 diff --git a/fish/species/grunt_french/grunt_french.tres b/fish/species/grunt_french/grunt_french.tres deleted file mode 100644 index d695ecd..0000000 --- a/fish/species/grunt_french/grunt_french.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"grunt_french" -display_name = "French grunt" -active = false -catalog_number = 5903 -collection_group = &"Reef schooling fish" -logbook_fact = "french grunts gather in yellow-striped schools around reefs and wrecks. they travel into nearby sand and grass beds after dark." -allowed_water_types = 2 -rarity = 0 -base_catch_weight = 2.0 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.1 -weight_max_lb = 3.5 -sell_value_min = 3 -sell_value_max = 7 -sell_value_curve = 0.94 diff --git a/fish/species/gulper_eel/gulper_eel.tres b/fish/species/gulper_eel/gulper_eel.tres deleted file mode 100644 index 328a595..0000000 --- a/fish/species/gulper_eel/gulper_eel.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false -require_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"gulper_eel" -display_name = "gulper eel" -active = false -catalog_number = 1803 -collection_group = &"Deep-sea oddities" -logbook_fact = "gulper eels unfold enormous mouths to engulf prey in the deep sea. a whip-like tail ends in a small light-producing organ." -allowed_water_types = 2 -rarity = 4 -base_catch_weight = 0.04 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.5 -weight_max_lb = 18.0 -sell_value_min = 44 -sell_value_max = 92 -sell_value_curve = 0.86 diff --git a/fish/species/guppy/guppy.tres b/fish/species/guppy/guppy.tres deleted file mode 100644 index 911447f..0000000 --- a/fish/species/guppy/guppy.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"guppy" -display_name = "guppy" -active = false -catalog_number = 2101 -collection_group = &"Freshwater aquarium fish" -logbook_fact = "guppies are livebearers whose young arrive ready to swim. males display bright colors while females often favor larger, less flashy bodies." -allowed_water_types = 1 -rarity = 0 -base_catch_weight = 1.5 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.01 -weight_max_lb = 0.15 -sell_value_min = 2 -sell_value_max = 5 -sell_value_curve = 0.98 diff --git a/fish/species/haddock/haddock.tres b/fish/species/haddock/haddock.tres deleted file mode 100644 index 0f73e63..0000000 --- a/fish/species/haddock/haddock.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"haddock" -display_name = "haddock" -active = false -catalog_number = 1405 -collection_group = &"Cold shelf fish" -logbook_fact = "haddock are recognized by a dark shoulder mark and black lateral line. schools forage over cold seafloors for small bottom animals." -allowed_water_types = 2 -rarity = 0 -base_catch_weight = 2.0 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.5 -weight_max_lb = 20.0 -sell_value_min = 4 -sell_value_max = 11 -sell_value_curve = 0.9 diff --git a/fish/species/hake_pacific/hake_pacific.tres b/fish/species/hake_pacific/hake_pacific.tres deleted file mode 100644 index 85b521b..0000000 --- a/fish/species/hake_pacific/hake_pacific.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false - -[resource] -script = ExtResource("1_fish_data") -id = &"hake_pacific" -display_name = "pacific hake" -active = false -catalog_number = 1407 -collection_group = &"Cold shelf fish" -logbook_fact = "pacific hake rise from deep water at night to feed on krill and fish. large schools migrate along the west coast with changing seasons." -allowed_water_types = 2 -rarity = 0 -base_catch_weight = 1.7 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.3 -weight_max_lb = 8.0 -sell_value_min = 3 -sell_value_max = 9 -sell_value_curve = 0.92 diff --git a/fish/species/hake_silver/hake_silver.tres b/fish/species/hake_silver/hake_silver.tres deleted file mode 100644 index 79d7ea0..0000000 --- a/fish/species/hake_silver/hake_silver.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false - -[resource] -script = ExtResource("1_fish_data") -id = &"hake_silver" -display_name = "silver hake" -active = false -catalog_number = 1408 -collection_group = &"Cold shelf fish" -logbook_fact = "silver hake hunt fish and crustaceans over sandy atlantic shelves. they move upward after dark and return toward the bottom by day." -allowed_water_types = 2 -rarity = 0 -base_catch_weight = 1.7 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.2 -weight_max_lb = 5.0 -sell_value_min = 3 -sell_value_max = 8 -sell_value_curve = 0.92 diff --git a/fish/species/halfbeak_ballyhoo/halfbeak_ballyhoo.tres b/fish/species/halfbeak_ballyhoo/halfbeak_ballyhoo.tres deleted file mode 100644 index 7362805..0000000 --- a/fish/species/halfbeak_ballyhoo/halfbeak_ballyhoo.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"halfbeak_ballyhoo" -display_name = "ballyhoo" -active = false -catalog_number = 6601 -collection_group = &"Surface ocean fish" -logbook_fact = "ballyhoo skim warm ocean surfaces with an extended lower jaw. tight schools scatter into quick leaps when predators strike." -allowed_water_types = 2 -rarity = 0 -base_catch_weight = 2.5 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.05 -weight_max_lb = 1.0 -sell_value_min = 2 -sell_value_max = 5 -sell_value_curve = 0.98 diff --git a/fish/species/halibut_atlantic/halibut_atlantic.tres b/fish/species/halibut_atlantic/halibut_atlantic.tres deleted file mode 100644 index c8bf167..0000000 --- a/fish/species/halibut_atlantic/halibut_atlantic.tres +++ /dev/null @@ -1,27 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") - -[resource] -script = ExtResource("1_fish_data") -id = &"halibut_atlantic" -display_name = "atlantic halibut" -active = false -catalog_number = 3701 -collection_group = &"Large flatfish" -logbook_fact = "atlantic halibut are immense right-eyed flatfish of cold northern seas. adults ambush fish and squid from deep rocky or sandy bottoms." -allowed_water_types = 2 -rarity = 3 -base_catch_weight = 0.1 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 10.0 -weight_max_lb = 300.0 -sell_value_min = 32 -sell_value_max = 82 -sell_value_curve = 0.8 diff --git a/fish/species/halibut_pacific/halibut_pacific.tres b/fish/species/halibut_pacific/halibut_pacific.tres deleted file mode 100644 index 9980aef..0000000 --- a/fish/species/halibut_pacific/halibut_pacific.tres +++ /dev/null @@ -1,27 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") - -[resource] -script = ExtResource("1_fish_data") -id = &"halibut_pacific" -display_name = "pacific halibut" -active = false -catalog_number = 3702 -collection_group = &"Large flatfish" -logbook_fact = "pacific halibut lie camouflaged on cold continental shelves. powerful flat bodies can travel long distances between feeding and spawning grounds." -allowed_water_types = 2 -rarity = 3 -base_catch_weight = 0.1 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 10.0 -weight_max_lb = 350.0 -sell_value_min = 34 -sell_value_max = 86 -sell_value_curve = 0.8 diff --git a/fish/species/hellbender/hellbender.tres b/fish/species/hellbender/hellbender.tres deleted file mode 100644 index 8a9d228..0000000 --- a/fish/species/hellbender/hellbender.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false -require_rain = true - -[resource] -script = ExtResource("1_fish_data") -id = &"hellbender" -display_name = "hellbender" -active = false -catalog_number = 2002 -collection_group = &"Freshwater amphibians" -logbook_fact = "hellbenders hide beneath large rocks in cool, clean rivers. folds of loose skin absorb oxygen while the flattened body grips the current." -allowed_water_types = 1 -rarity = 3 -base_catch_weight = 0.1 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.5 -weight_max_lb = 5.5 -sell_value_min = 24 -sell_value_max = 54 -sell_value_curve = 0.91 diff --git a/fish/species/herring_atlantic/herring_atlantic.tres b/fish/species/herring_atlantic/herring_atlantic.tres deleted file mode 100644 index 00f1e36..0000000 --- a/fish/species/herring_atlantic/herring_atlantic.tres +++ /dev/null @@ -1,27 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") - -[resource] -script = ExtResource("1_fish_data") -id = &"herring_atlantic" -display_name = "atlantic herring" -active = false -catalog_number = 1301 -collection_group = &"Cold schooling fish" -logbook_fact = "atlantic herring gather in immense schools that move between feeding and spawning grounds. they filter plankton with fine gill rakers." -allowed_water_types = 2 -rarity = 0 -base_catch_weight = 3.0 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.1 -weight_max_lb = 1.5 -sell_value_min = 2 -sell_value_max = 5 -sell_value_curve = 0.98 diff --git a/fish/species/herring_pacific/herring_pacific.tres b/fish/species/herring_pacific/herring_pacific.tres deleted file mode 100644 index 27dcff7..0000000 --- a/fish/species/herring_pacific/herring_pacific.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -require_rain = true - -[resource] -script = ExtResource("1_fish_data") -id = &"herring_pacific" -display_name = "pacific herring" -active = false -catalog_number = 1304 -collection_group = &"Cold schooling fish" -logbook_fact = "pacific herring return to coastal shallows to coat plants and rocks with eggs. their oily schools support entire marine food webs." -allowed_water_types = 2 -rarity = 0 -base_catch_weight = 2.8 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.1 -weight_max_lb = 1.5 -sell_value_min = 2 -sell_value_max = 5 -sell_value_curve = 0.98 diff --git a/fish/species/hogfish/hogfish.tres b/fish/species/hogfish/hogfish.tres deleted file mode 100644 index 8d7dd29..0000000 --- a/fish/species/hogfish/hogfish.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"hogfish" -display_name = "hogfish" -active = false -catalog_number = 6103 -collection_group = &"Reef wrasses" -logbook_fact = "hogfish root through sand with long pig-like snouts in search of shellfish. adults can change from female to male as social groups shift." -allowed_water_types = 2 -rarity = 2 -base_catch_weight = 0.3 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.5 -weight_max_lb = 20.0 -sell_value_min = 12 -sell_value_max = 30 -sell_value_curve = 0.86 diff --git a/fish/species/ide/ide.tres b/fish/species/ide/ide.tres deleted file mode 100644 index dcc9980..0000000 --- a/fish/species/ide/ide.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"ide" -display_name = "ide" -active = false -catalog_number = 2507 -collection_group = &"Freshwater coarse fish" -logbook_fact = "ide move between rivers, lakes, and brackish coastal water in loose schools. adults eat insects, crustaceans, plants, and small fish." -allowed_water_types = 1 -rarity = 1 -base_catch_weight = 0.8 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.3 -weight_max_lb = 9.0 -sell_value_min = 6 -sell_value_max = 14 -sell_value_curve = 0.9 diff --git a/fish/species/jack_crevalle/jack_crevalle.tres b/fish/species/jack_crevalle/jack_crevalle.tres deleted file mode 100644 index e20485e..0000000 --- a/fish/species/jack_crevalle/jack_crevalle.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -require_rain = true - -[resource] -script = ExtResource("1_fish_data") -id = &"jack_crevalle" -display_name = "crevalle jack" -active = false -catalog_number = 705 -collection_group = &"Coastal pelagic fish" -logbook_fact = "crevalle jacks patrol warm coasts in fast-moving schools. their deep bodies and forked tails deliver long, powerful runs." -allowed_water_types = 2 -rarity = 1 -base_catch_weight = 0.8 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 1.0 -weight_max_lb = 35.0 -sell_value_min = 7 -sell_value_max = 20 -sell_value_curve = 0.84 diff --git a/fish/species/jelly_crystal/jelly_crystal.tres b/fish/species/jelly_crystal/jelly_crystal.tres deleted file mode 100644 index fe2f34e..0000000 --- a/fish/species/jelly_crystal/jelly_crystal.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false -forbid_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"jelly_crystal" -display_name = "crystal jelly" -active = false -catalog_number = 3501 -collection_group = &"Jellies" -logbook_fact = "crystal jellies are nearly transparent except for glowing points around the bell. their green fluorescent protein transformed biological research." -allowed_water_types = 2 -rarity = 2 -base_catch_weight = 0.24 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.05 -weight_max_lb = 4.0 -sell_value_min = 15 -sell_value_max = 34 -sell_value_curve = 0.93 diff --git a/fish/species/jelly_lions_mane/jelly_lions_mane.tres b/fish/species/jelly_lions_mane/jelly_lions_mane.tres deleted file mode 100644 index cedb3c8..0000000 --- a/fish/species/jelly_lions_mane/jelly_lions_mane.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false -require_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"jelly_lions_mane" -display_name = "lion's mane jelly" -active = false -catalog_number = 3502 -collection_group = &"Jellies" -logbook_fact = "lion's mane jellies trail dense curtains of tentacles through cold seas. the bell darkens from yellow to deep red as the animal grows." -allowed_water_types = 2 -rarity = 3 -base_catch_weight = 0.11 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 1.0 -weight_max_lb = 200.0 -sell_value_min = 24 -sell_value_max = 58 -sell_value_curve = 0.82 diff --git a/fish/species/jelly_moon/jelly_moon.tres b/fish/species/jelly_moon/jelly_moon.tres deleted file mode 100644 index ef7cbe1..0000000 --- a/fish/species/jelly_moon/jelly_moon.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false - -[resource] -script = ExtResource("1_fish_data") -id = &"jelly_moon" -display_name = "moon jelly" -active = false -catalog_number = 3503 -collection_group = &"Jellies" -logbook_fact = "moon jellies pulse gently with four horseshoe-shaped organs visible through the bell. short tentacles sweep plankton toward the mouth." -allowed_water_types = 2 -rarity = 1 -base_catch_weight = 0.7 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.05 -weight_max_lb = 5.0 -sell_value_min = 6 -sell_value_max = 14 -sell_value_curve = 0.94 diff --git a/fish/species/jelly_pacific_sea_nettle/jelly_pacific_sea_nettle.tres b/fish/species/jelly_pacific_sea_nettle/jelly_pacific_sea_nettle.tres deleted file mode 100644 index e3697b3..0000000 --- a/fish/species/jelly_pacific_sea_nettle/jelly_pacific_sea_nettle.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -forbid_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"jelly_pacific_sea_nettle" -display_name = "Pacific sea nettle" -active = false -catalog_number = 3504 -collection_group = &"Jellies" -logbook_fact = "pacific sea nettles carry rust-colored stripes across pale bells. long tentacles and frilled mouth arms capture plankton and small fish." -allowed_water_types = 2 -rarity = 2 -base_catch_weight = 0.28 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.2 -weight_max_lb = 12.0 -sell_value_min = 14 -sell_value_max = 32 -sell_value_curve = 0.9 diff --git a/fish/species/jelly_sea_wasp/jelly_sea_wasp.tres b/fish/species/jelly_sea_wasp/jelly_sea_wasp.tres deleted file mode 100644 index 64c2288..0000000 --- a/fish/species/jelly_sea_wasp/jelly_sea_wasp.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -require_rain = true - -[resource] -script = ExtResource("1_fish_data") -id = &"jelly_sea_wasp" -display_name = "sea wasp" -active = false -catalog_number = 3505 -collection_group = &"Jellies" -logbook_fact = "sea wasps have box-shaped bells and clusters of eyes along the lower edge. their long tentacles deliver exceptionally potent venom." -allowed_water_types = 2 -rarity = 4 -base_catch_weight = 0.035 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.2 -weight_max_lb = 6.0 -sell_value_min = 42 -sell_value_max = 90 -sell_value_curve = 0.9 diff --git a/fish/species/knifefish_clown/knifefish_clown.tres b/fish/species/knifefish_clown/knifefish_clown.tres deleted file mode 100644 index 23781ad..0000000 --- a/fish/species/knifefish_clown/knifefish_clown.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false -require_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"knifefish_clown" -display_name = "clown knifefish" -active = false -catalog_number = 7501 -collection_group = &"Tropical freshwater fish" -logbook_fact = "clown knifefish undulate one long belly fin to glide forward or backward. dark eye-like spots line their silver nocturnal bodies." -allowed_water_types = 1 -rarity = 2 -base_catch_weight = 0.25 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 1.0 -weight_max_lb = 25.0 -sell_value_min = 16 -sell_value_max = 38 -sell_value_curve = 0.86 diff --git a/fish/species/koi/koi.tres b/fish/species/koi/koi.tres deleted file mode 100644 index 7c110cc..0000000 --- a/fish/species/koi/koi.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -forbid_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"koi" -display_name = "koi" -active = false -catalog_number = 3003 -collection_group = &"Freshwater ornamental" -logbook_fact = "koi are colorful domesticated forms of common carp selected over many generations. each fish carries a distinctive arrangement of patches and scales." -allowed_water_types = 1 -rarity = 2 -base_catch_weight = 0.28 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.5 -weight_max_lb = 35.0 -sell_value_min = 14 -sell_value_max = 34 -sell_value_curve = 0.87 diff --git a/fish/species/krill_antarctic/krill_antarctic.tres b/fish/species/krill_antarctic/krill_antarctic.tres deleted file mode 100644 index 390487d..0000000 --- a/fish/species/krill_antarctic/krill_antarctic.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false - -[resource] -script = ExtResource("1_fish_data") -id = &"krill_antarctic" -display_name = "Antarctic krill" -active = false -catalog_number = 3802 -collection_group = &"Lobsters and shrimp" -logbook_fact = "antarctic krill form enormous swarms beneath southern seas and ice. these small crustaceans feed whales, seals, penguins, and fish." -allowed_water_types = 2 -rarity = 2 -base_catch_weight = 0.3 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.001 -weight_max_lb = 0.01 -sell_value_min = 10 -sell_value_max = 22 -sell_value_curve = 0.99 diff --git a/fish/species/ladyfish/ladyfish.tres b/fish/species/ladyfish/ladyfish.tres deleted file mode 100644 index 1cc8e7b..0000000 --- a/fish/species/ladyfish/ladyfish.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -require_rain = true - -[resource] -script = ExtResource("1_fish_data") -id = &"ladyfish" -display_name = "ladyfish" -active = false -catalog_number = 7403 -collection_group = &"Tropical flats fish" -logbook_fact = "ladyfish race through warm shallows after schooling prey and often leap when pursued. a deeply forked tail powers their slender bodies." -allowed_water_types = 2 -rarity = 0 -base_catch_weight = 1.7 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.2 -weight_max_lb = 8.0 -sell_value_min = 4 -sell_value_max = 10 -sell_value_curve = 0.9 diff --git a/fish/species/lanternfish_spotted/lanternfish_spotted.tres b/fish/species/lanternfish_spotted/lanternfish_spotted.tres deleted file mode 100644 index 8d47916..0000000 --- a/fish/species/lanternfish_spotted/lanternfish_spotted.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false - -[resource] -script = ExtResource("1_fish_data") -id = &"lanternfish_spotted" -display_name = "spotted lanternfish" -active = false -catalog_number = 1806 -collection_group = &"Deep-sea oddities" -logbook_fact = "spotted lanternfish carry rows of light-producing organs along their bodies. immense schools rise toward the surface each night." -allowed_water_types = 2 -rarity = 2 -base_catch_weight = 0.24 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.05 -weight_max_lb = 0.5 -sell_value_min = 14 -sell_value_max = 30 -sell_value_curve = 0.95 diff --git a/fish/species/largemouth_bass/largemouth_bass.tres b/fish/species/largemouth_bass/largemouth_bass.tres deleted file mode 100644 index e32cd20..0000000 --- a/fish/species/largemouth_bass/largemouth_bass.tres +++ /dev/null @@ -1,27 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") - -[resource] -script = ExtResource("1_fish_data") -id = &"largemouth_bass" -display_name = "largemouth bass" -active = false -catalog_number = 2201 -collection_group = &"Freshwater bass" -logbook_fact = "largemouth bass wait among weeds and timber before lunging at prey. the upper jaw extends beyond the eye when the mouth is closed." -allowed_water_types = 1 -rarity = 0 -base_catch_weight = 2.5 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.5 -weight_max_lb = 18.0 -sell_value_min = 4 -sell_value_max = 12 -sell_value_curve = 0.9 diff --git a/fish/species/lingcod/lingcod.tres b/fish/species/lingcod/lingcod.tres deleted file mode 100644 index 34c8c0b..0000000 --- a/fish/species/lingcod/lingcod.tres +++ /dev/null @@ -1,27 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") - -[resource] -script = ExtResource("1_fish_data") -id = &"lingcod" -display_name = "lingcod" -active = false -catalog_number = 7001 -collection_group = &"Temperate reef predators" -logbook_fact = "lingcod guard rocky dens and ambush fish with a huge tooth-lined mouth. despite the name, they are greenling relatives rather than cod." -allowed_water_types = 2 -rarity = 2 -base_catch_weight = 0.25 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 2.0 -weight_max_lb = 60.0 -sell_value_min = 14 -sell_value_max = 38 -sell_value_curve = 0.83 diff --git a/fish/species/lionfish_red/lionfish_red.tres b/fish/species/lionfish_red/lionfish_red.tres deleted file mode 100644 index 9b46e72..0000000 --- a/fish/species/lionfish_red/lionfish_red.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false - -[resource] -script = ExtResource("1_fish_data") -id = &"lionfish_red" -display_name = "red lionfish" -active = false -catalog_number = 5201 -collection_group = &"Reef ambush fish" -logbook_fact = "red lionfish spread ornate venomous spines when threatened. broad fins herd smaller fish into corners before a rapid gulp." -allowed_water_types = 2 -rarity = 2 -base_catch_weight = 0.3 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.2 -weight_max_lb = 3.0 -sell_value_min = 11 -sell_value_max = 25 -sell_value_curve = 0.92 diff --git a/fish/species/loach_clown/loach_clown.tres b/fish/species/loach_clown/loach_clown.tres deleted file mode 100644 index afe5549..0000000 --- a/fish/species/loach_clown/loach_clown.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -require_rain = true - -[resource] -script = ExtResource("1_fish_data") -id = &"loach_clown" -display_name = "clown loach" -active = false -catalog_number = 7502 -collection_group = &"Tropical freshwater fish" -logbook_fact = "clown loaches rest in groups and make clicking sounds while feeding. orange bodies carry three broad black bands and small eye spines." -allowed_water_types = 1 -rarity = 2 -base_catch_weight = 0.32 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.1 -weight_max_lb = 2.0 -sell_value_min = 10 -sell_value_max = 22 -sell_value_curve = 0.9 diff --git a/fish/species/loach_weather/loach_weather.tres b/fish/species/loach_weather/loach_weather.tres deleted file mode 100644 index 8b23ea1..0000000 --- a/fish/species/loach_weather/loach_weather.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -require_rain = true - -[resource] -script = ExtResource("1_fish_data") -id = &"loach_weather" -display_name = "weather loach" -active = false -catalog_number = 2905 -collection_group = &"Freshwater oddities" -logbook_fact = "weather loaches gulp air and pass it through the intestine when oxygen runs low. restless activity often increases as air pressure falls." -allowed_water_types = 1 -rarity = 1 -base_catch_weight = 0.85 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.05 -weight_max_lb = 0.7 -sell_value_min = 5 -sell_value_max = 11 -sell_value_curve = 0.95 diff --git a/fish/species/lobster_american/lobster_american.tres b/fish/species/lobster_american/lobster_american.tres deleted file mode 100644 index 92bdb7f..0000000 --- a/fish/species/lobster_american/lobster_american.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false -require_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"lobster_american" -display_name = "American lobster" -active = false -catalog_number = 3801 -collection_group = &"Lobsters and shrimp" -logbook_fact = "american lobsters shelter in rocky crevices and emerge to forage along the bottom. one claw crushes while the other cuts and grips." -allowed_water_types = 2 -rarity = 2 -base_catch_weight = 0.28 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.5 -weight_max_lb = 44.0 -sell_value_min = 16 -sell_value_max = 42 -sell_value_curve = 0.86 diff --git a/fish/species/lobster_caribbean_spiny/lobster_caribbean_spiny.tres b/fish/species/lobster_caribbean_spiny/lobster_caribbean_spiny.tres deleted file mode 100644 index 94672a9..0000000 --- a/fish/species/lobster_caribbean_spiny/lobster_caribbean_spiny.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false -forbid_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"lobster_caribbean_spiny" -display_name = "Caribbean spiny lobster" -active = false -catalog_number = 3803 -collection_group = &"Lobsters and shrimp" -logbook_fact = "caribbean spiny lobsters rely on long antennae and a thorny shell instead of large claws. groups march together across the seafloor." -allowed_water_types = 2 -rarity = 2 -base_catch_weight = 0.25 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.5 -weight_max_lb = 26.0 -sell_value_min = 15 -sell_value_max = 38 -sell_value_curve = 0.87 diff --git a/fish/species/lungfish_west_african/lungfish_west_african.tres b/fish/species/lungfish_west_african/lungfish_west_african.tres deleted file mode 100644 index 4baad67..0000000 --- a/fish/species/lungfish_west_african/lungfish_west_african.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false -require_rain = true - -[resource] -script = ExtResource("1_fish_data") -id = &"lungfish_west_african" -display_name = "West African lungfish" -active = false -catalog_number = 107 -collection_group = &"Ancient freshwater fish" -logbook_fact = "west african lungfish breathe air with paired lungs. when floodplains dry, they seal themselves in a mud cocoon until water returns." -allowed_water_types = 1 -rarity = 2 -base_catch_weight = 0.3 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 1.0 -weight_max_lb = 10.0 -sell_value_min = 12 -sell_value_max = 28 -sell_value_curve = 0.86 diff --git a/fish/species/mackerel_atlantic/mackerel_atlantic.tres b/fish/species/mackerel_atlantic/mackerel_atlantic.tres index edf6d38..514ef07 100644 --- a/fish/species/mackerel_atlantic/mackerel_atlantic.tres +++ b/fish/species/mackerel_atlantic/mackerel_atlantic.tres @@ -13,10 +13,6 @@ allowed_location_tags = Array[StringName]([&"ocean"]) script = ExtResource("1_fish_data") id = &"mackerel_atlantic" display_name = "atlantic mackerel" -active = true -catalog_number = 701 -collection_group = &"Coastal pelagic fish" -logbook_fact = "atlantic mackerel travel in fast schools across the north atlantic and feed on plankton and small schooling fish." allowed_water_types = 2 base_catch_weight = 0.5 catch_profile = ExtResource("2_profile") diff --git a/fish/species/mackerel_cero/mackerel_cero.tres b/fish/species/mackerel_cero/mackerel_cero.tres index 6dc9040..fbbb612 100644 --- a/fish/species/mackerel_cero/mackerel_cero.tres +++ b/fish/species/mackerel_cero/mackerel_cero.tres @@ -13,10 +13,6 @@ allowed_location_tags = Array[StringName]([&"ocean"]) script = ExtResource("1_fish_data") id = &"mackerel_cero" display_name = "cero mackerel" -active = true -catalog_number = 703 -collection_group = &"Coastal pelagic fish" -logbook_fact = "cero mackerel are streamlined coastal hunters. sharp teeth help them slash through schools of smaller fish." allowed_water_types = 2 rarity = 1 base_catch_weight = 0.35 diff --git a/fish/species/mackerel_chub/mackerel_chub.tres b/fish/species/mackerel_chub/mackerel_chub.tres index 189904e..f4ceca1 100644 --- a/fish/species/mackerel_chub/mackerel_chub.tres +++ b/fish/species/mackerel_chub/mackerel_chub.tres @@ -13,10 +13,6 @@ allowed_location_tags = Array[StringName]([&"ocean"]) script = ExtResource("1_fish_data") id = &"mackerel_chub" display_name = "chub mackerel" -active = true -catalog_number = 704 -collection_group = &"Coastal pelagic fish" -logbook_fact = "chub mackerel school near the surface and follow plankton blooms. their dark wavy bars help identify them at a glance." allowed_water_types = 2 base_catch_weight = 0.5 catch_profile = ExtResource("2_profile") diff --git a/fish/species/mackerel_king/mackerel_king.tres b/fish/species/mackerel_king/mackerel_king.tres index 4e0a047..2c28071 100644 --- a/fish/species/mackerel_king/mackerel_king.tres +++ b/fish/species/mackerel_king/mackerel_king.tres @@ -13,10 +13,6 @@ allowed_location_tags = Array[StringName]([&"ocean"]) script = ExtResource("1_fish_data") id = &"mackerel_king" display_name = "king mackerel" -active = true -catalog_number = 706 -collection_group = &"Coastal pelagic fish" -logbook_fact = "king mackerel are swift coastal predators. their pointed teeth and long body are built for sudden bursts of speed." allowed_water_types = 2 rarity = 1 base_catch_weight = 0.3 diff --git a/fish/species/mackerel_spanish/mackerel_spanish.tres b/fish/species/mackerel_spanish/mackerel_spanish.tres index 0aee136..0319917 100644 --- a/fish/species/mackerel_spanish/mackerel_spanish.tres +++ b/fish/species/mackerel_spanish/mackerel_spanish.tres @@ -13,10 +13,6 @@ allowed_location_tags = Array[StringName]([&"ocean"]) script = ExtResource("1_fish_data") id = &"mackerel_spanish" display_name = "spanish mackerel" -active = true -catalog_number = 707 -collection_group = &"Coastal pelagic fish" -logbook_fact = "spanish mackerel hunt in warm coastal waters and often travel in loose schools while chasing baitfish." allowed_water_types = 2 rarity = 1 base_catch_weight = 0.35 diff --git a/fish/species/madtom_tadpole/madtom_tadpole.tres b/fish/species/madtom_tadpole/madtom_tadpole.tres deleted file mode 100644 index d43c1c5..0000000 --- a/fish/species/madtom_tadpole/madtom_tadpole.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false - -[resource] -script = ExtResource("1_fish_data") -id = &"madtom_tadpole" -display_name = "tadpole madtom" -active = false -catalog_number = 2406 -collection_group = &"Freshwater catfish" -logbook_fact = "tadpole madtoms are tiny nocturnal catfish that shelter beneath vegetation and debris. venomous fin spines discourage larger predators." -allowed_water_types = 1 -rarity = 2 -base_catch_weight = 0.35 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.02 -weight_max_lb = 0.15 -sell_value_min = 8 -sell_value_max = 16 -sell_value_curve = 0.95 diff --git a/fish/species/mahi_mahi/mahi_mahi.tres b/fish/species/mahi_mahi/mahi_mahi.tres deleted file mode 100644 index ded9958..0000000 --- a/fish/species/mahi_mahi/mahi_mahi.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -forbid_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"mahi_mahi" -display_name = "mahi-mahi" -active = false -catalog_number = 4701 -collection_group = &"Oceanic pelagic fish" -logbook_fact = "mahi-mahi flash brilliant blue, green, and gold while chasing prey near the surface. they grow quickly and gather around floating objects." -allowed_water_types = 2 -rarity = 2 -base_catch_weight = 0.28 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 2.0 -weight_max_lb = 50.0 -sell_value_min = 15 -sell_value_max = 38 -sell_value_curve = 0.84 diff --git a/fish/species/mahseer_golden/mahseer_golden.tres b/fish/species/mahseer_golden/mahseer_golden.tres deleted file mode 100644 index 4a51858..0000000 --- a/fish/species/mahseer_golden/mahseer_golden.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -require_rain = true - -[resource] -script = ExtResource("1_fish_data") -id = &"mahseer_golden" -display_name = "golden mahseer" -active = false -catalog_number = 7603 -collection_group = &"Tropical freshwater predators" -logbook_fact = "golden mahseer migrate through swift mountain rivers to reach spawning grounds. large scales shine bronze beneath reddish fins." -allowed_water_types = 1 -rarity = 3 -base_catch_weight = 0.09 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 8.0 -weight_max_lb = 90.0 -sell_value_min = 32 -sell_value_max = 72 -sell_value_curve = 0.82 diff --git a/fish/species/manatee_west_indian/manatee_west_indian.tres b/fish/species/manatee_west_indian/manatee_west_indian.tres deleted file mode 100644 index 65094d0..0000000 --- a/fish/species/manatee_west_indian/manatee_west_indian.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -forbid_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"manatee_west_indian" -display_name = "West Indian manatee" -active = false -catalog_number = 505 -collection_group = &"Coastal marine mammals" -logbook_fact = "west indian manatees graze aquatic plants in warm coastal water and rivers. they surface regularly to breathe through nostrils atop the snout." -allowed_water_types = 2 -rarity = 4 -base_catch_weight = 0.012 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 440.0 -weight_max_lb = 1300.0 -sell_value_min = 70 -sell_value_max = 160 -sell_value_curve = 0.77 diff --git a/fish/species/manta_ray_giant/manta_ray_giant.tres b/fish/species/manta_ray_giant/manta_ray_giant.tres deleted file mode 100644 index 29eeede..0000000 --- a/fish/species/manta_ray_giant/manta_ray_giant.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -forbid_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"manta_ray_giant" -display_name = "giant manta ray" -active = false -catalog_number = 5102 -collection_group = &"Rays and skates" -logbook_fact = "giant manta rays funnel plankton into wide mouths with two flexible head fins. each belly carries a unique pattern of dark spots." -allowed_water_types = 2 -rarity = 4 -base_catch_weight = 0.025 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 100.0 -weight_max_lb = 1000.0 -sell_value_min = 65 -sell_value_max = 150 -sell_value_curve = 0.76 diff --git a/fish/species/marlin_black/marlin_black.tres b/fish/species/marlin_black/marlin_black.tres index 93f0ba2..39110c5 100644 --- a/fish/species/marlin_black/marlin_black.tres +++ b/fish/species/marlin_black/marlin_black.tres @@ -13,10 +13,6 @@ allowed_location_tags = Array[StringName]([&"ocean"]) script = ExtResource("1_fish_data") id = &"marlin_black" display_name = "black marlin" -active = true -catalog_number = 4601 -collection_group = &"Oceanic billfish" -logbook_fact = "black marlin are powerful billfish that spend much of their lives in warm open ocean and can make blistering runs." allowed_water_types = 2 rarity = 3 base_catch_weight = 0.08 diff --git a/fish/species/marlin_blue/marlin_blue.tres b/fish/species/marlin_blue/marlin_blue.tres index 51cff14..b3328ba 100644 --- a/fish/species/marlin_blue/marlin_blue.tres +++ b/fish/species/marlin_blue/marlin_blue.tres @@ -13,10 +13,6 @@ allowed_location_tags = Array[StringName]([&"ocean"]) script = ExtResource("1_fish_data") id = &"marlin_blue" display_name = "blue marlin" -active = true -catalog_number = 4602 -collection_group = &"Oceanic billfish" -logbook_fact = "blue marlin are highly migratory open-ocean hunters. their long bill helps them stun prey before turning back to feed." allowed_water_types = 2 rarity = 4 base_catch_weight = 0.05 diff --git a/fish/species/marlin_white/marlin_white.tres b/fish/species/marlin_white/marlin_white.tres index bbbf34f..e90651c 100644 --- a/fish/species/marlin_white/marlin_white.tres +++ b/fish/species/marlin_white/marlin_white.tres @@ -13,10 +13,6 @@ allowed_location_tags = Array[StringName]([&"ocean"]) script = ExtResource("1_fish_data") id = &"marlin_white" display_name = "white marlin" -active = true -catalog_number = 4605 -collection_group = &"Oceanic billfish" -logbook_fact = "white marlin favor warm offshore water and use their rounded dorsal fin and bill to weave through schools of prey." allowed_water_types = 2 rarity = 3 base_catch_weight = 0.1 diff --git a/fish/species/menhaden_atlantic/menhaden_atlantic.tres b/fish/species/menhaden_atlantic/menhaden_atlantic.tres deleted file mode 100644 index ced8488..0000000 --- a/fish/species/menhaden_atlantic/menhaden_atlantic.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"menhaden_atlantic" -display_name = "atlantic menhaden" -active = false -catalog_number = 802 -collection_group = &"Coastal schooling fish" -logbook_fact = "atlantic menhaden strain plankton from coastal water with fine gill rakers. dense schools feed whales, seabirds, and predatory fish." -allowed_water_types = 2 -rarity = 0 -base_catch_weight = 3.0 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.1 -weight_max_lb = 1.5 -sell_value_min = 2 -sell_value_max = 5 -sell_value_curve = 0.98 diff --git a/fish/species/milkfish/milkfish.tres b/fish/species/milkfish/milkfish.tres deleted file mode 100644 index 08d5627..0000000 --- a/fish/species/milkfish/milkfish.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"milkfish" -display_name = "milkfish" -active = false -catalog_number = 7101 -collection_group = &"Tropical coastal fish" -logbook_fact = "milkfish graze algae and tiny organisms in warm coastal shallows. deeply forked tails drive large schools through lagoons and estuaries." -allowed_water_types = 2 -rarity = 0 -base_catch_weight = 1.8 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.5 -weight_max_lb = 25.0 -sell_value_min = 4 -sell_value_max = 12 -sell_value_curve = 0.88 diff --git a/fish/species/minnow_fathead/minnow_fathead.tres b/fish/species/minnow_fathead/minnow_fathead.tres deleted file mode 100644 index be28197..0000000 --- a/fish/species/minnow_fathead/minnow_fathead.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"minnow_fathead" -display_name = "fathead minnow" -active = false -catalog_number = 2804 -collection_group = &"Freshwater minnows" -logbook_fact = "fathead minnows tolerate warm, muddy ponds where many fish struggle. males guard eggs laid beneath rocks, logs, and other cover." -allowed_water_types = 1 -rarity = 0 -base_catch_weight = 4.5 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.02 -weight_max_lb = 0.2 -sell_value_min = 1 -sell_value_max = 2 -sell_value_curve = 1.0 diff --git a/fish/species/monkfish/monkfish.tres b/fish/species/monkfish/monkfish.tres deleted file mode 100644 index a4374e1..0000000 --- a/fish/species/monkfish/monkfish.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false -require_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"monkfish" -display_name = "monkfish" -active = false -catalog_number = 603 -collection_group = &"Coastal oddities" -logbook_fact = "monkfish hide against the bottom and wave a fleshy lure above a cavernous mouth. a sudden gulp draws fish and crustaceans inward." -allowed_water_types = 2 -rarity = 2 -base_catch_weight = 0.25 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 2.0 -weight_max_lb = 55.0 -sell_value_min = 14 -sell_value_max = 35 -sell_value_curve = 0.84 diff --git a/fish/species/mooneye/mooneye.tres b/fish/species/mooneye/mooneye.tres deleted file mode 100644 index e663618..0000000 --- a/fish/species/mooneye/mooneye.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false - -[resource] -script = ExtResource("1_fish_data") -id = &"mooneye" -display_name = "mooneye" -active = false -catalog_number = 2904 -collection_group = &"Freshwater oddities" -logbook_fact = "mooneyes flash silver in clear rivers and lakes while feeding near the surface. their large eyes suit evening hunts for insects and small fish." -allowed_water_types = 1 -rarity = 1 -base_catch_weight = 0.85 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.2 -weight_max_lb = 4.0 -sell_value_min = 5 -sell_value_max = 11 -sell_value_curve = 0.92 diff --git a/fish/species/moray_green/moray_green.tres b/fish/species/moray_green/moray_green.tres deleted file mode 100644 index 36aee31..0000000 --- a/fish/species/moray_green/moray_green.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false - -[resource] -script = ExtResource("1_fish_data") -id = &"moray_green" -display_name = "green moray" -active = false -catalog_number = 5301 -collection_group = &"Reef eels" -logbook_fact = "green morays appear green because yellow mucus coats blue-gray skin. a second set of jaws pulls captured prey deeper into the throat." -allowed_water_types = 2 -rarity = 2 -base_catch_weight = 0.28 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 1.0 -weight_max_lb = 30.0 -sell_value_min = 13 -sell_value_max = 32 -sell_value_curve = 0.86 diff --git a/fish/species/mudskipper_atlantic/mudskipper_atlantic.tres b/fish/species/mudskipper_atlantic/mudskipper_atlantic.tres deleted file mode 100644 index f548d93..0000000 --- a/fish/species/mudskipper_atlantic/mudskipper_atlantic.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -require_rain = true - -[resource] -script = ExtResource("1_fish_data") -id = &"mudskipper_atlantic" -display_name = "atlantic mudskipper" -active = false -catalog_number = 201 -collection_group = &"Brackish oddities" -logbook_fact = "atlantic mudskippers use sturdy fins to hop and crawl across exposed mud. moist skin and mouth linings let them breathe out of water." -allowed_water_types = 2 -rarity = 1 -base_catch_weight = 1.0 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.03 -weight_max_lb = 0.5 -sell_value_min = 5 -sell_value_max = 11 -sell_value_curve = 0.95 diff --git a/fish/species/mullet_red/mullet_red.tres b/fish/species/mullet_red/mullet_red.tres deleted file mode 100644 index 3b2a878..0000000 --- a/fish/species/mullet_red/mullet_red.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"mullet_red" -display_name = "red mullet" -active = false -catalog_number = 301 -collection_group = &"Coastal bottom fish" -logbook_fact = "red mullet comb sandy bottoms with two chin barbels that taste hidden prey. their foraging leaves winding trails in the sediment." -allowed_water_types = 2 -rarity = 1 -base_catch_weight = 0.9 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.1 -weight_max_lb = 3.0 -sell_value_min = 5 -sell_value_max = 11 -sell_value_curve = 0.92 diff --git a/fish/species/mullet_striped/mullet_striped.tres b/fish/species/mullet_striped/mullet_striped.tres deleted file mode 100644 index 7d75d6b..0000000 --- a/fish/species/mullet_striped/mullet_striped.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"mullet_striped" -display_name = "striped mullet" -active = false -catalog_number = 6804 -collection_group = &"Temperate estuary" -logbook_fact = "striped mullet leap clear of the water and travel in coastal schools. they graze algae and detritus with specialized digestive systems." -allowed_water_types = 3 -rarity = 0 -base_catch_weight = 2.5 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.3 -weight_max_lb = 8.0 -sell_value_min = 3 -sell_value_max = 8 -sell_value_curve = 0.92 diff --git a/fish/species/muskellunge/muskellunge.tres b/fish/species/muskellunge/muskellunge.tres deleted file mode 100644 index 84c8513..0000000 --- a/fish/species/muskellunge/muskellunge.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -require_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"muskellunge" -display_name = "muskellunge" -active = false -catalog_number = 2704 -collection_group = &"Freshwater giants" -logbook_fact = "muskellunge wait motionless among weeds before exploding toward prey. pale bodies carry bars or spots that fade into broken underwater light." -allowed_water_types = 1 -rarity = 3 -base_catch_weight = 0.11 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 8.0 -weight_max_lb = 60.0 -sell_value_min = 32 -sell_value_max = 72 -sell_value_curve = 0.82 diff --git a/fish/species/nautilus_chambered/nautilus_chambered.tres b/fish/species/nautilus_chambered/nautilus_chambered.tres deleted file mode 100644 index fd6189c..0000000 --- a/fish/species/nautilus_chambered/nautilus_chambered.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false -require_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"nautilus_chambered" -display_name = "chambered nautilus" -active = false -catalog_number = 1501 -collection_group = &"Cuttlefish and nautiluses" -logbook_fact = "chambered nautiluses regulate buoyancy with gas-filled shell chambers. dozens of small tentacles feel for food in dark reef slopes." -allowed_water_types = 2 -rarity = 4 -base_catch_weight = 0.05 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.5 -weight_max_lb = 3.0 -sell_value_min = 34 -sell_value_max = 76 -sell_value_curve = 0.92 diff --git a/fish/species/needlefish_hound/needlefish_hound.tres b/fish/species/needlefish_hound/needlefish_hound.tres deleted file mode 100644 index ecb8226..0000000 --- a/fish/species/needlefish_hound/needlefish_hound.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"needlefish_hound" -display_name = "houndfish" -active = false -catalog_number = 6602 -collection_group = &"Surface ocean fish" -logbook_fact = "houndfish hunt near the surface with long jaws filled with fine teeth. powerful leaps can carry their narrow bodies far above the water." -allowed_water_types = 2 -rarity = 2 -base_catch_weight = 0.3 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.5 -weight_max_lb = 10.0 -sell_value_min = 11 -sell_value_max = 25 -sell_value_curve = 0.88 diff --git a/fish/species/oarfish_giant/oarfish_giant.tres b/fish/species/oarfish_giant/oarfish_giant.tres deleted file mode 100644 index f34adcc..0000000 --- a/fish/species/oarfish_giant/oarfish_giant.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false -require_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"oarfish_giant" -display_name = "giant oarfish" -active = false -catalog_number = 1701 -collection_group = &"Deep-sea legends" -logbook_fact = "giant oarfish drift vertically through deep open water, rowing with a crimson dorsal fin. their ribbon-like bodies can reach remarkable lengths." -allowed_water_types = 2 -rarity = 4 -base_catch_weight = 0.035 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 20.0 -weight_max_lb = 600.0 -sell_value_min = 60 -sell_value_max = 140 -sell_value_curve = 0.78 diff --git a/fish/species/ocean_perch_pacific/ocean_perch_pacific.tres b/fish/species/ocean_perch_pacific/ocean_perch_pacific.tres deleted file mode 100644 index a7f9873..0000000 --- a/fish/species/ocean_perch_pacific/ocean_perch_pacific.tres +++ /dev/null @@ -1,27 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") - -[resource] -script = ExtResource("1_fish_data") -id = &"ocean_perch_pacific" -display_name = "Pacific ocean perch" -active = false -catalog_number = 1603 -collection_group = &"Deep shelf fish" -logbook_fact = "pacific ocean perch hover around deep rocky reefs in the north pacific. these slow-growing fish give birth to live young." -allowed_water_types = 2 -rarity = 1 -base_catch_weight = 0.8 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.3 -weight_max_lb = 12.0 -sell_value_min = 7 -sell_value_max = 17 -sell_value_curve = 0.88 diff --git a/fish/species/octopus_common/octopus_common.tres b/fish/species/octopus_common/octopus_common.tres deleted file mode 100644 index b86950e..0000000 --- a/fish/species/octopus_common/octopus_common.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false - -[resource] -script = ExtResource("1_fish_data") -id = &"octopus_common" -display_name = "common octopus" -active = false -catalog_number = 4901 -collection_group = &"Octopuses" -logbook_fact = "common octopuses squeeze through narrow cracks and solve problems while hunting reefs. skin cells rapidly change color and texture." -allowed_water_types = 2 -rarity = 1 -base_catch_weight = 0.65 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.2 -weight_max_lb = 22.0 -sell_value_min = 7 -sell_value_max = 18 -sell_value_curve = 0.87 diff --git a/fish/species/octopus_day/octopus_day.tres b/fish/species/octopus_day/octopus_day.tres deleted file mode 100644 index aada4c1..0000000 --- a/fish/species/octopus_day/octopus_day.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -forbid_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"octopus_day" -display_name = "day octopus" -active = false -catalog_number = 4902 -collection_group = &"Octopuses" -logbook_fact = "day octopuses forage across tropical reefs while the sun is high. shifting bars and spots communicate alarm, camouflage, and threat." -allowed_water_types = 2 -rarity = 2 -base_catch_weight = 0.24 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.2 -weight_max_lb = 15.0 -sell_value_min = 15 -sell_value_max = 36 -sell_value_curve = 0.88 diff --git a/fish/species/octopus_giant_pacific/octopus_giant_pacific.tres b/fish/species/octopus_giant_pacific/octopus_giant_pacific.tres deleted file mode 100644 index 09aca6d..0000000 --- a/fish/species/octopus_giant_pacific/octopus_giant_pacific.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false -require_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"octopus_giant_pacific" -display_name = "giant Pacific octopus" -active = false -catalog_number = 4903 -collection_group = &"Octopuses" -logbook_fact = "giant pacific octopuses explore cold rocky dens with thousands of arm suckers. females guard their eggs without feeding until they hatch." -allowed_water_types = 2 -rarity = 3 -base_catch_weight = 0.1 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 5.0 -weight_max_lb = 200.0 -sell_value_min = 28 -sell_value_max = 70 -sell_value_curve = 0.81 diff --git a/fish/species/octopus_greater_blue_ringed/octopus_greater_blue_ringed.tres b/fish/species/octopus_greater_blue_ringed/octopus_greater_blue_ringed.tres deleted file mode 100644 index a59bd06..0000000 --- a/fish/species/octopus_greater_blue_ringed/octopus_greater_blue_ringed.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -require_rain = true - -[resource] -script = ExtResource("1_fish_data") -id = &"octopus_greater_blue_ringed" -display_name = "greater blue-ringed octopus" -active = false -catalog_number = 4904 -collection_group = &"Octopuses" -logbook_fact = "greater blue-ringed octopuses reveal vivid rings when threatened. a tiny beak can deliver venom strong enough to stop breathing." -allowed_water_types = 2 -rarity = 4 -base_catch_weight = 0.04 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.05 -weight_max_lb = 0.3 -sell_value_min = 38 -sell_value_max = 82 -sell_value_curve = 0.96 diff --git a/fish/species/opah/opah.tres b/fish/species/opah/opah.tres deleted file mode 100644 index 2bb4231..0000000 --- a/fish/species/opah/opah.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -forbid_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"opah" -display_name = "opah" -active = false -catalog_number = 4702 -collection_group = &"Oceanic pelagic fish" -logbook_fact = "opah circulate warm blood through much of the body, an unusual trait among fish. round silver flanks glow with red fins and pale spots." -allowed_water_types = 2 -rarity = 3 -base_catch_weight = 0.09 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 20.0 -weight_max_lb = 600.0 -sell_value_min = 36 -sell_value_max = 88 -sell_value_curve = 0.8 diff --git a/fish/species/oscar/oscar.tres b/fish/species/oscar/oscar.tres deleted file mode 100644 index d3da024..0000000 --- a/fish/species/oscar/oscar.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"oscar" -display_name = "oscar" -active = false -catalog_number = 7507 -collection_group = &"Tropical freshwater fish" -logbook_fact = "oscars are large south american cichlids that recognize routines and defend territories. a tail eyespot may redirect attacks away from the head." -allowed_water_types = 1 -rarity = 1 -base_catch_weight = 0.8 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.3 -weight_max_lb = 4.0 -sell_value_min = 6 -sell_value_max = 14 -sell_value_curve = 0.9 diff --git a/fish/species/oyster_black_lip_pearl/oyster_black_lip_pearl.tres b/fish/species/oyster_black_lip_pearl/oyster_black_lip_pearl.tres deleted file mode 100644 index cc95d74..0000000 --- a/fish/species/oyster_black_lip_pearl/oyster_black_lip_pearl.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"oyster_black_lip_pearl" -display_name = "black-lip pearl oyster" -active = false -catalog_number = 6401 -collection_group = &"Shellfish" -logbook_fact = "black-lip pearl oysters line their shells with dark-edged nacre. a trapped irritant can become coated in the same pearly material." -allowed_water_types = 2 -rarity = 2 -base_catch_weight = 0.22 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.1 -weight_max_lb = 5.0 -sell_value_min = 14 -sell_value_max = 40 -sell_value_curve = 0.91 diff --git a/fish/species/paddlefish/paddlefish.tres b/fish/species/paddlefish/paddlefish.tres deleted file mode 100644 index c9d4925..0000000 --- a/fish/species/paddlefish/paddlefish.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -require_rain = true - -[resource] -script = ExtResource("1_fish_data") -id = &"paddlefish" -display_name = "paddlefish" -active = false -catalog_number = 104 -collection_group = &"Ancient freshwater fish" -logbook_fact = "paddlefish cruise open rivers with their mouths wide, filtering tiny plankton from the water. the broad snout senses faint electrical signals." -allowed_water_types = 1 -rarity = 3 -base_catch_weight = 0.1 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 10.0 -weight_max_lb = 120.0 -sell_value_min = 34 -sell_value_max = 76 -sell_value_curve = 0.82 diff --git a/fish/species/parrotfish_rainbow/parrotfish_rainbow.tres b/fish/species/parrotfish_rainbow/parrotfish_rainbow.tres deleted file mode 100644 index 3320b61..0000000 --- a/fish/species/parrotfish_rainbow/parrotfish_rainbow.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"parrotfish_rainbow" -display_name = "rainbow parrotfish" -active = false -catalog_number = 5502 -collection_group = &"Reef grazers" -logbook_fact = "rainbow parrotfish scrape algae from reefs with fused beak-like teeth. crushed coral passes through them and returns to the reef as sand." -allowed_water_types = 2 -rarity = 3 -base_catch_weight = 0.12 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 2.0 -weight_max_lb = 40.0 -sell_value_min = 25 -sell_value_max = 58 -sell_value_curve = 0.84 diff --git a/fish/species/parrotfish_stoplight/parrotfish_stoplight.tres b/fish/species/parrotfish_stoplight/parrotfish_stoplight.tres deleted file mode 100644 index 2392e88..0000000 --- a/fish/species/parrotfish_stoplight/parrotfish_stoplight.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"parrotfish_stoplight" -display_name = "stoplight parrotfish" -active = false -catalog_number = 5503 -collection_group = &"Reef grazers" -logbook_fact = "stoplight parrotfish change color dramatically as they mature. powerful dental plates bite algae from hard reef surfaces." -allowed_water_types = 2 -rarity = 2 -base_catch_weight = 0.28 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.5 -weight_max_lb = 15.0 -sell_value_min = 12 -sell_value_max = 29 -sell_value_curve = 0.88 diff --git a/fish/species/peacock_bass/peacock_bass.tres b/fish/species/peacock_bass/peacock_bass.tres deleted file mode 100644 index 39487fe..0000000 --- a/fish/species/peacock_bass/peacock_bass.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"peacock_bass" -display_name = "peacock bass" -active = false -catalog_number = 7604 -collection_group = &"Tropical freshwater predators" -logbook_fact = "peacock bass are aggressive south american cichlids rather than true bass. adults guard nests and hunt fish in warm clear water." -allowed_water_types = 1 -rarity = 2 -base_catch_weight = 0.25 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 1.0 -weight_max_lb = 25.0 -sell_value_min = 15 -sell_value_max = 36 -sell_value_curve = 0.84 diff --git a/fish/species/permit/permit.tres b/fish/species/permit/permit.tres deleted file mode 100644 index bd36724..0000000 --- a/fish/species/permit/permit.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -forbid_rain = true - -[resource] -script = ExtResource("1_fish_data") -id = &"permit" -display_name = "permit" -active = false -catalog_number = 7404 -collection_group = &"Tropical flats fish" -logbook_fact = "permit browse tropical flats for crabs and shellfish with rubbery mouths. tall silver bodies carry long sickle-shaped dorsal and anal fins." -allowed_water_types = 2 -rarity = 3 -base_catch_weight = 0.11 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 3.0 -weight_max_lb = 50.0 -sell_value_min = 27 -sell_value_max = 62 -sell_value_curve = 0.84 diff --git a/fish/species/pickerel_chain/pickerel_chain.tres b/fish/species/pickerel_chain/pickerel_chain.tres deleted file mode 100644 index f69ab5f..0000000 --- a/fish/species/pickerel_chain/pickerel_chain.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -require_rain = true - -[resource] -script = ExtResource("1_fish_data") -id = &"pickerel_chain" -display_name = "chain pickerel" -active = false -catalog_number = 3301 -collection_group = &"Freshwater predators" -logbook_fact = "chain pickerel hover among vegetation before darting at fish and frogs. a chain-like pattern breaks up their green flanks." -allowed_water_types = 1 -rarity = 1 -base_catch_weight = 0.8 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.5 -weight_max_lb = 9.0 -sell_value_min = 6 -sell_value_max = 15 -sell_value_curve = 0.9 diff --git a/fish/species/pickerel_grass/pickerel_grass.tres b/fish/species/pickerel_grass/pickerel_grass.tres deleted file mode 100644 index ef59b58..0000000 --- a/fish/species/pickerel_grass/pickerel_grass.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"pickerel_grass" -display_name = "grass pickerel" -active = false -catalog_number = 3302 -collection_group = &"Freshwater predators" -logbook_fact = "grass pickerel remain small enough to hunt in narrow, weedy creeks and marshes. dark bars camouflage their slim bodies among stems." -allowed_water_types = 1 -rarity = 0 -base_catch_weight = 2.1 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.1 -weight_max_lb = 1.5 -sell_value_min = 2 -sell_value_max = 6 -sell_value_curve = 0.95 diff --git a/fish/species/pike_northern/pike_northern.tres b/fish/species/pike_northern/pike_northern.tres deleted file mode 100644 index eb4dc5d..0000000 --- a/fish/species/pike_northern/pike_northern.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"pike_northern" -display_name = "northern pike" -active = false -catalog_number = 3303 -collection_group = &"Freshwater predators" -logbook_fact = "northern pike are solitary ambush hunters built for sudden acceleration. pale bean-shaped spots cover their long green bodies." -allowed_water_types = 1 -rarity = 1 -base_catch_weight = 0.75 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 1.0 -weight_max_lb = 30.0 -sell_value_min = 8 -sell_value_max = 24 -sell_value_curve = 0.85 diff --git a/fish/species/pipefish_bay/pipefish_bay.tres b/fish/species/pipefish_bay/pipefish_bay.tres deleted file mode 100644 index f5582c4..0000000 --- a/fish/species/pipefish_bay/pipefish_bay.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"pipefish_bay" -display_name = "bay pipefish" -active = false -catalog_number = 601 -collection_group = &"Coastal oddities" -logbook_fact = "bay pipefish hide upright among seagrass, matching the blades with their slender bodies. males carry developing eggs in a brood pouch." -allowed_water_types = 2 -rarity = 1 -base_catch_weight = 0.9 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.005 -weight_max_lb = 0.04 -sell_value_min = 4 -sell_value_max = 9 -sell_value_curve = 1.0 diff --git a/fish/species/piranha_red_bellied/piranha_red_bellied.tres b/fish/species/piranha_red_bellied/piranha_red_bellied.tres deleted file mode 100644 index efca0b8..0000000 --- a/fish/species/piranha_red_bellied/piranha_red_bellied.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -require_rain = true - -[resource] -script = ExtResource("1_fish_data") -id = &"piranha_red_bellied" -display_name = "red-bellied piranha" -active = false -catalog_number = 7605 -collection_group = &"Tropical freshwater predators" -logbook_fact = "red-bellied piranhas communicate with barks and drum-like sounds. schools provide protection as they search for fish, insects, and carrion." -allowed_water_types = 1 -rarity = 2 -base_catch_weight = 0.3 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.2 -weight_max_lb = 4.0 -sell_value_min = 12 -sell_value_max = 27 -sell_value_curve = 0.9 diff --git a/fish/species/plaice_european/plaice_european.tres b/fish/species/plaice_european/plaice_european.tres deleted file mode 100644 index 9e9be9a..0000000 --- a/fish/species/plaice_european/plaice_european.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"plaice_european" -display_name = "European plaice" -active = false -catalog_number = 401 -collection_group = &"Coastal flatfish" -logbook_fact = "european plaice lie flat on the seafloor with both eyes on the same side. orange spots help distinguish them from neighboring flatfish." -allowed_water_types = 2 -rarity = 0 -base_catch_weight = 1.8 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.2 -weight_max_lb = 10.0 -sell_value_min = 4 -sell_value_max = 10 -sell_value_curve = 0.9 diff --git a/fish/species/pollock_alaska/pollock_alaska.tres b/fish/species/pollock_alaska/pollock_alaska.tres deleted file mode 100644 index 0e4af05..0000000 --- a/fish/species/pollock_alaska/pollock_alaska.tres +++ /dev/null @@ -1,27 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") - -[resource] -script = ExtResource("1_fish_data") -id = &"pollock_alaska" -display_name = "Alaska pollock" -active = false -catalog_number = 1401 -collection_group = &"Cold shelf fish" -logbook_fact = "alaska pollock form vast schools over cold northern shelves. they feed on plankton and fish while supporting many larger predators." -allowed_water_types = 2 -rarity = 0 -base_catch_weight = 2.5 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.3 -weight_max_lb = 8.0 -sell_value_min = 3 -sell_value_max = 8 -sell_value_curve = 0.92 diff --git a/fish/species/pollock_atlantic/pollock_atlantic.tres b/fish/species/pollock_atlantic/pollock_atlantic.tres deleted file mode 100644 index 7d50342..0000000 --- a/fish/species/pollock_atlantic/pollock_atlantic.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -forbid_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"pollock_atlantic" -display_name = "Atlantic pollock" -active = false -catalog_number = 1403 -collection_group = &"Cold shelf fish" -logbook_fact = "atlantic pollock are swift relatives of cod with dark backs and pale lateral lines. adults gather around rocky banks and wrecks." -allowed_water_types = 2 -rarity = 1 -base_catch_weight = 0.9 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 1.0 -weight_max_lb = 35.0 -sell_value_min = 7 -sell_value_max = 18 -sell_value_curve = 0.86 diff --git a/fish/species/pomfret_black/pomfret_black.tres b/fish/species/pomfret_black/pomfret_black.tres index d3e73d6..8020100 100644 --- a/fish/species/pomfret_black/pomfret_black.tres +++ b/fish/species/pomfret_black/pomfret_black.tres @@ -13,10 +13,6 @@ allowed_location_tags = Array[StringName]([&"ocean"]) script = ExtResource("1_fish_data") id = &"pomfret_black" display_name = "black pomfret" -active = true -catalog_number = 803 -collection_group = &"Coastal schooling fish" -logbook_fact = "black pomfret have a deep, laterally compressed body that lets them maneuver neatly through open water." allowed_water_types = 2 rarity = 1 base_catch_weight = 0.3 diff --git a/fish/species/pomfret_chinese/pomfret_chinese.tres b/fish/species/pomfret_chinese/pomfret_chinese.tres index 76d6943..2eaf34b 100644 --- a/fish/species/pomfret_chinese/pomfret_chinese.tres +++ b/fish/species/pomfret_chinese/pomfret_chinese.tres @@ -13,10 +13,6 @@ allowed_location_tags = Array[StringName]([&"ocean"]) script = ExtResource("1_fish_data") id = &"pomfret_chinese" display_name = "chinese pomfret" -active = true -catalog_number = 804 -collection_group = &"Coastal schooling fish" -logbook_fact = "chinese pomfret are silvery schooling fish with a tall, flattened body and long sickle-shaped fins." allowed_water_types = 2 rarity = 1 base_catch_weight = 0.3 diff --git a/fish/species/pomfret_golden/pomfret_golden.tres b/fish/species/pomfret_golden/pomfret_golden.tres index 8637db1..da1f561 100644 --- a/fish/species/pomfret_golden/pomfret_golden.tres +++ b/fish/species/pomfret_golden/pomfret_golden.tres @@ -13,10 +13,6 @@ allowed_location_tags = Array[StringName]([&"ocean"]) script = ExtResource("1_fish_data") id = &"pomfret_golden" display_name = "golden pomfret" -active = true -catalog_number = 807 -collection_group = &"Coastal schooling fish" -logbook_fact = "golden pomfret are warm-water swimmers whose golden sheen is most noticeable along the fins and flanks." allowed_water_types = 2 rarity = 2 base_catch_weight = 0.18 diff --git a/fish/species/pomfret_white/pomfret_white.tres b/fish/species/pomfret_white/pomfret_white.tres index 7152086..fa317c7 100644 --- a/fish/species/pomfret_white/pomfret_white.tres +++ b/fish/species/pomfret_white/pomfret_white.tres @@ -13,10 +13,6 @@ allowed_location_tags = Array[StringName]([&"ocean"]) script = ExtResource("1_fish_data") id = &"pomfret_white" display_name = "white pomfret" -active = true -catalog_number = 810 -collection_group = &"Coastal schooling fish" -logbook_fact = "white pomfret gather over coastal grounds and use their compact, deep bodies to turn quickly while feeding." allowed_water_types = 2 base_catch_weight = 0.45 catch_profile = ExtResource("2_profile") diff --git a/fish/species/pompano_african/pompano_african.tres b/fish/species/pompano_african/pompano_african.tres deleted file mode 100644 index 0b73340..0000000 --- a/fish/species/pompano_african/pompano_african.tres +++ /dev/null @@ -1,27 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") - -[resource] -script = ExtResource("1_fish_data") -id = &"pompano_african" -display_name = "African pompano" -active = false -catalog_number = 3601 -collection_group = &"Large coastal predators" -logbook_fact = "african pompano develop long streaming fin rays while young. adults become deep-bodied silver hunters around reefs and offshore structure." -allowed_water_types = 2 -rarity = 2 -base_catch_weight = 0.26 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 2.0 -weight_max_lb = 50.0 -sell_value_min = 14 -sell_value_max = 35 -sell_value_curve = 0.84 diff --git a/fish/species/pompano_florida/pompano_florida.tres b/fish/species/pompano_florida/pompano_florida.tres deleted file mode 100644 index be7a10e..0000000 --- a/fish/species/pompano_florida/pompano_florida.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -forbid_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"pompano_florida" -display_name = "Florida pompano" -active = false -catalog_number = 7402 -collection_group = &"Tropical flats fish" -logbook_fact = "florida pompano search warm surf for crabs, clams, and sand fleas. short blunt snouts lead into deep, silvery bodies." -allowed_water_types = 2 -rarity = 1 -base_catch_weight = 0.85 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.5 -weight_max_lb = 9.0 -sell_value_min = 7 -sell_value_max = 16 -sell_value_curve = 0.88 diff --git a/fish/species/porcupinefish_spotted/porcupinefish_spotted.tres b/fish/species/porcupinefish_spotted/porcupinefish_spotted.tres deleted file mode 100644 index 1e51582..0000000 --- a/fish/species/porcupinefish_spotted/porcupinefish_spotted.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false -require_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"porcupinefish_spotted" -display_name = "spotted porcupinefish" -active = false -catalog_number = 5607 -collection_group = &"Reef oddities" -logbook_fact = "spotted porcupinefish inflate until long spines stand outward. fused teeth form a strong beak for crushing shelled prey." -allowed_water_types = 2 -rarity = 3 -base_catch_weight = 0.12 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.5 -weight_max_lb = 7.0 -sell_value_min = 24 -sell_value_max = 54 -sell_value_curve = 0.9 diff --git a/fish/species/porgy_scup/porgy_scup.tres b/fish/species/porgy_scup/porgy_scup.tres deleted file mode 100644 index dec3c55..0000000 --- a/fish/species/porgy_scup/porgy_scup.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"porgy_scup" -display_name = "scup" -active = false -catalog_number = 6904 -collection_group = &"Temperate reef fish" -logbook_fact = "scup use small strong teeth to crush shellfish and other bottom prey. deep silver bodies gather around piers, reefs, and eelgrass." -allowed_water_types = 2 -rarity = 0 -base_catch_weight = 2.2 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.1 -weight_max_lb = 5.0 -sell_value_min = 3 -sell_value_max = 8 -sell_value_curve = 0.92 diff --git a/fish/species/pufferfish_guineafowl/pufferfish_guineafowl.tres b/fish/species/pufferfish_guineafowl/pufferfish_guineafowl.tres deleted file mode 100644 index 3771896..0000000 --- a/fish/species/pufferfish_guineafowl/pufferfish_guineafowl.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"pufferfish_guineafowl" -display_name = "guineafowl puffer" -active = false -catalog_number = 5603 -collection_group = &"Reef oddities" -logbook_fact = "guineafowl puffers swallow water to inflate when threatened. adults may shift from a spotted dark pattern to a vivid yellow form." -allowed_water_types = 2 -rarity = 2 -base_catch_weight = 0.3 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.2 -weight_max_lb = 5.0 -sell_value_min = 11 -sell_value_max = 26 -sell_value_curve = 0.9 diff --git a/fish/species/pumpkinseed/pumpkinseed.tres b/fish/species/pumpkinseed/pumpkinseed.tres deleted file mode 100644 index 5a24e96..0000000 --- a/fish/species/pumpkinseed/pumpkinseed.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"pumpkinseed" -display_name = "pumpkinseed" -active = false -catalog_number = 3104 -collection_group = &"Freshwater panfish" -logbook_fact = "pumpkinseeds use compact teeth to crush snails and other hard prey. blue facial lines and an orange gill spot brighten their round bodies." -allowed_water_types = 1 -rarity = 0 -base_catch_weight = 3.0 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.1 -weight_max_lb = 1.3 -sell_value_min = 2 -sell_value_max = 5 -sell_value_curve = 1.0 diff --git a/fish/species/queenfish_talang/queenfish_talang.tres b/fish/species/queenfish_talang/queenfish_talang.tres deleted file mode 100644 index 6b3f91c..0000000 --- a/fish/species/queenfish_talang/queenfish_talang.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"queenfish_talang" -display_name = "talang queenfish" -active = false -catalog_number = 708 -collection_group = &"Coastal pelagic fish" -logbook_fact = "talang queenfish chase schooling prey near warm coasts and estuaries. hooked teeth and a deeply forked tail suit their rapid attacks." -allowed_water_types = 2 -rarity = 1 -base_catch_weight = 0.8 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.5 -weight_max_lb = 20.0 -sell_value_min = 7 -sell_value_max = 18 -sell_value_curve = 0.86 diff --git a/fish/species/quillback/quillback.tres b/fish/species/quillback/quillback.tres deleted file mode 100644 index 915fc08..0000000 --- a/fish/species/quillback/quillback.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"quillback" -display_name = "quillback" -active = false -catalog_number = 2303 -collection_group = &"Freshwater bottom fish" -logbook_fact = "quillbacks carry a long first dorsal ray that rises like a quill. small mouths gather insect larvae and other food from river and lake bottoms." -allowed_water_types = 1 -rarity = 1 -base_catch_weight = 0.8 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.5 -weight_max_lb = 15.0 -sell_value_min = 6 -sell_value_max = 16 -sell_value_curve = 0.88 diff --git a/fish/species/red_drum/red_drum.tres b/fish/species/red_drum/red_drum.tres deleted file mode 100644 index 98c6bdd..0000000 --- a/fish/species/red_drum/red_drum.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -require_rain = true - -[resource] -script = ExtResource("1_fish_data") -id = &"red_drum" -display_name = "red drum" -active = false -catalog_number = 6803 -collection_group = &"Temperate estuary" -logbook_fact = "red drum use powerful tails to patrol surf and estuaries. one or more black spots near the tail may confuse predators about which end is the head." -allowed_water_types = 2 -rarity = 1 -base_catch_weight = 0.75 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 1.0 -weight_max_lb = 45.0 -sell_value_min = 8 -sell_value_max = 23 -sell_value_curve = 0.84 diff --git a/fish/species/redear_sunfish/redear_sunfish.tres b/fish/species/redear_sunfish/redear_sunfish.tres deleted file mode 100644 index 55221d8..0000000 --- a/fish/species/redear_sunfish/redear_sunfish.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"redear_sunfish" -display_name = "redear sunfish" -active = false -catalog_number = 3105 -collection_group = &"Freshwater panfish" -logbook_fact = "redear sunfish specialize in snails, crushing shells with strong throat teeth. a red or orange margin marks the dark flap behind the gill." -allowed_water_types = 1 -rarity = 1 -base_catch_weight = 1.1 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.2 -weight_max_lb = 3.0 -sell_value_min = 4 -sell_value_max = 9 -sell_value_curve = 0.95 diff --git a/fish/species/redhorse_golden/redhorse_golden.tres b/fish/species/redhorse_golden/redhorse_golden.tres deleted file mode 100644 index 15296d5..0000000 --- a/fish/species/redhorse_golden/redhorse_golden.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"redhorse_golden" -display_name = "golden redhorse" -active = false -catalog_number = 2302 -collection_group = &"Freshwater bottom fish" -logbook_fact = "golden redhorses probe flowing river bottoms with fleshy, downward-facing mouths. coppery scales and reddish fins give them a warm glow." -allowed_water_types = 1 -rarity = 1 -base_catch_weight = 0.9 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.5 -weight_max_lb = 8.0 -sell_value_min = 6 -sell_value_max = 14 -sell_value_curve = 0.9 diff --git a/fish/species/roach_common/roach_common.tres b/fish/species/roach_common/roach_common.tres deleted file mode 100644 index a85b58f..0000000 --- a/fish/species/roach_common/roach_common.tres +++ /dev/null @@ -1,27 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") - -[resource] -script = ExtResource("1_fish_data") -id = &"roach_common" -display_name = "common roach" -active = false -catalog_number = 2504 -collection_group = &"Freshwater coarse fish" -logbook_fact = "common roach thrive in many lakes and rivers, often schooling near vegetation. red fins and a red-orange eye brighten their silver bodies." -allowed_water_types = 1 -rarity = 0 -base_catch_weight = 2.8 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.1 -weight_max_lb = 4.0 -sell_value_min = 2 -sell_value_max = 6 -sell_value_curve = 0.95 diff --git a/fish/species/rockfish_black/rockfish_black.tres b/fish/species/rockfish_black/rockfish_black.tres deleted file mode 100644 index 4bbcd5a..0000000 --- a/fish/species/rockfish_black/rockfish_black.tres +++ /dev/null @@ -1,27 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") - -[resource] -script = ExtResource("1_fish_data") -id = &"rockfish_black" -display_name = "black rockfish" -active = false -catalog_number = 6901 -collection_group = &"Temperate reef fish" -logbook_fact = "black rockfish gather above reefs and kelp along the north pacific coast. like other rockfish, they give birth to live young." -allowed_water_types = 2 -rarity = 0 -base_catch_weight = 1.7 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.3 -weight_max_lb = 10.0 -sell_value_min = 4 -sell_value_max = 11 -sell_value_curve = 0.9 diff --git a/fish/species/rockfish_canary/rockfish_canary.tres b/fish/species/rockfish_canary/rockfish_canary.tres deleted file mode 100644 index 2aeb290..0000000 --- a/fish/species/rockfish_canary/rockfish_canary.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"rockfish_canary" -display_name = "canary rockfish" -active = false -catalog_number = 6903 -collection_group = &"Temperate reef fish" -logbook_fact = "canary rockfish glow orange-yellow over deep pacific reefs. these long-lived fish mature slowly and give birth to live young." -allowed_water_types = 2 -rarity = 1 -base_catch_weight = 0.7 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.5 -weight_max_lb = 12.0 -sell_value_min = 7 -sell_value_max = 17 -sell_value_curve = 0.88 diff --git a/fish/species/rockfish_yelloweye/rockfish_yelloweye.tres b/fish/species/rockfish_yelloweye/rockfish_yelloweye.tres deleted file mode 100644 index d06d1d3..0000000 --- a/fish/species/rockfish_yelloweye/rockfish_yelloweye.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -require_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"rockfish_yelloweye" -display_name = "yelloweye rockfish" -active = false -catalog_number = 6907 -collection_group = &"Temperate reef fish" -logbook_fact = "yelloweye rockfish can live for more than a century on deep pacific reefs. bright golden eyes stand out against orange-red bodies." -allowed_water_types = 2 -rarity = 3 -base_catch_weight = 0.09 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 2.0 -weight_max_lb = 35.0 -sell_value_min = 28 -sell_value_max = 64 -sell_value_curve = 0.84 diff --git a/fish/species/roosterfish/roosterfish.tres b/fish/species/roosterfish/roosterfish.tres deleted file mode 100644 index fdb432a..0000000 --- a/fish/species/roosterfish/roosterfish.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"roosterfish" -display_name = "roosterfish" -active = false -catalog_number = 7201 -collection_group = &"Tropical coastal predators" -logbook_fact = "roosterfish raise seven long dorsal spines while chasing prey through tropical surf. dark bands cross their sleek silver bodies." -allowed_water_types = 2 -rarity = 3 -base_catch_weight = 0.11 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 5.0 -weight_max_lb = 100.0 -sell_value_min = 30 -sell_value_max = 70 -sell_value_curve = 0.82 diff --git a/fish/species/rudd/rudd.tres b/fish/species/rudd/rudd.tres deleted file mode 100644 index 317fa8c..0000000 --- a/fish/species/rudd/rudd.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"rudd" -display_name = "rudd" -active = false -catalog_number = 2508 -collection_group = &"Freshwater coarse fish" -logbook_fact = "rudd feed near the surface with an upturned mouth and red fins. golden-green bodies disappear easily among warm, weedy shallows." -allowed_water_types = 1 -rarity = 0 -base_catch_weight = 2.4 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.1 -weight_max_lb = 4.5 -sell_value_min = 3 -sell_value_max = 7 -sell_value_curve = 0.95 diff --git a/fish/species/sablefish/sablefish.tres b/fish/species/sablefish/sablefish.tres deleted file mode 100644 index d180b9b..0000000 --- a/fish/species/sablefish/sablefish.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false - -[resource] -script = ExtResource("1_fish_data") -id = &"sablefish" -display_name = "sablefish" -active = false -catalog_number = 1605 -collection_group = &"Deep shelf fish" -logbook_fact = "sablefish roam deep north pacific slopes and can live for many decades. soft dark bodies conceal rich, oil-filled flesh." -allowed_water_types = 2 -rarity = 2 -base_catch_weight = 0.22 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 2.0 -weight_max_lb = 40.0 -sell_value_min = 15 -sell_value_max = 36 -sell_value_curve = 0.84 diff --git a/fish/species/sailfish/sailfish.tres b/fish/species/sailfish/sailfish.tres index 398f62d..7f6bea9 100644 --- a/fish/species/sailfish/sailfish.tres +++ b/fish/species/sailfish/sailfish.tres @@ -13,10 +13,6 @@ allowed_location_tags = Array[StringName]([&"ocean"]) script = ExtResource("1_fish_data") id = &"sailfish" display_name = "sailfish" -active = true -catalog_number = 4603 -collection_group = &"Oceanic billfish" -logbook_fact = "sailfish raise their enormous dorsal fin while herding baitfish. they are among the fastest fish in the sea." allowed_water_types = 2 rarity = 3 base_catch_weight = 0.1 diff --git a/fish/species/salmon_atlantic/salmon_atlantic.tres b/fish/species/salmon_atlantic/salmon_atlantic.tres index 906d86b..fa3f0d6 100644 --- a/fish/species/salmon_atlantic/salmon_atlantic.tres +++ b/fish/species/salmon_atlantic/salmon_atlantic.tres @@ -14,10 +14,6 @@ preferred_bait_weight_multiplier = 1.4 script = ExtResource("1_fish_data") id = &"salmon_atlantic" display_name = "atlantic salmon" -active = true -catalog_number = 4401 -collection_group = &"Ocean-run salmon" -logbook_fact = "atlantic salmon can return from the ocean to the river where they hatched. unlike many salmon, some survive to make the trip again." allowed_water_types = 2 rarity = 3 base_catch_weight = 0.65 diff --git a/fish/species/salmon_chum/salmon_chum.tres b/fish/species/salmon_chum/salmon_chum.tres index 67d3684..748295b 100644 --- a/fish/species/salmon_chum/salmon_chum.tres +++ b/fish/species/salmon_chum/salmon_chum.tres @@ -14,10 +14,6 @@ preferred_bait_weight_multiplier = 1.4 script = ExtResource("1_fish_data") id = &"salmon_chum" display_name = "chum salmon" -active = true -catalog_number = 4402 -collection_group = &"Ocean-run salmon" -logbook_fact = "chum salmon travel immense distances and develop striking bars when they return to fresh water to spawn." allowed_water_types = 2 rarity = 1 base_catch_weight = 2.5 diff --git a/fish/species/salmon_coho/salmon_coho.tres b/fish/species/salmon_coho/salmon_coho.tres index ad51f7b..1c1a783 100644 --- a/fish/species/salmon_coho/salmon_coho.tres +++ b/fish/species/salmon_coho/salmon_coho.tres @@ -14,10 +14,6 @@ preferred_bait_weight_multiplier = 1.4 script = ExtResource("1_fish_data") id = &"salmon_coho" display_name = "coho salmon" -active = true -catalog_number = 4403 -collection_group = &"Ocean-run salmon" -logbook_fact = "coho salmon are agile hunters known for powerful leaps. young coho may spend more than a year growing in streams." allowed_water_types = 2 rarity = 2 base_catch_weight = 1.4 diff --git a/fish/species/salmon_pink/salmon_pink.tres b/fish/species/salmon_pink/salmon_pink.tres index 7f76c62..d390cf1 100644 --- a/fish/species/salmon_pink/salmon_pink.tres +++ b/fish/species/salmon_pink/salmon_pink.tres @@ -14,10 +14,6 @@ preferred_bait_weight_multiplier = 1.4 script = ExtResource("1_fish_data") id = &"salmon_pink" display_name = "pink salmon" -active = true -catalog_number = 4404 -collection_group = &"Ocean-run salmon" -logbook_fact = "pink salmon usually follow a strict two-year life cycle. spawning males develop the hump that inspired their nickname." allowed_water_types = 2 rarity = 1 base_catch_weight = 3.0 diff --git a/fish/species/salmon_sockeye/salmon_sockeye.tres b/fish/species/salmon_sockeye/salmon_sockeye.tres index 04b75b3..deeda39 100644 --- a/fish/species/salmon_sockeye/salmon_sockeye.tres +++ b/fish/species/salmon_sockeye/salmon_sockeye.tres @@ -14,10 +14,6 @@ preferred_bait_weight_multiplier = 1.4 script = ExtResource("1_fish_data") id = &"salmon_sockeye" display_name = "sockeye salmon" -active = true -catalog_number = 4405 -collection_group = &"Ocean-run salmon" -logbook_fact = "sockeye salmon feed heavily on plankton at sea. adults turn vivid red as they return inland to spawn." allowed_water_types = 2 rarity = 2 base_catch_weight = 1.6 diff --git a/fish/species/sand_dollar/sand_dollar.tres b/fish/species/sand_dollar/sand_dollar.tres deleted file mode 100644 index fd3f73c..0000000 --- a/fish/species/sand_dollar/sand_dollar.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -forbid_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"sand_dollar" -display_name = "sand dollar" -active = false -catalog_number = 1904 -collection_group = &"Echinoderms" -logbook_fact = "sand dollars burrow just beneath sandy seafloors and filter tiny food particles. the familiar star pattern marks their five-part body plan." -allowed_water_types = 2 -rarity = 1 -base_catch_weight = 0.8 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.01 -weight_max_lb = 0.2 -sell_value_min = 4 -sell_value_max = 10 -sell_value_curve = 0.98 diff --git a/fish/species/sand_lance_american/sand_lance_american.tres b/fish/species/sand_lance_american/sand_lance_american.tres deleted file mode 100644 index 4f53bbb..0000000 --- a/fish/species/sand_lance_american/sand_lance_american.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"sand_lance_american" -display_name = "American sand lance" -active = false -catalog_number = 801 -collection_group = &"Coastal schooling fish" -logbook_fact = "american sand lance dive headfirst into loose sand when danger approaches. immense schools carry energy from plankton to larger predators." -allowed_water_types = 2 -rarity = 0 -base_catch_weight = 3.0 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.02 -weight_max_lb = 0.4 -sell_value_min = 1 -sell_value_max = 3 -sell_value_curve = 1.0 diff --git a/fish/species/sardine_european/sardine_european.tres b/fish/species/sardine_european/sardine_european.tres deleted file mode 100644 index 3052323..0000000 --- a/fish/species/sardine_european/sardine_european.tres +++ /dev/null @@ -1,27 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") - -[resource] -script = ExtResource("1_fish_data") -id = &"sardine_european" -display_name = "European pilchard" -active = false -catalog_number = 806 -collection_group = &"Coastal schooling fish" -logbook_fact = "european pilchards form shimmering schools along atlantic and mediterranean coasts. they feed mainly on plankton near the surface." -allowed_water_types = 2 -rarity = 0 -base_catch_weight = 3.5 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.05 -weight_max_lb = 0.6 -sell_value_min = 2 -sell_value_max = 4 -sell_value_curve = 1.0 diff --git a/fish/species/sardine_pacific/sardine_pacific.tres b/fish/species/sardine_pacific/sardine_pacific.tres deleted file mode 100644 index 3e4db3d..0000000 --- a/fish/species/sardine_pacific/sardine_pacific.tres +++ /dev/null @@ -1,27 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") - -[resource] -script = ExtResource("1_fish_data") -id = &"sardine_pacific" -display_name = "Pacific sardine" -active = false -catalog_number = 809 -collection_group = &"Coastal schooling fish" -logbook_fact = "pacific sardines follow cool, productive water in enormous schools. their movements shift as currents and plankton supplies change." -allowed_water_types = 2 -rarity = 0 -base_catch_weight = 3.5 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.05 -weight_max_lb = 0.5 -sell_value_min = 2 -sell_value_max = 4 -sell_value_curve = 1.0 diff --git a/fish/species/sauger/sauger.tres b/fish/species/sauger/sauger.tres index 0918236..49cf5ad 100644 --- a/fish/species/sauger/sauger.tres +++ b/fish/species/sauger/sauger.tres @@ -13,10 +13,6 @@ allowed_location_tags = Array[StringName]([&"starter_pond"]) script = ExtResource("1_fish_data") id = &"sauger" display_name = "sauger" -active = true -catalog_number = 3304 -collection_group = &"Freshwater predators" -logbook_fact = "sauger favor turbid rivers and reservoirs. their mottled backs blend into the dim, shifting light near the bottom." allowed_water_types = 1 rarity = 1 base_catch_weight = 0.35 diff --git a/fish/species/saugeye/saugeye.tres b/fish/species/saugeye/saugeye.tres index ac82232..e834005 100644 --- a/fish/species/saugeye/saugeye.tres +++ b/fish/species/saugeye/saugeye.tres @@ -13,10 +13,6 @@ allowed_location_tags = Array[StringName]([&"starter_pond"]) script = ExtResource("1_fish_data") id = &"saugeye" display_name = "saugeye" -active = true -catalog_number = 3305 -collection_group = &"Freshwater predators" -logbook_fact = "saugeye are a fertile hybrid of sauger and walleye. they combine traits from both parent species and often grow quickly." allowed_water_types = 1 rarity = 2 base_catch_weight = 0.2 diff --git a/fish/species/sawfish_largetooth/sawfish_largetooth.tres b/fish/species/sawfish_largetooth/sawfish_largetooth.tres deleted file mode 100644 index 699c8d6..0000000 --- a/fish/species/sawfish_largetooth/sawfish_largetooth.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false -require_rain = true - -[resource] -script = ExtResource("1_fish_data") -id = &"sawfish_largetooth" -display_name = "largetooth sawfish" -active = false -catalog_number = 5103 -collection_group = &"Rays and skates" -logbook_fact = "largetooth sawfish detect hidden prey with a long sensory rostrum. a swift sideways sweep stuns fish and exposes animals buried in mud." -allowed_water_types = 2 -rarity = 4 -base_catch_weight = 0.035 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 25.0 -weight_max_lb = 1300.0 -sell_value_min = 58 -sell_value_max = 135 -sell_value_curve = 0.78 diff --git a/fish/species/scorpionfish_red/scorpionfish_red.tres b/fish/species/scorpionfish_red/scorpionfish_red.tres deleted file mode 100644 index eda1241..0000000 --- a/fish/species/scorpionfish_red/scorpionfish_red.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false - -[resource] -script = ExtResource("1_fish_data") -id = &"scorpionfish_red" -display_name = "red scorpionfish" -active = false -catalog_number = 5202 -collection_group = &"Reef ambush fish" -logbook_fact = "red scorpionfish vanish against rocky reefs through mottled color and skin flaps. venomous dorsal spines punish careless predators." -allowed_water_types = 2 -rarity = 2 -base_catch_weight = 0.3 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.2 -weight_max_lb = 7.0 -sell_value_min = 11 -sell_value_max = 25 -sell_value_curve = 0.9 diff --git a/fish/species/sea_bass_black/sea_bass_black.tres b/fish/species/sea_bass_black/sea_bass_black.tres deleted file mode 100644 index 0f4fca3..0000000 --- a/fish/species/sea_bass_black/sea_bass_black.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"sea_bass_black" -display_name = "black sea bass" -active = false -catalog_number = 6902 -collection_group = &"Temperate reef fish" -logbook_fact = "black sea bass shelter around reefs, piers, and wrecks. many begin life as female and later become male." -allowed_water_types = 2 -rarity = 0 -base_catch_weight = 1.7 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.3 -weight_max_lb = 8.0 -sell_value_min = 4 -sell_value_max = 10 -sell_value_curve = 0.9 diff --git a/fish/species/sea_bass_chilean/sea_bass_chilean.tres b/fish/species/sea_bass_chilean/sea_bass_chilean.tres deleted file mode 100644 index c52a88c..0000000 --- a/fish/species/sea_bass_chilean/sea_bass_chilean.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false - -[resource] -script = ExtResource("1_fish_data") -id = &"sea_bass_chilean" -display_name = "Patagonian toothfish" -active = false -catalog_number = 1604 -collection_group = &"Deep shelf fish" -logbook_fact = "patagonian toothfish patrol cold, deep southern water with large canine teeth. natural antifreeze proteins protect their blood from freezing." -allowed_water_types = 2 -rarity = 3 -base_catch_weight = 0.09 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 10.0 -weight_max_lb = 220.0 -sell_value_min = 32 -sell_value_max = 78 -sell_value_curve = 0.8 diff --git a/fish/species/sea_cucumber_giant_california/sea_cucumber_giant_california.tres b/fish/species/sea_cucumber_giant_california/sea_cucumber_giant_california.tres deleted file mode 100644 index 5670862..0000000 --- a/fish/species/sea_cucumber_giant_california/sea_cucumber_giant_california.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false -require_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"sea_cucumber_giant_california" -display_name = "giant California sea cucumber" -active = false -catalog_number = 1902 -collection_group = &"Echinoderms" -logbook_fact = "giant california sea cucumbers sweep organic particles from the seafloor with branching tentacles. soft tube feet anchor their long bodies." -allowed_water_types = 2 -rarity = 2 -base_catch_weight = 0.24 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.5 -weight_max_lb = 5.0 -sell_value_min = 13 -sell_value_max = 29 -sell_value_curve = 0.93 diff --git a/fish/species/sea_otter/sea_otter.tres b/fish/species/sea_otter/sea_otter.tres deleted file mode 100644 index c7740a3..0000000 --- a/fish/species/sea_otter/sea_otter.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"sea_otter" -display_name = "sea otter" -active = false -catalog_number = 503 -collection_group = &"Coastal marine mammals" -logbook_fact = "sea otters float on their backs while opening shellfish with stones. dense fur traps insulating air because they lack a thick blubber layer." -allowed_water_types = 2 -rarity = 4 -base_catch_weight = 0.02 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 30.0 -weight_max_lb = 100.0 -sell_value_min = 55 -sell_value_max = 125 -sell_value_curve = 0.84 diff --git a/fish/species/sea_star_crown_of_thorns/sea_star_crown_of_thorns.tres b/fish/species/sea_star_crown_of_thorns/sea_star_crown_of_thorns.tres deleted file mode 100644 index bfc9493..0000000 --- a/fish/species/sea_star_crown_of_thorns/sea_star_crown_of_thorns.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false -require_rain = true - -[resource] -script = ExtResource("1_fish_data") -id = &"sea_star_crown_of_thorns" -display_name = "crown-of-thorns sea star" -active = false -catalog_number = 1901 -collection_group = &"Echinoderms" -logbook_fact = "crown-of-thorns sea stars crawl over reefs and digest coral tissue outside the body. venomous spines discourage many predators." -allowed_water_types = 2 -rarity = 3 -base_catch_weight = 0.1 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.5 -weight_max_lb = 7.0 -sell_value_min = 23 -sell_value_max = 52 -sell_value_curve = 0.91 diff --git a/fish/species/sea_star_sunflower/sea_star_sunflower.tres b/fish/species/sea_star_sunflower/sea_star_sunflower.tres deleted file mode 100644 index 7409a31..0000000 --- a/fish/species/sea_star_sunflower/sea_star_sunflower.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -require_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"sea_star_sunflower" -display_name = "sunflower sea star" -active = false -catalog_number = 1905 -collection_group = &"Echinoderms" -logbook_fact = "sunflower sea stars move quickly on thousands of tube feet and may carry many arms. they hunt urchins, clams, and other bottom animals." -allowed_water_types = 2 -rarity = 2 -base_catch_weight = 0.25 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.5 -weight_max_lb = 13.0 -sell_value_min = 14 -sell_value_max = 32 -sell_value_curve = 0.89 diff --git a/fish/species/seadragon_leafy/seadragon_leafy.tres b/fish/species/seadragon_leafy/seadragon_leafy.tres deleted file mode 100644 index b137a34..0000000 --- a/fish/species/seadragon_leafy/seadragon_leafy.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -forbid_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"seadragon_leafy" -display_name = "leafy seadragon" -active = false -catalog_number = 6301 -collection_group = &"Seahorses and seadragons" -logbook_fact = "leafy seadragons drift among seaweed with elaborate skin lobes that resemble leaves. males carry eggs beneath the tail." -allowed_water_types = 2 -rarity = 3 -base_catch_weight = 0.1 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.1 -weight_max_lb = 0.5 -sell_value_min = 24 -sell_value_max = 55 -sell_value_curve = 0.94 diff --git a/fish/species/seadragon_weedy/seadragon_weedy.tres b/fish/species/seadragon_weedy/seadragon_weedy.tres deleted file mode 100644 index e388f50..0000000 --- a/fish/species/seadragon_weedy/seadragon_weedy.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -require_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"seadragon_weedy" -display_name = "weedy seadragon" -active = false -catalog_number = 6302 -collection_group = &"Seahorses and seadragons" -logbook_fact = "weedy seadragons rely on slender bodies and small leaf-like lobes for camouflage. males brood rows of eggs on the underside of the tail." -allowed_water_types = 2 -rarity = 2 -base_catch_weight = 0.22 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.1 -weight_max_lb = 0.6 -sell_value_min = 16 -sell_value_max = 38 -sell_value_curve = 0.93 diff --git a/fish/species/seahorse_lined/seahorse_lined.tres b/fish/species/seahorse_lined/seahorse_lined.tres deleted file mode 100644 index 42fe3e3..0000000 --- a/fish/species/seahorse_lined/seahorse_lined.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -forbid_rain = true - -[resource] -script = ExtResource("1_fish_data") -id = &"seahorse_lined" -display_name = "lined seahorse" -active = false -catalog_number = 602 -collection_group = &"Coastal oddities" -logbook_fact = "lined seahorses anchor to grass and coral with curling tails. the male broods eggs in a pouch and releases fully formed young." -allowed_water_types = 2 -rarity = 2 -base_catch_weight = 0.28 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.005 -weight_max_lb = 0.05 -sell_value_min = 9 -sell_value_max = 20 -sell_value_curve = 1.0 diff --git a/fish/species/seal_harbor/seal_harbor.tres b/fish/species/seal_harbor/seal_harbor.tres deleted file mode 100644 index 59bdf2b..0000000 --- a/fish/species/seal_harbor/seal_harbor.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -require_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"seal_harbor" -display_name = "harbor seal" -active = false -catalog_number = 502 -collection_group = &"Coastal marine mammals" -logbook_fact = "harbor seals rest on rocky shores and sandbars between hunting trips. sensitive whiskers can trace the water trails left by moving fish." -allowed_water_types = 2 -rarity = 4 -base_catch_weight = 0.018 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 120.0 -weight_max_lb = 370.0 -sell_value_min = 60 -sell_value_max = 140 -sell_value_curve = 0.79 diff --git a/fish/species/shark_blacktip/shark_blacktip.tres b/fish/species/shark_blacktip/shark_blacktip.tres deleted file mode 100644 index 99bc169..0000000 --- a/fish/species/shark_blacktip/shark_blacktip.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -require_rain = true - -[resource] -script = ExtResource("1_fish_data") -id = &"shark_blacktip" -display_name = "blacktip shark" -active = false -catalog_number = 901 -collection_group = &"Coastal sharks" -logbook_fact = "blacktip sharks are named for the dark markings on their fins. they hunt schooling fish in warm shallows and sometimes leap clear of the water." -allowed_water_types = 2 -rarity = 3 -base_catch_weight = 0.1 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 15.0 -weight_max_lb = 150.0 -sell_value_min = 32 -sell_value_max = 75 -sell_value_curve = 0.8 diff --git a/fish/species/shark_great_hammerhead/shark_great_hammerhead.tres b/fish/species/shark_great_hammerhead/shark_great_hammerhead.tres deleted file mode 100644 index 65b9d96..0000000 --- a/fish/species/shark_great_hammerhead/shark_great_hammerhead.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -forbid_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"shark_great_hammerhead" -display_name = "great hammerhead shark" -active = false -catalog_number = 902 -collection_group = &"Coastal sharks" -logbook_fact = "great hammerheads sweep their wide heads over the bottom while searching for rays. widely spaced senses help pinpoint hidden prey." -allowed_water_types = 2 -rarity = 4 -base_catch_weight = 0.035 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 50.0 -weight_max_lb = 1000.0 -sell_value_min = 62 -sell_value_max = 145 -sell_value_curve = 0.78 diff --git a/fish/species/shark_great_white/shark_great_white.tres b/fish/species/shark_great_white/shark_great_white.tres deleted file mode 100644 index 560b596..0000000 --- a/fish/species/shark_great_white/shark_great_white.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"shark_great_white" -display_name = "great white shark" -active = false -catalog_number = 903 -collection_group = &"Coastal sharks" -logbook_fact = "great white sharks conserve heat in their swimming muscles while crossing cool seas. rows of serrated teeth are replaced throughout life." -allowed_water_types = 2 -rarity = 4 -base_catch_weight = 0.025 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 100.0 -weight_max_lb = 1000.0 -sell_value_min = 70 -sell_value_max = 150 -sell_value_curve = 0.76 diff --git a/fish/species/shark_tiger/shark_tiger.tres b/fish/species/shark_tiger/shark_tiger.tres deleted file mode 100644 index a3f34f7..0000000 --- a/fish/species/shark_tiger/shark_tiger.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false -require_rain = true - -[resource] -script = ExtResource("1_fish_data") -id = &"shark_tiger" -display_name = "tiger shark" -active = false -catalog_number = 904 -collection_group = &"Coastal sharks" -logbook_fact = "tiger sharks carry dark vertical bars that fade as they mature. broad jaws let them investigate an unusually varied range of prey." -allowed_water_types = 2 -rarity = 3 -base_catch_weight = 0.06 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 50.0 -weight_max_lb = 1000.0 -sell_value_min = 50 -sell_value_max = 120 -sell_value_curve = 0.8 diff --git a/fish/species/shark_whale/shark_whale.tres b/fish/species/shark_whale/shark_whale.tres deleted file mode 100644 index b0bbe19..0000000 --- a/fish/species/shark_whale/shark_whale.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -forbid_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"shark_whale" -display_name = "whale shark" -active = false -catalog_number = 905 -collection_group = &"Coastal sharks" -logbook_fact = "whale sharks are enormous filter feeders covered in unique spot patterns. they cruise with open mouths to collect plankton and tiny fish." -allowed_water_types = 2 -rarity = 4 -base_catch_weight = 0.025 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 500.0 -weight_max_lb = 45000.0 -sell_value_min = 70 -sell_value_max = 160 -sell_value_curve = 0.76 diff --git a/fish/species/sheepshead/sheepshead.tres b/fish/species/sheepshead/sheepshead.tres deleted file mode 100644 index df76f08..0000000 --- a/fish/species/sheepshead/sheepshead.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"sheepshead" -display_name = "sheepshead" -active = false -catalog_number = 6905 -collection_group = &"Temperate reef fish" -logbook_fact = "sheepshead carry flat human-like front teeth for biting barnacles and crabs. dark bars cross their high silver bodies." -allowed_water_types = 2 -rarity = 1 -base_catch_weight = 0.75 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.5 -weight_max_lb = 20.0 -sell_value_min = 7 -sell_value_max = 18 -sell_value_curve = 0.86 diff --git a/fish/species/shiner_common/shiner_common.tres b/fish/species/shiner_common/shiner_common.tres deleted file mode 100644 index 505bb24..0000000 --- a/fish/species/shiner_common/shiner_common.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"shiner_common" -display_name = "common shiner" -active = false -catalog_number = 2801 -collection_group = &"Freshwater minnows" -logbook_fact = "common shiners flash silver in clear streams and small rivers. breeding males develop rosy fins and a blue-violet sheen." -allowed_water_types = 1 -rarity = 0 -base_catch_weight = 4.0 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.03 -weight_max_lb = 0.3 -sell_value_min = 1 -sell_value_max = 3 -sell_value_curve = 1.0 diff --git a/fish/species/shiner_emerald/shiner_emerald.tres b/fish/species/shiner_emerald/shiner_emerald.tres deleted file mode 100644 index 7497ae6..0000000 --- a/fish/species/shiner_emerald/shiner_emerald.tres +++ /dev/null @@ -1,27 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") - -[resource] -script = ExtResource("1_fish_data") -id = &"shiner_emerald" -display_name = "emerald shiner" -active = false -catalog_number = 2803 -collection_group = &"Freshwater minnows" -logbook_fact = "emerald shiners form bright surface schools in large lakes and rivers. slender bodies feed on plankton and drifting insects." -allowed_water_types = 1 -rarity = 0 -base_catch_weight = 3.5 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.03 -weight_max_lb = 0.25 -sell_value_min = 1 -sell_value_max = 3 -sell_value_curve = 1.0 diff --git a/fish/species/shiner_golden/shiner_golden.tres b/fish/species/shiner_golden/shiner_golden.tres deleted file mode 100644 index 755bffb..0000000 --- a/fish/species/shiner_golden/shiner_golden.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"shiner_golden" -display_name = "golden shiner" -active = false -catalog_number = 2806 -collection_group = &"Freshwater minnows" -logbook_fact = "golden shiners school around dense vegetation in warm water. an upturned mouth takes insects and plankton from near the surface." -allowed_water_types = 1 -rarity = 0 -base_catch_weight = 3.8 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.05 -weight_max_lb = 1.0 -sell_value_min = 2 -sell_value_max = 4 -sell_value_curve = 1.0 diff --git a/fish/species/shrimp_peacock_mantis/shrimp_peacock_mantis.tres b/fish/species/shrimp_peacock_mantis/shrimp_peacock_mantis.tres deleted file mode 100644 index 4a12b76..0000000 --- a/fish/species/shrimp_peacock_mantis/shrimp_peacock_mantis.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -require_rain = true - -[resource] -script = ExtResource("1_fish_data") -id = &"shrimp_peacock_mantis" -display_name = "peacock mantis shrimp" -active = false -catalog_number = 3804 -collection_group = &"Lobsters and shrimp" -logbook_fact = "peacock mantis shrimp strike hard-shelled prey with club-like limbs. complex eyes move independently and detect colors beyond human vision." -allowed_water_types = 2 -rarity = 3 -base_catch_weight = 0.1 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.05 -weight_max_lb = 0.4 -sell_value_min = 22 -sell_value_max = 50 -sell_value_curve = 0.96 diff --git a/fish/species/shrimp_skunk_cleaner/shrimp_skunk_cleaner.tres b/fish/species/shrimp_skunk_cleaner/shrimp_skunk_cleaner.tres deleted file mode 100644 index 9ab3908..0000000 --- a/fish/species/shrimp_skunk_cleaner/shrimp_skunk_cleaner.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -forbid_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"shrimp_skunk_cleaner" -display_name = "skunk cleaner shrimp" -active = false -catalog_number = 3805 -collection_group = &"Lobsters and shrimp" -logbook_fact = "skunk cleaner shrimp advertise at reef cleaning stations with bright white antennae. visiting fish pause while parasites are picked away." -allowed_water_types = 2 -rarity = 1 -base_catch_weight = 0.75 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.01 -weight_max_lb = 0.15 -sell_value_min = 5 -sell_value_max = 11 -sell_value_curve = 0.98 diff --git a/fish/species/skate_barndoor/skate_barndoor.tres b/fish/species/skate_barndoor/skate_barndoor.tres deleted file mode 100644 index 013fc2f..0000000 --- a/fish/species/skate_barndoor/skate_barndoor.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -require_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"skate_barndoor" -display_name = "barndoor skate" -active = false -catalog_number = 5101 -collection_group = &"Rays and skates" -logbook_fact = "barndoor skates glide over cold atlantic bottoms with broad wing-like fins. rows of thorny spines protect the back and tail." -allowed_water_types = 2 -rarity = 3 -base_catch_weight = 0.1 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 5.0 -weight_max_lb = 150.0 -sell_value_min = 28 -sell_value_max = 68 -sell_value_curve = 0.8 diff --git a/fish/species/smallmouth_bass/smallmouth_bass.tres b/fish/species/smallmouth_bass/smallmouth_bass.tres deleted file mode 100644 index 11e876f..0000000 --- a/fish/species/smallmouth_bass/smallmouth_bass.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"smallmouth_bass" -display_name = "smallmouth bass" -active = false -catalog_number = 2202 -collection_group = &"Freshwater bass" -logbook_fact = "smallmouth bass favor clear water with rock and moving current. bronze flanks and dark vertical bars distinguish them from largemouth bass." -allowed_water_types = 1 -rarity = 1 -base_catch_weight = 1.2 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.5 -weight_max_lb = 12.0 -sell_value_min = 6 -sell_value_max = 15 -sell_value_curve = 0.9 diff --git a/fish/species/smelt_eulachon/smelt_eulachon.tres b/fish/species/smelt_eulachon/smelt_eulachon.tres deleted file mode 100644 index b6d7b16..0000000 --- a/fish/species/smelt_eulachon/smelt_eulachon.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false -require_rain = true - -[resource] -script = ExtResource("1_fish_data") -id = &"smelt_eulachon" -display_name = "eulachon" -active = false -catalog_number = 4201 -collection_group = &"Ocean-run forage fish" -logbook_fact = "eulachon return from the pacific to spawn in coastal rivers. their oil-rich bodies once served as candles when dried and fitted with wicks." -allowed_water_types = 3 -rarity = 1 -base_catch_weight = 0.9 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.05 -weight_max_lb = 0.5 -sell_value_min = 4 -sell_value_max = 9 -sell_value_curve = 0.98 diff --git a/fish/species/smelt_rainbow/smelt_rainbow.tres b/fish/species/smelt_rainbow/smelt_rainbow.tres deleted file mode 100644 index 19f1b1d..0000000 --- a/fish/species/smelt_rainbow/smelt_rainbow.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false - -[resource] -script = ExtResource("1_fish_data") -id = &"smelt_rainbow" -display_name = "rainbow smelt" -active = false -catalog_number = 4101 -collection_group = &"Migratory forage fish" -logbook_fact = "rainbow smelt move between coastal water and rivers, though some remain landlocked. cucumber-like aromas cling to freshly caught fish." -allowed_water_types = 3 -rarity = 0 -base_catch_weight = 2.5 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.05 -weight_max_lb = 0.8 -sell_value_min = 2 -sell_value_max = 5 -sell_value_curve = 1.0 diff --git a/fish/species/snakehead_giant/snakehead_giant.tres b/fish/species/snakehead_giant/snakehead_giant.tres deleted file mode 100644 index 44b10e3..0000000 --- a/fish/species/snakehead_giant/snakehead_giant.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false -require_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"snakehead_giant" -display_name = "giant snakehead" -active = false -catalog_number = 7601 -collection_group = &"Tropical freshwater predators" -logbook_fact = "giant snakeheads breathe air and guard schools of young near the surface. long bodies launch sudden attacks from flooded vegetation." -allowed_water_types = 1 -rarity = 3 -base_catch_weight = 0.1 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 3.0 -weight_max_lb = 45.0 -sell_value_min = 28 -sell_value_max = 64 -sell_value_curve = 0.84 diff --git a/fish/species/snapper_lane/snapper_lane.tres b/fish/species/snapper_lane/snapper_lane.tres index f72ab38..e9e7422 100644 --- a/fish/species/snapper_lane/snapper_lane.tres +++ b/fish/species/snapper_lane/snapper_lane.tres @@ -13,10 +13,6 @@ allowed_location_tags = Array[StringName]([&"ocean"]) script = ExtResource("1_fish_data") id = &"snapper_lane" display_name = "lane snapper" -active = true -catalog_number = 6001 -collection_group = &"Reef snapper" -logbook_fact = "lane snapper use reef structure for cover and hunt small crustaceans and fish when the light begins to fade." allowed_water_types = 2 base_catch_weight = 0.45 catch_profile = ExtResource("2_profile") diff --git a/fish/species/snapper_mangrove/snapper_mangrove.tres b/fish/species/snapper_mangrove/snapper_mangrove.tres index f400800..58226ad 100644 --- a/fish/species/snapper_mangrove/snapper_mangrove.tres +++ b/fish/species/snapper_mangrove/snapper_mangrove.tres @@ -13,10 +13,6 @@ allowed_location_tags = Array[StringName]([&"ocean"]) script = ExtResource("1_fish_data") id = &"snapper_mangrove" display_name = "mangrove snapper" -active = true -catalog_number = 6002 -collection_group = &"Reef snapper" -logbook_fact = "mangrove snapper shelter among roots and docks when young, then move toward reefs as they grow." allowed_water_types = 2 rarity = 1 base_catch_weight = 0.35 diff --git a/fish/species/snapper_mutton/snapper_mutton.tres b/fish/species/snapper_mutton/snapper_mutton.tres index 37b4b24..6d4441a 100644 --- a/fish/species/snapper_mutton/snapper_mutton.tres +++ b/fish/species/snapper_mutton/snapper_mutton.tres @@ -13,10 +13,6 @@ allowed_location_tags = Array[StringName]([&"ocean"]) script = ExtResource("1_fish_data") id = &"snapper_mutton" display_name = "mutton snapper" -active = true -catalog_number = 6003 -collection_group = &"Reef snapper" -logbook_fact = "mutton snapper have canine teeth that help them pick crabs, shrimp, and other hard-shelled prey from the reef." allowed_water_types = 2 rarity = 2 base_catch_weight = 0.2 diff --git a/fish/species/snapper_red/snapper_red.tres b/fish/species/snapper_red/snapper_red.tres index fabf736..8778c98 100644 --- a/fish/species/snapper_red/snapper_red.tres +++ b/fish/species/snapper_red/snapper_red.tres @@ -13,10 +13,6 @@ allowed_location_tags = Array[StringName]([&"ocean"]) script = ExtResource("1_fish_data") id = &"snapper_red" display_name = "red snapper" -active = true -catalog_number = 6004 -collection_group = &"Reef snapper" -logbook_fact = "red snapper gather around reefs, wrecks, and ledges. their diet includes small fish, shrimp, and squid." allowed_water_types = 2 rarity = 1 base_catch_weight = 0.35 diff --git a/fish/species/snook_common/snook_common.tres b/fish/species/snook_common/snook_common.tres deleted file mode 100644 index e810953..0000000 --- a/fish/species/snook_common/snook_common.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false -require_rain = true - -[resource] -script = ExtResource("1_fish_data") -id = &"snook_common" -display_name = "common snook" -active = false -catalog_number = 7303 -collection_group = &"Tropical estuary" -logbook_fact = "common snook wait around mangrove roots and current seams to ambush prey. a bold black lateral line divides their silver flanks." -allowed_water_types = 2 -rarity = 2 -base_catch_weight = 0.3 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 1.0 -weight_max_lb = 30.0 -sell_value_min = 13 -sell_value_max = 32 -sell_value_curve = 0.85 diff --git a/fish/species/sole_dover/sole_dover.tres b/fish/species/sole_dover/sole_dover.tres deleted file mode 100644 index 88daf9a..0000000 --- a/fish/species/sole_dover/sole_dover.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false - -[resource] -script = ExtResource("1_fish_data") -id = &"sole_dover" -display_name = "Dover sole" -active = false -catalog_number = 1404 -collection_group = &"Cold shelf fish" -logbook_fact = "dover sole glide over deep muddy bottoms of the eastern pacific. both eyes migrate to the right side as the young fish becomes flat." -allowed_water_types = 2 -rarity = 1 -base_catch_weight = 0.8 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.2 -weight_max_lb = 8.0 -sell_value_min = 6 -sell_value_max = 14 -sell_value_curve = 0.9 diff --git a/fish/species/sprat_european/sprat_european.tres b/fish/species/sprat_european/sprat_european.tres deleted file mode 100644 index 20f313c..0000000 --- a/fish/species/sprat_european/sprat_european.tres +++ /dev/null @@ -1,27 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") - -[resource] -script = ExtResource("1_fish_data") -id = &"sprat_european" -display_name = "European sprat" -active = false -catalog_number = 1303 -collection_group = &"Cold schooling fish" -logbook_fact = "european sprat form compact schools in northern coastal seas. these tiny herring relatives feed on plankton near the surface." -allowed_water_types = 2 -rarity = 0 -base_catch_weight = 3.2 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.03 -weight_max_lb = 0.3 -sell_value_min = 1 -sell_value_max = 3 -sell_value_curve = 1.0 diff --git a/fish/species/squid_bigfin_reef/squid_bigfin_reef.tres b/fish/species/squid_bigfin_reef/squid_bigfin_reef.tres deleted file mode 100644 index 838a6ef..0000000 --- a/fish/species/squid_bigfin_reef/squid_bigfin_reef.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -forbid_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"squid_bigfin_reef" -display_name = "bigfin reef squid" -active = false -catalog_number = 6501 -collection_group = &"Squid" -logbook_fact = "bigfin reef squid hover in coordinated groups around warm reefs. shifting colors and body patterns signal to nearby squid." -allowed_water_types = 2 -rarity = 2 -base_catch_weight = 0.3 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.2 -weight_max_lb = 5.0 -sell_value_min = 13 -sell_value_max = 30 -sell_value_curve = 0.91 diff --git a/fish/species/squid_colossal/squid_colossal.tres b/fish/species/squid_colossal/squid_colossal.tres deleted file mode 100644 index 8ade0a5..0000000 --- a/fish/species/squid_colossal/squid_colossal.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false -require_rain = true - -[resource] -script = ExtResource("1_fish_data") -id = &"squid_colossal" -display_name = "colossal squid" -active = false -catalog_number = 6502 -collection_group = &"Squid" -logbook_fact = "colossal squid carry swiveling hooks on their arms and tentacles. enormous eyes gather faint light in the deep southern ocean." -allowed_water_types = 2 -rarity = 4 -base_catch_weight = 0.015 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 400.0 -weight_max_lb = 1100.0 -sell_value_min = 82 -sell_value_max = 190 -sell_value_curve = 0.76 diff --git a/fish/species/squid_giant/squid_giant.tres b/fish/species/squid_giant/squid_giant.tres deleted file mode 100644 index e67af33..0000000 --- a/fish/species/squid_giant/squid_giant.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false -require_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"squid_giant" -display_name = "giant squid" -active = false -catalog_number = 6503 -collection_group = &"Squid" -logbook_fact = "giant squid hunt deep ocean prey with two long feeding tentacles. the largest eyes in the animal world watch for movement in darkness." -allowed_water_types = 2 -rarity = 4 -base_catch_weight = 0.02 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 100.0 -weight_max_lb = 600.0 -sell_value_min = 70 -sell_value_max = 165 -sell_value_curve = 0.77 diff --git a/fish/species/squid_humboldt/squid_humboldt.tres b/fish/species/squid_humboldt/squid_humboldt.tres deleted file mode 100644 index 038bcf8..0000000 --- a/fish/species/squid_humboldt/squid_humboldt.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false - -[resource] -script = ExtResource("1_fish_data") -id = &"squid_humboldt" -display_name = "Humboldt squid" -active = false -catalog_number = 6504 -collection_group = &"Squid" -logbook_fact = "humboldt squid flash red and white while hunting in large groups. powerful beaks and grasping suckers handle fish and other squid." -allowed_water_types = 2 -rarity = 3 -base_catch_weight = 0.09 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 5.0 -weight_max_lb = 110.0 -sell_value_min = 26 -sell_value_max = 64 -sell_value_curve = 0.82 diff --git a/fish/species/stingray_ocellate_river/stingray_ocellate_river.tres b/fish/species/stingray_ocellate_river/stingray_ocellate_river.tres deleted file mode 100644 index 5ee7b41..0000000 --- a/fish/species/stingray_ocellate_river/stingray_ocellate_river.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -require_rain = true - -[resource] -script = ExtResource("1_fish_data") -id = &"stingray_ocellate_river" -display_name = "ocellate river stingray" -active = false -catalog_number = 5104 -collection_group = &"Rays and skates" -logbook_fact = "ocellate river stingrays carry bright eye-like spots across a round disc. they hide beneath sand in south american rivers." -allowed_water_types = 1 -rarity = 3 -base_catch_weight = 0.09 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 2.0 -weight_max_lb = 35.0 -sell_value_min = 28 -sell_value_max = 65 -sell_value_curve = 0.82 diff --git a/fish/species/stingray_southern/stingray_southern.tres b/fish/species/stingray_southern/stingray_southern.tres deleted file mode 100644 index ed24d11..0000000 --- a/fish/species/stingray_southern/stingray_southern.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"stingray_southern" -display_name = "southern stingray" -active = false -catalog_number = 5105 -collection_group = &"Rays and skates" -logbook_fact = "southern stingrays bury in warm sand with only their eyes and spiracles visible. crushing plates break open clams and crustaceans." -allowed_water_types = 2 -rarity = 2 -base_catch_weight = 0.23 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 2.0 -weight_max_lb = 80.0 -sell_value_min = 15 -sell_value_max = 40 -sell_value_curve = 0.82 diff --git a/fish/species/sturgeon_lake/sturgeon_lake.tres b/fish/species/sturgeon_lake/sturgeon_lake.tres deleted file mode 100644 index b69a743..0000000 --- a/fish/species/sturgeon_lake/sturgeon_lake.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false - -[resource] -script = ExtResource("1_fish_data") -id = &"sturgeon_lake" -display_name = "lake sturgeon" -active = false -catalog_number = 102 -collection_group = &"Ancient freshwater fish" -logbook_fact = "lake sturgeon sweep the bottom with four sensitive barbels before extending a tube-like mouth to feed. they can live for decades." -allowed_water_types = 1 -rarity = 3 -base_catch_weight = 0.09 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 10.0 -weight_max_lb = 180.0 -sell_value_min = 36 -sell_value_max = 82 -sell_value_curve = 0.8 diff --git a/fish/species/sturgeon_shovelnose/sturgeon_shovelnose.tres b/fish/species/sturgeon_shovelnose/sturgeon_shovelnose.tres deleted file mode 100644 index f62d908..0000000 --- a/fish/species/sturgeon_shovelnose/sturgeon_shovelnose.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false - -[resource] -script = ExtResource("1_fish_data") -id = &"sturgeon_shovelnose" -display_name = "shovelnose sturgeon" -active = false -catalog_number = 105 -collection_group = &"Ancient freshwater fish" -logbook_fact = "shovelnose sturgeon hug flowing river bottoms and probe for insect larvae. a flattened snout helps them hold position in strong current." -allowed_water_types = 1 -rarity = 2 -base_catch_weight = 0.22 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 1.0 -weight_max_lb = 8.0 -sell_value_min = 12 -sell_value_max = 25 -sell_value_curve = 0.9 diff --git a/fish/species/sturgeon_white/sturgeon_white.tres b/fish/species/sturgeon_white/sturgeon_white.tres deleted file mode 100644 index 9b4892c..0000000 --- a/fish/species/sturgeon_white/sturgeon_white.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false - -[resource] -script = ExtResource("1_fish_data") -id = &"sturgeon_white" -display_name = "white sturgeon" -active = false -catalog_number = 4301 -collection_group = &"Ocean-run giants" -logbook_fact = "white sturgeon are the largest freshwater fish in north america. armored plates line bodies built for long lives in rivers and estuaries." -allowed_water_types = 3 -rarity = 4 -base_catch_weight = 0.045 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 20.0 -weight_max_lb = 500.0 -sell_value_min = 58 -sell_value_max = 135 -sell_value_curve = 0.78 diff --git a/fish/species/sucker_white/sucker_white.tres b/fish/species/sucker_white/sucker_white.tres deleted file mode 100644 index 1e2c2b3..0000000 --- a/fish/species/sucker_white/sucker_white.tres +++ /dev/null @@ -1,27 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") - -[resource] -script = ExtResource("1_fish_data") -id = &"sucker_white" -display_name = "white sucker" -active = false -catalog_number = 2305 -collection_group = &"Freshwater bottom fish" -logbook_fact = "white suckers vacuum insects and organic matter from cool freshwater bottoms. spring runs carry large groups into shallow streams." -allowed_water_types = 1 -rarity = 0 -base_catch_weight = 2.0 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.3 -weight_max_lb = 8.0 -sell_value_min = 3 -sell_value_max = 8 -sell_value_curve = 0.9 diff --git a/fish/species/sunfish/sunfish.tres b/fish/species/sunfish/sunfish.tres index 9b9401d..14d2ced 100644 --- a/fish/species/sunfish/sunfish.tres +++ b/fish/species/sunfish/sunfish.tres @@ -9,10 +9,6 @@ script = ExtResource("1_fish_data") id = &"sunfish" display_name = "sunfish" -active = true -catalog_number = 5001 -collection_group = &"Open-ocean giants" -logbook_fact = "ocean sunfish are built more like enormous swimming heads than ordinary fish. they visit the surface and turn sideways to warm up." allowed_water_types = 2 rarity = 0 base_catch_weight = 7.0 diff --git a/fish/species/surgeonfish_blue/surgeonfish_blue.tres b/fish/species/surgeonfish_blue/surgeonfish_blue.tres deleted file mode 100644 index 9a21da4..0000000 --- a/fish/species/surgeonfish_blue/surgeonfish_blue.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"surgeonfish_blue" -display_name = "blue tang" -active = false -catalog_number = 5501 -collection_group = &"Reef grazers" -logbook_fact = "blue tangs graze algae from coral reefs with small close-set teeth. sharp folding spines near the tail give surgeonfish their name." -allowed_water_types = 2 -rarity = 1 -base_catch_weight = 0.9 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.05 -weight_max_lb = 1.5 -sell_value_min = 5 -sell_value_max = 11 -sell_value_curve = 0.95 diff --git a/fish/species/swordfish/swordfish.tres b/fish/species/swordfish/swordfish.tres index 5f776ca..2184395 100644 --- a/fish/species/swordfish/swordfish.tres +++ b/fish/species/swordfish/swordfish.tres @@ -13,10 +13,6 @@ allowed_location_tags = Array[StringName]([&"ocean"]) script = ExtResource("1_fish_data") id = &"swordfish" display_name = "swordfish" -active = true -catalog_number = 4604 -collection_group = &"Oceanic billfish" -logbook_fact = "swordfish are fast, wide-ranging predators with a flattened bill. they can cross deep water and warm surface layers in one day." allowed_water_types = 2 rarity = 4 base_catch_weight = 0.06 diff --git a/fish/species/tambaqui/tambaqui.tres b/fish/species/tambaqui/tambaqui.tres deleted file mode 100644 index 981d643..0000000 --- a/fish/species/tambaqui/tambaqui.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -require_rain = true - -[resource] -script = ExtResource("1_fish_data") -id = &"tambaqui" -display_name = "tambaqui" -active = false -catalog_number = 7509 -collection_group = &"Tropical freshwater fish" -logbook_fact = "tambaqui follow seasonal floods into forests to feed on fruit and seeds. strong square teeth crack tough plant material." -allowed_water_types = 1 -rarity = 3 -base_catch_weight = 0.1 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 8.0 -weight_max_lb = 80.0 -sell_value_min = 30 -sell_value_max = 68 -sell_value_curve = 0.82 diff --git a/fish/species/tang_yellow/tang_yellow.tres b/fish/species/tang_yellow/tang_yellow.tres deleted file mode 100644 index c4facd7..0000000 --- a/fish/species/tang_yellow/tang_yellow.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -forbid_rain = true - -[resource] -script = ExtResource("1_fish_data") -id = &"tang_yellow" -display_name = "yellow tang" -active = false -catalog_number = 5504 -collection_group = &"Reef grazers" -logbook_fact = "yellow tangs browse algae across hawaiian reefs during daylight. at night their bright bodies darken and show a pale horizontal stripe." -allowed_water_types = 2 -rarity = 2 -base_catch_weight = 0.35 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.05 -weight_max_lb = 0.8 -sell_value_min = 9 -sell_value_max = 20 -sell_value_curve = 0.96 diff --git a/fish/species/tarpon_atlantic/tarpon_atlantic.tres b/fish/species/tarpon_atlantic/tarpon_atlantic.tres deleted file mode 100644 index c2fbff0..0000000 --- a/fish/species/tarpon_atlantic/tarpon_atlantic.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -require_rain = true - -[resource] -script = ExtResource("1_fish_data") -id = &"tarpon_atlantic" -display_name = "atlantic tarpon" -active = false -catalog_number = 7301 -collection_group = &"Tropical estuary" -logbook_fact = "atlantic tarpon gulp air with a lung-like swim bladder when coastal water runs low on oxygen. giant silver scales flash during leaps." -allowed_water_types = 3 -rarity = 3 -base_catch_weight = 0.09 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 10.0 -weight_max_lb = 180.0 -sell_value_min = 34 -sell_value_max = 82 -sell_value_curve = 0.8 diff --git a/fish/species/tautog/tautog.tres b/fish/species/tautog/tautog.tres deleted file mode 100644 index cbd926f..0000000 --- a/fish/species/tautog/tautog.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"tautog" -display_name = "tautog" -active = false -catalog_number = 6906 -collection_group = &"Temperate reef fish" -logbook_fact = "tautog pry mussels and crabs from rocky structure with thick lips and strong teeth. adults return to familiar shelters year after year." -allowed_water_types = 2 -rarity = 1 -base_catch_weight = 0.8 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.5 -weight_max_lb = 20.0 -sell_value_min = 7 -sell_value_max = 18 -sell_value_curve = 0.86 diff --git a/fish/species/tench/tench.tres b/fish/species/tench/tench.tres deleted file mode 100644 index 300a922..0000000 --- a/fish/species/tench/tench.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false -require_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"tench" -display_name = "tench" -active = false -catalog_number = 2509 -collection_group = &"Freshwater coarse fish" -logbook_fact = "tench browse quiet, muddy bottoms with two small mouth barbels. a thick coat of slime protects their olive-green scales." -allowed_water_types = 1 -rarity = 1 -base_catch_weight = 0.75 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.5 -weight_max_lb = 12.0 -sell_value_min = 7 -sell_value_max = 17 -sell_value_curve = 0.88 diff --git a/fish/species/tetra_neon/tetra_neon.tres b/fish/species/tetra_neon/tetra_neon.tres deleted file mode 100644 index 487ef9b..0000000 --- a/fish/species/tetra_neon/tetra_neon.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false - -[resource] -script = ExtResource("1_fish_data") -id = &"tetra_neon" -display_name = "neon tetra" -active = false -catalog_number = 2102 -collection_group = &"Freshwater aquarium fish" -logbook_fact = "neon tetras school through shaded forest streams. an iridescent blue stripe remains visible in the dim, tannin-stained water." -allowed_water_types = 1 -rarity = 1 -base_catch_weight = 0.9 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.01 -weight_max_lb = 0.08 -sell_value_min = 4 -sell_value_max = 8 -sell_value_curve = 0.98 diff --git a/fish/species/tigerfish_goliath/tigerfish_goliath.tres b/fish/species/tigerfish_goliath/tigerfish_goliath.tres deleted file mode 100644 index dec9d49..0000000 --- a/fish/species/tigerfish_goliath/tigerfish_goliath.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"tigerfish_goliath" -display_name = "goliath tigerfish" -active = false -catalog_number = 2703 -collection_group = &"Freshwater giants" -logbook_fact = "goliath tigerfish patrol powerful african rivers with interlocking dagger-like teeth. a muscular forked tail drives sudden attacks." -allowed_water_types = 1 -rarity = 4 -base_catch_weight = 0.035 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 20.0 -weight_max_lb = 150.0 -sell_value_min = 58 -sell_value_max = 132 -sell_value_curve = 0.8 diff --git a/fish/species/tilapia_nile/tilapia_nile.tres b/fish/species/tilapia_nile/tilapia_nile.tres deleted file mode 100644 index 3db4fb6..0000000 --- a/fish/species/tilapia_nile/tilapia_nile.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"tilapia_nile" -display_name = "Nile tilapia" -active = false -catalog_number = 7506 -collection_group = &"Tropical freshwater fish" -logbook_fact = "nile tilapia thrive in warm lakes and rivers on a varied diet. females protect eggs and young inside their mouths." -allowed_water_types = 1 -rarity = 0 -base_catch_weight = 2.2 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.3 -weight_max_lb = 8.0 -sell_value_min = 3 -sell_value_max = 9 -sell_value_curve = 0.9 diff --git a/fish/species/tilefish_blueline/tilefish_blueline.tres b/fish/species/tilefish_blueline/tilefish_blueline.tres deleted file mode 100644 index 53598bd..0000000 --- a/fish/species/tilefish_blueline/tilefish_blueline.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"tilefish_blueline" -display_name = "blueline tilefish" -active = false -catalog_number = 1601 -collection_group = &"Deep shelf fish" -logbook_fact = "blueline tilefish shelter in burrows and rocky openings along deep shelves. a narrow blue stripe traces the edge of the dorsal fin." -allowed_water_types = 2 -rarity = 1 -base_catch_weight = 0.7 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 1.0 -weight_max_lb = 20.0 -sell_value_min = 7 -sell_value_max = 18 -sell_value_curve = 0.86 diff --git a/fish/species/tilefish_golden/tilefish_golden.tres b/fish/species/tilefish_golden/tilefish_golden.tres deleted file mode 100644 index 26e9543..0000000 --- a/fish/species/tilefish_golden/tilefish_golden.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"tilefish_golden" -display_name = "golden tilefish" -active = false -catalog_number = 1602 -collection_group = &"Deep shelf fish" -logbook_fact = "golden tilefish excavate burrows in soft clay along deep ocean slopes. their bright yellow spots contrast with blue-green backs." -allowed_water_types = 2 -rarity = 2 -base_catch_weight = 0.22 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 2.0 -weight_max_lb = 50.0 -sell_value_min = 15 -sell_value_max = 37 -sell_value_curve = 0.84 diff --git a/fish/species/trevally_bluefin/trevally_bluefin.tres b/fish/species/trevally_bluefin/trevally_bluefin.tres deleted file mode 100644 index 9c06970..0000000 --- a/fish/species/trevally_bluefin/trevally_bluefin.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -forbid_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"trevally_bluefin" -display_name = "bluefin trevally" -active = false -catalog_number = 5802 -collection_group = &"Reef predators" -logbook_fact = "bluefin trevally hunt reef fish in coordinated groups. electric blue fins and scattered blue spots contrast with a golden body." -allowed_water_types = 2 -rarity = 2 -base_catch_weight = 0.3 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 1.0 -weight_max_lb = 25.0 -sell_value_min = 14 -sell_value_max = 32 -sell_value_curve = 0.86 diff --git a/fish/species/trevally_giant/trevally_giant.tres b/fish/species/trevally_giant/trevally_giant.tres deleted file mode 100644 index f1acce2..0000000 --- a/fish/species/trevally_giant/trevally_giant.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"trevally_giant" -display_name = "giant trevally" -active = false -catalog_number = 3603 -collection_group = &"Large coastal predators" -logbook_fact = "giant trevally hunt reef edges with bursts of speed and force. large individuals sometimes charge prey from surf and shallow lagoons." -allowed_water_types = 2 -rarity = 3 -base_catch_weight = 0.1 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 10.0 -weight_max_lb = 150.0 -sell_value_min = 32 -sell_value_max = 78 -sell_value_curve = 0.8 diff --git a/fish/species/triggerfish_gray/triggerfish_gray.tres b/fish/species/triggerfish_gray/triggerfish_gray.tres deleted file mode 100644 index 9eb4a35..0000000 --- a/fish/species/triggerfish_gray/triggerfish_gray.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"triggerfish_gray" -display_name = "gray triggerfish" -active = false -catalog_number = 5602 -collection_group = &"Reef oddities" -logbook_fact = "gray triggerfish lock a stout dorsal spine upright when wedged into shelter. strong teeth crack barnacles, crabs, and shellfish." -allowed_water_types = 2 -rarity = 1 -base_catch_weight = 0.8 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.3 -weight_max_lb = 12.0 -sell_value_min = 7 -sell_value_max = 17 -sell_value_curve = 0.88 diff --git a/fish/species/triggerfish_queen/triggerfish_queen.tres b/fish/species/triggerfish_queen/triggerfish_queen.tres deleted file mode 100644 index e2de868..0000000 --- a/fish/species/triggerfish_queen/triggerfish_queen.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -forbid_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"triggerfish_queen" -display_name = "queen triggerfish" -active = false -catalog_number = 5605 -collection_group = &"Reef oddities" -logbook_fact = "queen triggerfish blow jets of water to uncover buried prey and flip sea urchins. vivid blue lines radiate across the face." -allowed_water_types = 2 -rarity = 2 -base_catch_weight = 0.25 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.5 -weight_max_lb = 15.0 -sell_value_min = 14 -sell_value_max = 32 -sell_value_curve = 0.88 diff --git a/fish/species/tripletail/tripletail.tres b/fish/species/tripletail/tripletail.tres deleted file mode 100644 index e973888..0000000 --- a/fish/species/tripletail/tripletail.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -require_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"tripletail" -display_name = "tripletail" -active = false -catalog_number = 604 -collection_group = &"Coastal oddities" -logbook_fact = "tripletail often drift sideways near floating debris, resembling a loose leaf. rounded rear fins create the three-tailed silhouette." -allowed_water_types = 2 -rarity = 2 -base_catch_weight = 0.28 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 1.0 -weight_max_lb = 30.0 -sell_value_min = 13 -sell_value_max = 31 -sell_value_curve = 0.85 diff --git a/fish/species/trout_brown/trout_brown.tres b/fish/species/trout_brown/trout_brown.tres deleted file mode 100644 index 0e6cefd..0000000 --- a/fish/species/trout_brown/trout_brown.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false - -[resource] -script = ExtResource("1_fish_data") -id = &"trout_brown" -display_name = "brown trout" -active = false -catalog_number = 1103 -collection_group = &"Cold freshwater salmonids" -logbook_fact = "brown trout often shelter by day and hunt more freely after dark. adaptable populations occupy streams, lakes, and even coastal water." -allowed_water_types = 1 -rarity = 1 -base_catch_weight = 0.8 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.5 -weight_max_lb = 25.0 -sell_value_min = 7 -sell_value_max = 20 -sell_value_curve = 0.86 diff --git a/fish/species/trout_cutthroat/trout_cutthroat.tres b/fish/species/trout_cutthroat/trout_cutthroat.tres index 61dc080..fa29c47 100644 --- a/fish/species/trout_cutthroat/trout_cutthroat.tres +++ b/fish/species/trout_cutthroat/trout_cutthroat.tres @@ -13,10 +13,6 @@ allowed_location_tags = Array[StringName]([&"starter_pond"]) script = ExtResource("1_fish_data") id = &"trout_cutthroat" display_name = "cutthroat trout" -active = true -catalog_number = 1104 -collection_group = &"Cold freshwater salmonids" -logbook_fact = "cutthroat trout take their name from the red slash beneath the jaw. many populations rely on cold, well-oxygenated streams." allowed_water_types = 1 rarity = 1 base_catch_weight = 0.4 diff --git a/fish/species/trout_golden/trout_golden.tres b/fish/species/trout_golden/trout_golden.tres index 5c3d87e..8aa3201 100644 --- a/fish/species/trout_golden/trout_golden.tres +++ b/fish/species/trout_golden/trout_golden.tres @@ -13,10 +13,6 @@ allowed_location_tags = Array[StringName]([&"starter_pond"]) script = ExtResource("1_fish_data") id = &"trout_golden" display_name = "golden trout" -active = true -catalog_number = 1105 -collection_group = &"Cold freshwater salmonids" -logbook_fact = "golden trout evolved in clear, high-elevation california streams. their bright flanks stand out against rocky alpine water." allowed_water_types = 1 rarity = 2 base_catch_weight = 0.2 diff --git a/fish/species/trout_rainbow/trout_rainbow.tres b/fish/species/trout_rainbow/trout_rainbow.tres index fbcdb42..f9c74f6 100644 --- a/fish/species/trout_rainbow/trout_rainbow.tres +++ b/fish/species/trout_rainbow/trout_rainbow.tres @@ -13,10 +13,6 @@ allowed_location_tags = Array[StringName]([&"starter_pond"]) script = ExtResource("1_fish_data") id = &"trout_rainbow" display_name = "rainbow trout" -active = true -catalog_number = 1106 -collection_group = &"Cold freshwater salmonids" -logbook_fact = "rainbow trout are adaptable stream hunters. the pink lateral stripe is especially vivid when the fish is in breeding condition." allowed_water_types = 1 rarity = 1 base_catch_weight = 0.45 diff --git a/fish/species/trout_steelhead/trout_steelhead.tres b/fish/species/trout_steelhead/trout_steelhead.tres index 92f6985..57887f7 100644 --- a/fish/species/trout_steelhead/trout_steelhead.tres +++ b/fish/species/trout_steelhead/trout_steelhead.tres @@ -13,10 +13,6 @@ allowed_location_tags = Array[StringName]([&"starter_pond"]) script = ExtResource("1_fish_data") id = &"trout_steelhead" display_name = "steelhead trout" -active = true -catalog_number = 4501 -collection_group = &"Ocean-run salmonids" -logbook_fact = "steelhead are the ocean-going form of rainbow trout. adults can leave fresh water and later return to spawn." allowed_water_types = 1 rarity = 2 base_catch_weight = 0.2 diff --git a/fish/species/trumpetfish_atlantic/trumpetfish_atlantic.tres b/fish/species/trumpetfish_atlantic/trumpetfish_atlantic.tres deleted file mode 100644 index 0a99228..0000000 --- a/fish/species/trumpetfish_atlantic/trumpetfish_atlantic.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"trumpetfish_atlantic" -display_name = "atlantic trumpetfish" -active = false -catalog_number = 5601 -collection_group = &"Reef oddities" -logbook_fact = "atlantic trumpetfish hover head-down among corals and sea fans. long tubular snouts expand suddenly to draw in small fish." -allowed_water_types = 2 -rarity = 2 -base_catch_weight = 0.3 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.1 -weight_max_lb = 2.0 -sell_value_min = 10 -sell_value_max = 24 -sell_value_curve = 0.94 diff --git a/fish/species/tuna_albacore/tuna_albacore.tres b/fish/species/tuna_albacore/tuna_albacore.tres index d0b841b..21a9155 100644 --- a/fish/species/tuna_albacore/tuna_albacore.tres +++ b/fish/species/tuna_albacore/tuna_albacore.tres @@ -14,10 +14,6 @@ preferred_bait_weight_multiplier = 1.4 script = ExtResource("1_fish_data") id = &"tuna_albacore" display_name = "albacore tuna" -active = true -catalog_number = 4801 -collection_group = &"Oceanic tuna" -logbook_fact = "albacore have unusually long pectoral fins. their warm muscles help them cruise across wide stretches of open ocean." allowed_water_types = 2 rarity = 2 base_catch_weight = 1.5 diff --git a/fish/species/tuna_bigeye/tuna_bigeye.tres b/fish/species/tuna_bigeye/tuna_bigeye.tres index 8c6c867..e5e4b7c 100644 --- a/fish/species/tuna_bigeye/tuna_bigeye.tres +++ b/fish/species/tuna_bigeye/tuna_bigeye.tres @@ -14,10 +14,6 @@ preferred_bait_weight_multiplier = 1.4 script = ExtResource("1_fish_data") id = &"tuna_bigeye" display_name = "bigeye tuna" -active = true -catalog_number = 4802 -collection_group = &"Oceanic tuna" -logbook_fact = "bigeye tuna make daily trips between deep, cool water and warmer surface layers. their large eyes suit those dim depths." allowed_water_types = 2 rarity = 3 base_catch_weight = 0.55 diff --git a/fish/species/tuna_bluefin/tuna_bluefin.tres b/fish/species/tuna_bluefin/tuna_bluefin.tres index 13e8bc2..a669b5d 100644 --- a/fish/species/tuna_bluefin/tuna_bluefin.tres +++ b/fish/species/tuna_bluefin/tuna_bluefin.tres @@ -14,10 +14,6 @@ preferred_bait_weight_multiplier = 1.4 script = ExtResource("1_fish_data") id = &"tuna_bluefin" display_name = "bluefin tuna" -active = true -catalog_number = 4803 -collection_group = &"Oceanic tuna" -logbook_fact = "bluefin tuna are powerful ocean travelers. heat retained in their swimming muscles lets them thrive in surprisingly cold seas." allowed_water_types = 2 rarity = 4 base_catch_weight = 0.18 diff --git a/fish/species/tuna_skipjack/tuna_skipjack.tres b/fish/species/tuna_skipjack/tuna_skipjack.tres index 4541393..4d9e5a8 100644 --- a/fish/species/tuna_skipjack/tuna_skipjack.tres +++ b/fish/species/tuna_skipjack/tuna_skipjack.tres @@ -14,10 +14,6 @@ preferred_bait_weight_multiplier = 1.4 script = ExtResource("1_fish_data") id = &"tuna_skipjack" display_name = "skipjack tuna" -active = true -catalog_number = 4804 -collection_group = &"Oceanic tuna" -logbook_fact = "skipjack travel in fast-moving schools and have dark stripes along their lower sides. they rarely stop swimming." allowed_water_types = 2 rarity = 1 base_catch_weight = 3.0 diff --git a/fish/species/tuna_yellowfin/tuna_yellowfin.tres b/fish/species/tuna_yellowfin/tuna_yellowfin.tres index 5c5acc3..cbd4950 100644 --- a/fish/species/tuna_yellowfin/tuna_yellowfin.tres +++ b/fish/species/tuna_yellowfin/tuna_yellowfin.tres @@ -14,10 +14,6 @@ preferred_bait_weight_multiplier = 1.4 script = ExtResource("1_fish_data") id = &"tuna_yellowfin" display_name = "yellowfin tuna" -active = true -catalog_number = 4805 -collection_group = &"Oceanic tuna" -logbook_fact = "yellowfin are named for their bright yellow fins and finlets. large schools often gather with other open-ocean hunters." allowed_water_types = 2 rarity = 2 catch_profile = ExtResource("2_profile") diff --git a/fish/species/turbot/turbot.tres b/fish/species/turbot/turbot.tres deleted file mode 100644 index 6b46871..0000000 --- a/fish/species/turbot/turbot.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -require_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"turbot" -display_name = "turbot" -active = false -catalog_number = 3703 -collection_group = &"Large flatfish" -logbook_fact = "turbot have broad, nearly circular bodies covered with bony bumps instead of scales. they bury into sand before ambushing fish and crustaceans." -allowed_water_types = 2 -rarity = 2 -base_catch_weight = 0.24 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 1.0 -weight_max_lb = 35.0 -sell_value_min = 14 -sell_value_max = 34 -sell_value_curve = 0.85 diff --git a/fish/species/turtle_green/turtle_green.tres b/fish/species/turtle_green/turtle_green.tres deleted file mode 100644 index 91f40cd..0000000 --- a/fish/species/turtle_green/turtle_green.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -forbid_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"turtle_green" -display_name = "green sea turtle" -active = false -catalog_number = 6201 -collection_group = &"Sea turtles" -logbook_fact = "green sea turtles graze seagrass meadows with finely serrated jaws. adults migrate long distances between feeding and nesting grounds." -allowed_water_types = 2 -rarity = 4 -base_catch_weight = 0.018 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 65.0 -weight_max_lb = 500.0 -sell_value_min = 62 -sell_value_max = 145 -sell_value_curve = 0.78 diff --git a/fish/species/turtle_hawksbill/turtle_hawksbill.tres b/fish/species/turtle_hawksbill/turtle_hawksbill.tres deleted file mode 100644 index 5e07f77..0000000 --- a/fish/species/turtle_hawksbill/turtle_hawksbill.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -require_rain = true - -[resource] -script = ExtResource("1_fish_data") -id = &"turtle_hawksbill" -display_name = "hawksbill sea turtle" -active = false -catalog_number = 6202 -collection_group = &"Sea turtles" -logbook_fact = "hawksbill sea turtles reach into reef crevices with narrow hooked beaks. a diet rich in sponges helps shape coral communities." -allowed_water_types = 2 -rarity = 4 -base_catch_weight = 0.014 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 75.0 -weight_max_lb = 250.0 -sell_value_min = 66 -sell_value_max = 150 -sell_value_curve = 0.8 diff --git a/fish/species/turtle_leatherback/turtle_leatherback.tres b/fish/species/turtle_leatherback/turtle_leatherback.tres deleted file mode 100644 index 1e89bee..0000000 --- a/fish/species/turtle_leatherback/turtle_leatherback.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false -require_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"turtle_leatherback" -display_name = "leatherback sea turtle" -active = false -catalog_number = 6203 -collection_group = &"Sea turtles" -logbook_fact = "leatherback sea turtles cross entire oceans while hunting jellies. a flexible ridged shell and internal heat help them enter cold water." -allowed_water_types = 2 -rarity = 4 -base_catch_weight = 0.012 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 500.0 -weight_max_lb = 2000.0 -sell_value_min = 75 -sell_value_max = 175 -sell_value_curve = 0.76 diff --git a/fish/species/turtle_loggerhead/turtle_loggerhead.tres b/fish/species/turtle_loggerhead/turtle_loggerhead.tres deleted file mode 100644 index 5b64995..0000000 --- a/fish/species/turtle_loggerhead/turtle_loggerhead.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"turtle_loggerhead" -display_name = "loggerhead sea turtle" -active = false -catalog_number = 6204 -collection_group = &"Sea turtles" -logbook_fact = "loggerhead sea turtles crush crabs and mollusks with massive jaws. females often return near their birth beaches to nest." -allowed_water_types = 2 -rarity = 4 -base_catch_weight = 0.016 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 150.0 -weight_max_lb = 1200.0 -sell_value_min = 68 -sell_value_max = 155 -sell_value_curve = 0.77 diff --git a/fish/species/urchin_purple/urchin_purple.tres b/fish/species/urchin_purple/urchin_purple.tres deleted file mode 100644 index 7725d3d..0000000 --- a/fish/species/urchin_purple/urchin_purple.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"urchin_purple" -display_name = "purple sea urchin" -active = false -catalog_number = 1903 -collection_group = &"Echinoderms" -logbook_fact = "purple sea urchins scrape algae from rocks with a five-toothed feeding structure. dense groups can clear kelp from entire reefs." -allowed_water_types = 2 -rarity = 1 -base_catch_weight = 0.75 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.05 -weight_max_lb = 1.0 -sell_value_min = 5 -sell_value_max = 12 -sell_value_curve = 0.96 diff --git a/fish/species/wahoo/wahoo.tres b/fish/species/wahoo/wahoo.tres deleted file mode 100644 index 4753b9d..0000000 --- a/fish/species/wahoo/wahoo.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"wahoo" -display_name = "wahoo" -active = false -catalog_number = 4703 -collection_group = &"Oceanic pelagic fish" -logbook_fact = "wahoo are streamlined open-ocean hunters with rows of sharp teeth. blue vertical bars flicker across their sides during fast pursuits." -allowed_water_types = 2 -rarity = 3 -base_catch_weight = 0.11 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 10.0 -weight_max_lb = 100.0 -sell_value_min = 30 -sell_value_max = 70 -sell_value_curve = 0.82 diff --git a/fish/species/walleye/walleye.tres b/fish/species/walleye/walleye.tres index 97dea01..ce833c9 100644 --- a/fish/species/walleye/walleye.tres +++ b/fish/species/walleye/walleye.tres @@ -13,10 +13,6 @@ allowed_location_tags = Array[StringName]([&"starter_pond"]) script = ExtResource("1_fish_data") id = &"walleye" display_name = "walleye" -active = true -catalog_number = 3306 -collection_group = &"Freshwater predators" -logbook_fact = "walleye have light-sensitive eyes that help them hunt in murky water and around dusk. their reflective layer gives the eyes a pale glow." allowed_water_types = 1 rarity = 1 base_catch_weight = 0.4 diff --git a/fish/species/walrus/walrus.tres b/fish/species/walrus/walrus.tres deleted file mode 100644 index 41682d5..0000000 --- a/fish/species/walrus/walrus.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -require_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"walrus" -display_name = "walrus" -active = false -catalog_number = 504 -collection_group = &"Coastal marine mammals" -logbook_fact = "walruses sweep the seafloor for clams and other soft-bodied prey. long tusks help them haul onto ice and settle disputes." -allowed_water_types = 2 -rarity = 4 -base_catch_weight = 0.012 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 800.0 -weight_max_lb = 3700.0 -sell_value_min = 74 -sell_value_max = 170 -sell_value_curve = 0.76 diff --git a/fish/species/warmouth/warmouth.tres b/fish/species/warmouth/warmouth.tres deleted file mode 100644 index af0214f..0000000 --- a/fish/species/warmouth/warmouth.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false -require_rain = true - -[resource] -script = ExtResource("1_fish_data") -id = &"warmouth" -display_name = "warmouth" -active = false -catalog_number = 3106 -collection_group = &"Freshwater panfish" -logbook_fact = "warmouth hide in weeds, roots, and murky backwaters before ambushing prey. red eyes and dark cheek stripes frame a notably large mouth." -allowed_water_types = 1 -rarity = 1 -base_catch_weight = 0.8 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.2 -weight_max_lb = 2.0 -sell_value_min = 5 -sell_value_max = 10 -sell_value_curve = 0.95 diff --git a/fish/species/weakfish/weakfish.tres b/fish/species/weakfish/weakfish.tres deleted file mode 100644 index b0072e3..0000000 --- a/fish/species/weakfish/weakfish.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false -require_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"weakfish" -display_name = "weakfish" -active = false -catalog_number = 6805 -collection_group = &"Temperate estuary" -logbook_fact = "weakfish are named for delicate mouth tissue that tears easily around a hook. iridescent spots scatter across their bronze backs." -allowed_water_types = 2 -rarity = 2 -base_catch_weight = 0.32 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.5 -weight_max_lb = 18.0 -sell_value_min = 12 -sell_value_max = 29 -sell_value_curve = 0.86 diff --git a/fish/species/whale_blue/whale_blue.tres b/fish/species/whale_blue/whale_blue.tres deleted file mode 100644 index 9fab3ed..0000000 --- a/fish/species/whale_blue/whale_blue.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -forbid_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"whale_blue" -display_name = "blue whale" -active = false -catalog_number = 7701 -collection_group = &"Whales and dolphins" -logbook_fact = "blue whales are the largest animals known to have lived. pleated throats expand around vast mouthfuls of water that baleen filters for krill." -allowed_water_types = 2 -rarity = 4 -base_catch_weight = 0.005 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 100000.0 -weight_max_lb = 330000.0 -sell_value_min = 120 -sell_value_max = 300 -sell_value_curve = 0.72 diff --git a/fish/species/whale_humpback/whale_humpback.tres b/fish/species/whale_humpback/whale_humpback.tres deleted file mode 100644 index e20e736..0000000 --- a/fish/species/whale_humpback/whale_humpback.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -require_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"whale_humpback" -display_name = "humpback whale" -active = false -catalog_number = 7703 -collection_group = &"Whales and dolphins" -logbook_fact = "humpback whales use long pectoral fins while turning and feeding. males produce layered songs that change across breeding seasons." -allowed_water_types = 2 -rarity = 4 -base_catch_weight = 0.008 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 40000.0 -weight_max_lb = 90000.0 -sell_value_min = 105 -sell_value_max = 260 -sell_value_curve = 0.73 diff --git a/fish/species/whale_killer/whale_killer.tres b/fish/species/whale_killer/whale_killer.tres deleted file mode 100644 index b3ea92a..0000000 --- a/fish/species/whale_killer/whale_killer.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -require_rain = true - -[resource] -script = ExtResource("1_fish_data") -id = &"whale_killer" -display_name = "killer whale" -active = false -catalog_number = 7704 -collection_group = &"Whales and dolphins" -logbook_fact = "killer whales live in close family groups with distinct calls and hunting traditions. different populations specialize in different prey." -allowed_water_types = 2 -rarity = 4 -base_catch_weight = 0.008 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 3000.0 -weight_max_lb = 12000.0 -sell_value_min = 95 -sell_value_max = 230 -sell_value_curve = 0.74 diff --git a/fish/species/whale_sperm/whale_sperm.tres b/fish/species/whale_sperm/whale_sperm.tres deleted file mode 100644 index a10b923..0000000 --- a/fish/species/whale_sperm/whale_sperm.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_day = false -require_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"whale_sperm" -display_name = "sperm whale" -active = false -catalog_number = 7705 -collection_group = &"Whales and dolphins" -logbook_fact = "sperm whales make deep dives to hunt squid with powerful echolocation clicks. their enormous square heads contain a waxy spermaceti organ." -allowed_water_types = 2 -rarity = 4 -base_catch_weight = 0.006 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 15000.0 -weight_max_lb = 125000.0 -sell_value_min = 115 -sell_value_max = 280 -sell_value_curve = 0.72 diff --git a/fish/species/white_perch/white_perch.tres b/fish/species/white_perch/white_perch.tres deleted file mode 100644 index ee06ee4..0000000 --- a/fish/species/white_perch/white_perch.tres +++ /dev/null @@ -1,27 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") - -[resource] -script = ExtResource("1_fish_data") -id = &"white_perch" -display_name = "white perch" -active = false -catalog_number = 6806 -collection_group = &"Temperate estuary" -logbook_fact = "white perch tolerate fresh and brackish water along the atlantic coast. deep silver bodies gather in schools around river mouths." -allowed_water_types = 3 -rarity = 1 -base_catch_weight = 1.1 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.2 -weight_max_lb = 3.5 -sell_value_min = 5 -sell_value_max = 11 -sell_value_curve = 0.9 diff --git a/fish/species/whitefish_lake/whitefish_lake.tres b/fish/species/whitefish_lake/whitefish_lake.tres deleted file mode 100644 index 4ad0281..0000000 --- a/fish/species/whitefish_lake/whitefish_lake.tres +++ /dev/null @@ -1,27 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") - -[resource] -script = ExtResource("1_fish_data") -id = &"whitefish_lake" -display_name = "lake whitefish" -active = false -catalog_number = 1003 -collection_group = &"Cold freshwater fish" -logbook_fact = "lake whitefish browse deep, cold bottoms with small downward-pointing mouths. large schools move toward shallows to spawn in autumn." -allowed_water_types = 1 -rarity = 0 -base_catch_weight = 1.5 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.5 -weight_max_lb = 12.0 -sell_value_min = 4 -sell_value_max = 11 -sell_value_curve = 0.9 diff --git a/fish/species/wolffish_atlantic/wolffish_atlantic.tres b/fish/species/wolffish_atlantic/wolffish_atlantic.tres deleted file mode 100644 index a305cc7..0000000 --- a/fish/species/wolffish_atlantic/wolffish_atlantic.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -forbid_rain = true - -[resource] -script = ExtResource("1_fish_data") -id = &"wolffish_atlantic" -display_name = "atlantic wolffish" -active = false -catalog_number = 1201 -collection_group = &"Cold reef fish" -logbook_fact = "atlantic wolffish use heavy jaws and blunt teeth to crush shellfish and urchins. natural antifreeze proteins help them endure icy water." -allowed_water_types = 2 -rarity = 2 -base_catch_weight = 0.25 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 2.0 -weight_max_lb = 40.0 -sell_value_min = 14 -sell_value_max = 34 -sell_value_curve = 0.84 diff --git a/fish/species/wolffish_spotted/wolffish_spotted.tres b/fish/species/wolffish_spotted/wolffish_spotted.tres deleted file mode 100644 index 52a1de3..0000000 --- a/fish/species/wolffish_spotted/wolffish_spotted.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -require_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"wolffish_spotted" -display_name = "spotted wolffish" -active = false -catalog_number = 1203 -collection_group = &"Cold reef fish" -logbook_fact = "spotted wolffish crush hard-shelled prey with broad molar-like teeth. their pale spots stand out against a dark cold-water body." -allowed_water_types = 2 -rarity = 3 -base_catch_weight = 0.11 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 3.0 -weight_max_lb = 50.0 -sell_value_min = 26 -sell_value_max = 60 -sell_value_curve = 0.84 diff --git a/fish/species/wrasse_ballan/wrasse_ballan.tres b/fish/species/wrasse_ballan/wrasse_ballan.tres deleted file mode 100644 index 63cb0b6..0000000 --- a/fish/species/wrasse_ballan/wrasse_ballan.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"wrasse_ballan" -display_name = "ballan wrasse" -active = false -catalog_number = 6101 -collection_group = &"Reef wrasses" -logbook_fact = "ballan wrasse crush shellfish and sea urchins with strong throat teeth. thick lips and mottled colors suit rocky european reefs." -allowed_water_types = 2 -rarity = 1 -base_catch_weight = 0.8 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.2 -weight_max_lb = 10.0 -sell_value_min = 6 -sell_value_max = 15 -sell_value_curve = 0.9 diff --git a/fish/species/wrasse_cleaner/wrasse_cleaner.tres b/fish/species/wrasse_cleaner/wrasse_cleaner.tres deleted file mode 100644 index e22c1f0..0000000 --- a/fish/species/wrasse_cleaner/wrasse_cleaner.tres +++ /dev/null @@ -1,29 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false -forbid_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"wrasse_cleaner" -display_name = "cleaner wrasse" -active = false -catalog_number = 6102 -collection_group = &"Reef wrasses" -logbook_fact = "cleaner wrasses advertise with a bright stripe and dance at reef stations. larger fish wait while parasites are picked from skin and gills." -allowed_water_types = 2 -rarity = 2 -base_catch_weight = 0.35 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.01 -weight_max_lb = 0.2 -sell_value_min = 9 -sell_value_max = 20 -sell_value_curve = 1.0 diff --git a/fish/species/wreckfish/wreckfish.tres b/fish/species/wreckfish/wreckfish.tres deleted file mode 100644 index a2121ef..0000000 --- a/fish/species/wreckfish/wreckfish.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -require_fog = true - -[resource] -script = ExtResource("1_fish_data") -id = &"wreckfish" -display_name = "wreckfish" -active = false -catalog_number = 1606 -collection_group = &"Deep shelf fish" -logbook_fact = "wreckfish gather around caves, ledges, and shipwrecks in deep water. powerful jaws let them ambush fish and large crustaceans." -allowed_water_types = 2 -rarity = 3 -base_catch_weight = 0.1 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 10.0 -weight_max_lb = 180.0 -sell_value_min = 31 -sell_value_max = 76 -sell_value_curve = 0.8 diff --git a/fish/species/yellow_perch/yellow_perch.tres b/fish/species/yellow_perch/yellow_perch.tres deleted file mode 100644 index 3147fdd..0000000 --- a/fish/species/yellow_perch/yellow_perch.tres +++ /dev/null @@ -1,28 +0,0 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 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"] - -[sub_resource type="Resource" id="Availability"] -script = ExtResource("3_availability") -allow_night = false - -[resource] -script = ExtResource("1_fish_data") -id = &"yellow_perch" -display_name = "yellow perch" -active = false -catalog_number = 3201 -collection_group = &"Freshwater perch" -logbook_fact = "yellow perch travel in schools through cool lakes and slow rivers. dark vertical bars and orange lower fins make them easy to recognize." -allowed_water_types = 1 -rarity = 0 -base_catch_weight = 2.2 -catch_profile = ExtResource("2_profile") -availability = SubResource("Availability") -weight_min_lb = 0.2 -weight_max_lb = 4.0 -sell_value_min = 3 -sell_value_max = 8 -sell_value_curve = 0.9 diff --git a/fishing/fishing_spot.gd b/fishing/fishing_spot.gd index 2c8f584..243a069 100644 --- a/fishing/fishing_spot.gd +++ b/fishing/fishing_spot.gd @@ -15,7 +15,6 @@ const PlayerExperienceType = preload( ) const ItemCatalogType = preload("res://items/item_catalog.gd") const ItemDataType = preload("res://items/item_data.gd") -const FishingRodDataType = preload("res://items/fishing_rod_data.gd") const PlayerBagType = preload("res://inventory/player_bag.gd") const PlayerHotbarType = preload("res://inventory/player_hotbar.gd") const PlayerFishingUpgradesType = preload( @@ -659,7 +658,7 @@ func has_active_fishing_rod() -> bool: var item: ItemDataType = _get_active_item() return ( item != null - and item.is_available() + and item.is_valid() and item.category == ItemDataType.Category.ROD and item.usable and item.equippable @@ -677,11 +676,7 @@ func _get_active_item() -> ItemDataType: if item_id.is_empty() or not _local_bag.owns_item(item_id): return null var item: ItemDataType = _item_catalog.get_item_by_id(item_id) - return item if item != null and item.is_available() else null - - -func _get_active_rod() -> FishingRodDataType: - return _get_active_item() as FishingRodDataType + return item if item != null and item.is_valid() else null func _is_cooler_full() -> bool: @@ -834,9 +829,7 @@ func _on_cast_completed() -> void: _selected_water_region = get_fishable_water_region(_cast_target) _selection_context = _build_fishing_context(_selected_water_region) - var active_rod: FishingRodDataType = _get_active_rod() _fish_selector.undiscovered_weight_multiplier = undiscovered_weight_multiplier - _fish_selector.active_rod = active_rod _fish_selector.rarity_weight_multipliers = [] for rarity: int in range(FishDataType.Rarity.size()): _fish_selector.rarity_weight_multipliers.append( @@ -863,10 +856,6 @@ func _on_cast_completed() -> void: _item_effects.get_bite_time_multiplier() if _item_effects != null else 1.0 - ) * ( - active_rod.bite_time_multiplier - if active_rod != null - else 1.0 ) _withdrawal_progress = 0.0 _withdrawal_input_held = false @@ -879,7 +868,7 @@ func _on_cast_completed() -> void: _cast_origin_position.z + _cast_direction.z * withdrawal_cancel_distance ) _presentation.set_line_mode(FishingPresentationType.LineMode.SLACK) - status_changed.emit("") + status_changed.emit("waiting for a bite...") func _consume_active_bait() -> void: @@ -1066,7 +1055,6 @@ func _activate_bite(confirmation_override: bool = false) -> void: func _get_effective_reel_speed() -> float: if _active_player == null: return 0.0 - var rod: FishingRodDataType = _get_active_rod() return _active_player.reel_speed * ( _fishing_upgrades.get_reel_speed_multiplier() if _fishing_upgrades != null @@ -1075,16 +1063,13 @@ func _get_effective_reel_speed() -> float: _item_effects.get_reel_multiplier() if _item_effects != null else 1.0 - ) * ( - rod.reel_speed_multiplier if rod != null else 1.0 ) func _get_effective_barrier_damage() -> int: if _active_player == null: return 1 - var rod: FishingRodDataType = _get_active_rod() - var damage: int = ( + return ( _fishing_upgrades.get_barrier_damage() if _fishing_upgrades != null else _active_player.click_power @@ -1093,13 +1078,6 @@ func _get_effective_barrier_damage() -> int: if _item_effects != null else 0 ) - return maxi( - roundi( - float(damage) - * (rod.barrier_power_multiplier if rod != null else 1.0) - ), - 1, - ) func _on_catch_encounter_updated( @@ -1153,7 +1131,10 @@ func _on_catch_escaped() -> void: return _stop_fight_audio() - _cleanup_attempt("", &"escape") + var fish_name: String = "the fish" + if _selected_fish != null and not _selected_fish.display_name.is_empty(): + fish_name = "the %s" % _selected_fish.display_name + _cleanup_attempt("%s got away!" % fish_name, &"escape") func _on_outcome_completed(outcome: StringName) -> void: @@ -1534,11 +1515,7 @@ func _get_active_bait_tags() -> Array[StringName]: if bait_id.is_empty() or _local_bag == null or not _local_bag.owns_item(bait_id): return [] var item: ItemDataType = _item_catalog.get_item_by_id(bait_id) - return ( - item.bait_tags.duplicate() - if item != null and item.is_available() and item.is_bait() - else [] - ) + return item.bait_tags.duplicate() if item != null and item.is_bait() else [] func _active_lure_has_effect(effect_id: StringName) -> bool: @@ -1553,12 +1530,7 @@ func _active_lure_has_effect(effect_id: StringName) -> bool: var lure: ItemDataType = _item_catalog.get_item_by_id( _local_player.active_lure_id ) - return ( - lure != null - and lure.is_available() - and lure.is_lure() - and effect_id in lure.lure_effects - ) + return lure != null and lure.is_lure() and effect_id in lure.lure_effects func _build_network_evidence() -> Dictionary: @@ -1625,7 +1597,7 @@ func _on_network_cast_accepted( _network_input_resend_elapsed = 0.0 _presentation.show_withdrawal_position(_bobber_water_position) _presentation.set_line_mode(FishingPresentationType.LineMode.SLACK) - status_changed.emit("") + status_changed.emit("waiting for a bite...") func _on_network_cast_rejected(message: String) -> void: diff --git a/inventory/player_bag.gd b/inventory/player_bag.gd index ffb734d..4fc12b6 100644 --- a/inventory/player_bag.gd +++ b/inventory/player_bag.gd @@ -39,7 +39,7 @@ func add_item(item_id: StringName, quantity: int = 1) -> bool: func can_add_item(item_id: StringName, quantity: int = 1) -> bool: - var item: ItemDataType = _resolve_available_item(item_id) + var item: ItemDataType = _resolve_valid_item(item_id) if item == null or quantity <= 0: return false var existing: OwnedItemType = get_owned_item(item_id) @@ -156,8 +156,3 @@ func _resolve_valid_item(item_id: StringName) -> ItemDataType: return null var item: ItemDataType = _catalog.get_item_by_id(item_id) return item if item != null and item.is_valid() else null - - -func _resolve_available_item(item_id: StringName) -> ItemDataType: - var item: ItemDataType = _resolve_valid_item(item_id) - return item if item != null and item.active else null diff --git a/inventory/player_hotbar.gd b/inventory/player_hotbar.gd index a71ab68..e9dbcec 100644 --- a/inventory/player_hotbar.gd +++ b/inventory/player_hotbar.gd @@ -249,7 +249,7 @@ func _can_assign(item_id: StringName) -> bool: if _catalog == null: return false var item: ItemDataType = _catalog.get_item_by_id(item_id) - return item != null and item.is_available() and item.hotbar_allowed + return item != null and item.is_valid() and item.hotbar_allowed func _can_assign_fish(catch_id: StringName) -> bool: diff --git a/items/catalog/art_kit.tres b/items/catalog/art_kit.tres index e59705d..ee5b28e 100644 --- a/items/catalog/art_kit.tres +++ b/items/catalog/art_kit.tres @@ -7,7 +7,7 @@ script = ExtResource("1_item") item_id = &"art_kit" display_name = "Art Kit" -description = "Select the Art Kit in the Hotbar to paint." +description = "Press P in the game world to paint!" category = 1 icon = ExtResource("2_icon") stackable = false diff --git a/items/catalog/basic_fishing_rod.tres b/items/catalog/basic_fishing_rod.tres index 9849b89..f43f9ca 100644 --- a/items/catalog/basic_fishing_rod.tres +++ b/items/catalog/basic_fishing_rod.tres @@ -1,6 +1,6 @@ -[gd_resource type="Resource" script_class="FishingRodData" load_steps=3 format=3] +[gd_resource type="Resource" script_class="ItemData" load_steps=3 format=3] -[ext_resource type="Script" path="res://items/fishing_rod_data.gd" id="1_script"] +[ext_resource type="Script" path="res://items/item_data.gd" id="1_script"] [ext_resource type="Texture2D" path="res://items/icons/equipment/64_rod_base_thick.png" id="2_icon"] [resource] @@ -8,7 +8,6 @@ script = ExtResource("1_script") item_id = &"basic_fishing_rod" display_name = "basic fishing rod" description = "a dependable starter rod. select it to cast." -active = true category = 0 icon = ExtResource("2_icon") stackable = false @@ -16,8 +15,3 @@ max_stack = 1 usable = true equippable = true hotbar_allowed = true -shop_order = 1 -shop_price = 0 -unlock_level = 1 -effect_summary = "neutral baseline with no catch-selection or handling modifiers." -tradeoff = "none." diff --git a/items/catalog/cooler_expansion.tres b/items/catalog/cooler_expansion.tres new file mode 100644 index 0000000..2e9ed29 --- /dev/null +++ b/items/catalog/cooler_expansion.tres @@ -0,0 +1,17 @@ +[gd_resource type="Resource" script_class="ItemData" load_steps=3 format=3] + +[ext_resource type="Script" path="res://items/item_data.gd" id="1"] +[ext_resource type="Texture2D" path="res://items/icons/placeholder/cooler_expansion.svg" id="2"] + +[resource] +script = ExtResource("1") +item_id = &"cooler_expansion" +display_name = "cooler expansion" +description = "permanently increases the number of fish the cooler can hold." +category = 4 +icon = ExtResource("2") +stackable = false +max_stack = 1 +usable = false +equippable = false +hotbar_allowed = false diff --git a/items/catalog/item_catalog.tres b/items/catalog/item_catalog.tres index 5f2ac3f..43377ba 100644 --- a/items/catalog/item_catalog.tres +++ b/items/catalog/item_catalog.tres @@ -1,4 +1,4 @@ -[gd_resource type="Resource" script_class="ItemCatalog" load_steps=38 format=3] +[gd_resource type="Resource" script_class="ItemCatalog" load_steps=18 format=3] [ext_resource type="Script" path="res://items/item_catalog.gd" id="1_script"] [ext_resource type="Resource" path="res://items/catalog/basic_fishing_rod.tres" id="2_rod"] @@ -6,6 +6,7 @@ [ext_resource type="Resource" path="res://items/catalog/energy_drink.tres" id="4_energy"] [ext_resource type="Resource" path="res://items/catalog/snack.tres" id="5_snack"] [ext_resource type="Resource" path="res://items/catalog/fish_finder.tres" id="6_finder"] +[ext_resource type="Resource" path="res://items/catalog/cooler_expansion.tres" id="7_cooler"] [ext_resource type="Resource" path="res://items/catalog/art_kit.tres" id="8_art_kit"] [ext_resource type="Resource" path="res://items/catalog/worms.tres" id="9_worms"] [ext_resource type="Resource" path="res://items/catalog/snails.tres" id="10_snails"] @@ -16,28 +17,7 @@ [ext_resource type="Resource" path="res://items/catalog/luminous_roe.tres" id="15_roe"] [ext_resource type="Resource" path="res://items/catalog/the_standby.tres" id="16_standby"] [ext_resource type="Resource" path="res://items/catalog/batteries.tres" id="17_batteries"] -[ext_resource type="Resource" path="res://items/catalog/rods/cardboard_classic_rod.tres" id="18_cardboard"] -[ext_resource type="Resource" path="res://items/catalog/rods/pond_skipper_rod.tres" id="19_pond"] -[ext_resource type="Resource" path="res://items/catalog/rods/river_runner_rod.tres" id="20_river"] -[ext_resource type="Resource" path="res://items/catalog/rods/lake_lunker_rod.tres" id="21_lake"] -[ext_resource type="Resource" path="res://items/catalog/rods/salt_spray_rod.tres" id="22_salt"] -[ext_resource type="Resource" path="res://items/catalog/rods/whisker_stick_rod.tres" id="23_whisker"] -[ext_resource type="Resource" path="res://items/catalog/rods/reef_raker_rod.tres" id="24_reef"] -[ext_resource type="Resource" path="res://items/catalog/rods/moonbeam_rod.tres" id="25_moonbeam"] -[ext_resource type="Resource" path="res://items/catalog/rods/sun_chaser_rod.tres" id="26_sun"] -[ext_resource type="Resource" path="res://items/catalog/rods/rainmaker_rod.tres" id="27_rain"] -[ext_resource type="Resource" path="res://items/catalog/rods/fogcatcher_rod.tres" id="28_fog"] -[ext_resource type="Resource" path="res://items/catalog/rods/field_guide_rod.tres" id="29_guide"] -[ext_resource type="Resource" path="res://items/catalog/rods/small_fry_rod.tres" id="30_small"] -[ext_resource type="Resource" path="res://items/catalog/rods/heavy_hauler_rod.tres" id="31_heavy"] -[ext_resource type="Resource" path="res://items/catalog/rods/pocket_rocket_rod.tres" id="32_rocket"] -[ext_resource type="Resource" path="res://items/catalog/rods/lucky_twig_rod.tres" id="33_lucky"] -[ext_resource type="Resource" path="res://items/catalog/rods/showboat_rod.tres" id="34_showboat"] -[ext_resource type="Resource" path="res://items/catalog/rods/deep_blue_rod.tres" id="35_deep"] -[ext_resource type="Resource" path="res://items/catalog/rods/oddity_string_rod.tres" id="36_oddity"] -[ext_resource type="Resource" path="res://items/catalog/rods/aurora_rod.tres" id="37_aurora"] -[ext_resource type="Resource" path="res://items/catalog/magnet.tres" id="38_magnet"] [resource] script = ExtResource("1_script") -items = [ExtResource("2_rod"), ExtResource("3_coffee"), ExtResource("4_energy"), ExtResource("5_snack"), ExtResource("6_finder"), ExtResource("8_art_kit"), ExtResource("9_worms"), ExtResource("10_snails"), ExtResource("11_shrimp"), ExtResource("12_squid"), ExtResource("14_sardine"), ExtResource("13_anchovy"), ExtResource("15_roe"), ExtResource("16_standby"), ExtResource("17_batteries"), ExtResource("18_cardboard"), ExtResource("19_pond"), ExtResource("20_river"), ExtResource("21_lake"), ExtResource("22_salt"), ExtResource("23_whisker"), ExtResource("24_reef"), ExtResource("25_moonbeam"), ExtResource("26_sun"), ExtResource("27_rain"), ExtResource("28_fog"), ExtResource("29_guide"), ExtResource("30_small"), ExtResource("31_heavy"), ExtResource("32_rocket"), ExtResource("33_lucky"), ExtResource("34_showboat"), ExtResource("35_deep"), ExtResource("36_oddity"), ExtResource("37_aurora"), ExtResource("38_magnet")] +items = [ExtResource("2_rod"), ExtResource("3_coffee"), ExtResource("4_energy"), ExtResource("5_snack"), ExtResource("6_finder"), ExtResource("7_cooler"), ExtResource("8_art_kit"), ExtResource("9_worms"), ExtResource("10_snails"), ExtResource("11_shrimp"), ExtResource("12_squid"), ExtResource("14_sardine"), ExtResource("13_anchovy"), ExtResource("15_roe"), ExtResource("16_standby"), ExtResource("17_batteries")] diff --git a/items/catalog/luminous_roe.tres b/items/catalog/luminous_roe.tres index 677563e..7814f42 100644 --- a/items/catalog/luminous_roe.tres +++ b/items/catalog/luminous_roe.tres @@ -7,7 +7,7 @@ script = ExtResource("1") item_id = &"luminous_roe" display_name = "luminous roe" -description = "rare glowing roe with the strongest rarity and quality odds." +description = "rare glowing roe with the strongest rare catch odds." icon = ExtResource("2_icon") category = 2 bait_tags = Array[StringName]([&"bait_rarity_6"]) diff --git a/items/catalog/magnet.tres b/items/catalog/magnet.tres deleted file mode 100644 index eb2e25c..0000000 --- a/items/catalog/magnet.tres +++ /dev/null @@ -1,16 +0,0 @@ -[gd_resource type="Resource" script_class="ItemData" load_steps=2 format=3] - -[ext_resource type="Script" path="res://items/item_data.gd" id="1"] - -[resource] -script = ExtResource("1") -item_id = &"magnet" -display_name = "magnet" -description = "a heavy magnet ready for future magnet fishing." -active = true -category = 1 -stackable = false -max_stack = 1 -usable = false -equippable = false -hotbar_allowed = false diff --git a/items/catalog/rods/aurora_rod.tres b/items/catalog/rods/aurora_rod.tres deleted file mode 100644 index 303ce95..0000000 --- a/items/catalog/rods/aurora_rod.tres +++ /dev/null @@ -1,25 +0,0 @@ -[gd_resource type="Resource" script_class="FishingRodData" load_steps=2 format=3] - -[ext_resource type="Script" path="res://items/fishing_rod_data.gd" id="1_script"] - -[resource] -script = ExtResource("1_script") -item_id = &"aurora_rod" -display_name = "aurora rod" -description = "a shifting ribbon of color for anglers who have tried nearly everything else." -active = false -category = 0 -stackable = false -max_stack = 1 -usable = true -equippable = true -hotbar_allowed = true -shop_order = 21 -shop_price = 5000 -unlock_level = 15 -bite_time_multiplier = 1.35 -reel_speed_multiplier = 0.9 -rarity_weight_multipliers = Array[float]([0.85, 1.00, 1.15, 1.30, 1.45]) -quality_weight_multipliers = Array[float]([0.80, 0.95, 1.15, 1.30, 1.45]) -effect_summary = "modestly improves both species rarity and catch quality across all eligible fish." -tradeoff = "the slowest bite cycle in the set; intended as an expensive late-game sidegrade." diff --git a/items/catalog/rods/cardboard_classic_rod.tres b/items/catalog/rods/cardboard_classic_rod.tres deleted file mode 100644 index 97a304f..0000000 --- a/items/catalog/rods/cardboard_classic_rod.tres +++ /dev/null @@ -1,26 +0,0 @@ -[gd_resource type="Resource" script_class="FishingRodData" load_steps=2 format=3] - -[ext_resource type="Script" path="res://items/fishing_rod_data.gd" id="1_script"] - -[resource] -script = ExtResource("1_script") -item_id = &"cardboard_classic_rod" -display_name = "cardboard classic" -description = "a cheerful folded rod that gets bites quickly, if not impressively." -active = false -category = 0 -stackable = false -max_stack = 1 -usable = true -equippable = true -hotbar_allowed = true -shop_order = 2 -shop_price = 40 -unlock_level = 1 -bite_time_multiplier = 0.85 -reel_speed_multiplier = 0.95 -barrier_power_multiplier = 0.85 -rarity_weight_multipliers = Array[float]([1.20, 1.00, 0.85, 0.70, 0.55]) -quality_weight_multipliers = Array[float]([1.20, 1.05, 0.85, 0.70, 0.55]) -effect_summary = "shorter bite waits and a low-cost early sidegrade." -tradeoff = "leans toward common, lower-quality fish and has weaker handling." diff --git a/items/catalog/rods/deep_blue_rod.tres b/items/catalog/rods/deep_blue_rod.tres deleted file mode 100644 index 2d9b03f..0000000 --- a/items/catalog/rods/deep_blue_rod.tres +++ /dev/null @@ -1,27 +0,0 @@ -[gd_resource type="Resource" script_class="FishingRodData" load_steps=2 format=3] - -[ext_resource type="Script" path="res://items/fishing_rod_data.gd" id="1_script"] - -[resource] -script = ExtResource("1_script") -item_id = &"deep_blue_rod" -display_name = "deep blue" -description = "a heavy navy rod for enormous shapes moving far offshore." -active = false -category = 0 -stackable = false -max_stack = 1 -usable = true -equippable = true -hotbar_allowed = true -shop_order = 19 -shop_price = 2500 -unlock_level = 12 -preferred_collection_groups = Array[StringName]([&"Coastal sharks", &"Large coastal predators", &"Oceanic billfish", &"Oceanic pelagic fish", &"Oceanic tuna", &"Open-ocean giants"]) -affinity_weight_multiplier = 1.75 -weight_roll_bias = 0.32 -bite_time_multiplier = 1.28 -reel_speed_multiplier = 0.82 -barrier_power_multiplier = 1.25 -effect_summary = "favors large ocean predator and pelagic collection groups and biases weight upward." -tradeoff = "very long bite waits and slower reeling." diff --git a/items/catalog/rods/field_guide_rod.tres b/items/catalog/rods/field_guide_rod.tres deleted file mode 100644 index 2b19f30..0000000 --- a/items/catalog/rods/field_guide_rod.tres +++ /dev/null @@ -1,23 +0,0 @@ -[gd_resource type="Resource" script_class="FishingRodData" load_steps=2 format=3] - -[ext_resource type="Script" path="res://items/fishing_rod_data.gd" id="1_script"] - -[resource] -script = ExtResource("1_script") -item_id = &"field_guide_rod" -display_name = "field guide rod" -description = "a note-covered rod that keeps tugging toward something new." -active = false -category = 0 -stackable = false -max_stack = 1 -usable = true -equippable = true -hotbar_allowed = true -shop_order = 13 -shop_price = 1350 -unlock_level = 8 -undiscovered_weight_multiplier = 1.9 -bite_time_multiplier = 1.15 -effect_summary = "substantially increases the relative weight of eligible undiscovered species." -tradeoff = "longer bite waits and no bonus after a species is discovered." diff --git a/items/catalog/rods/fogcatcher_rod.tres b/items/catalog/rods/fogcatcher_rod.tres deleted file mode 100644 index c0fdd25..0000000 --- a/items/catalog/rods/fogcatcher_rod.tres +++ /dev/null @@ -1,23 +0,0 @@ -[gd_resource type="Resource" script_class="FishingRodData" load_steps=2 format=3] - -[ext_resource type="Script" path="res://items/fishing_rod_data.gd" id="1_script"] - -[resource] -script = ExtResource("1_script") -item_id = &"fogcatcher_rod" -display_name = "fogcatcher" -description = "a hazy blue rod for fish that prefer not to be seen." -active = false -category = 0 -stackable = false -max_stack = 1 -usable = true -equippable = true -hotbar_allowed = true -shop_order = 12 -shop_price = 1100 -unlock_level = 7 -weather_affinity = 2 -affinity_weight_multiplier = 1.65 -effect_summary = "strongly favors eligible fog-active fish." -tradeoff = "its affinity provides no benefit outside foggy weather." diff --git a/items/catalog/rods/heavy_hauler_rod.tres b/items/catalog/rods/heavy_hauler_rod.tres deleted file mode 100644 index bc68c78..0000000 --- a/items/catalog/rods/heavy_hauler_rod.tres +++ /dev/null @@ -1,25 +0,0 @@ -[gd_resource type="Resource" script_class="FishingRodData" load_steps=2 format=3] - -[ext_resource type="Script" path="res://items/fishing_rod_data.gd" id="1_script"] - -[resource] -script = ExtResource("1_script") -item_id = &"heavy_hauler_rod" -display_name = "heavy hauler" -description = "a thick rod that would rather bring home one enormous fish." -active = false -category = 0 -stackable = false -max_stack = 1 -usable = true -equippable = true -hotbar_allowed = true -shop_order = 15 -shop_price = 1500 -unlock_level = 9 -weight_roll_bias = 0.28 -bite_time_multiplier = 1.18 -reel_speed_multiplier = 0.88 -barrier_power_multiplier = 1.2 -effect_summary = "biases fish weight upward and adds barrier power." -tradeoff = "longer bite waits and slower reeling." diff --git a/items/catalog/rods/lake_lunker_rod.tres b/items/catalog/rods/lake_lunker_rod.tres deleted file mode 100644 index 4d30f56..0000000 --- a/items/catalog/rods/lake_lunker_rod.tres +++ /dev/null @@ -1,25 +0,0 @@ -[gd_resource type="Resource" script_class="FishingRodData" load_steps=2 format=3] - -[ext_resource type="Script" path="res://items/fishing_rod_data.gd" id="1_script"] - -[resource] -script = ExtResource("1_script") -item_id = &"lake_lunker_rod" -display_name = "lake lunker" -description = "a broad, patient rod that favors hefty catches from open lakes." -active = false -category = 0 -stackable = false -max_stack = 1 -usable = true -equippable = true -hotbar_allowed = true -shop_order = 5 -shop_price = 400 -unlock_level = 4 -preferred_location_tags = Array[StringName]([&"lake"]) -affinity_weight_multiplier = 1.45 -weight_roll_bias = 0.12 -bite_time_multiplier = 1.05 -effect_summary = "favors eligible lake fish and gently biases weight rolls upward." -tradeoff = "slightly longer bite waits." diff --git a/items/catalog/rods/lucky_twig_rod.tres b/items/catalog/rods/lucky_twig_rod.tres deleted file mode 100644 index 8c26b19..0000000 --- a/items/catalog/rods/lucky_twig_rod.tres +++ /dev/null @@ -1,25 +0,0 @@ -[gd_resource type="Resource" script_class="FishingRodData" load_steps=2 format=3] - -[ext_resource type="Script" path="res://items/fishing_rod_data.gd" id="1_script"] - -[resource] -script = ExtResource("1_script") -item_id = &"lucky_twig_rod" -display_name = "lucky twig" -description = "an ordinary-looking branch that insists it is extremely lucky." -active = false -category = 0 -stackable = false -max_stack = 1 -usable = true -equippable = true -hotbar_allowed = true -shop_order = 17 -shop_price = 1800 -unlock_level = 10 -bite_time_multiplier = 1.2 -reel_speed_multiplier = 0.9 -barrier_power_multiplier = 0.85 -rarity_weight_multipliers = Array[float]([0.65, 1.00, 1.35, 1.65, 2.00]) -effect_summary = "strongly shifts species rarity toward rare, epic, and legendary fish." -tradeoff = "longer bite waits, slower reeling, and weaker barrier power." diff --git a/items/catalog/rods/moonbeam_rod.tres b/items/catalog/rods/moonbeam_rod.tres deleted file mode 100644 index df83634..0000000 --- a/items/catalog/rods/moonbeam_rod.tres +++ /dev/null @@ -1,25 +0,0 @@ -[gd_resource type="Resource" script_class="FishingRodData" load_steps=2 format=3] - -[ext_resource type="Script" path="res://items/fishing_rod_data.gd" id="1_script"] - -[resource] -script = ExtResource("1_script") -item_id = &"moonbeam_rod" -display_name = "moonbeam rod" -description = "a pale rod that wakes up when the island goes quiet." -active = false -category = 0 -stackable = false -max_stack = 1 -usable = true -equippable = true -hotbar_allowed = true -shop_order = 9 -shop_price = 950 -unlock_level = 6 -time_affinity = 2 -affinity_weight_multiplier = 1.5 -bite_time_multiplier = 1.08 -quality_weight_multipliers = Array[float]([0.95, 0.98, 1.00, 1.08, 1.25]) -effect_summary = "favors eligible night fish and gives shiny quality a modest lift." -tradeoff = "slightly longer bite waits." diff --git a/items/catalog/rods/oddity_string_rod.tres b/items/catalog/rods/oddity_string_rod.tres deleted file mode 100644 index 8c51739..0000000 --- a/items/catalog/rods/oddity_string_rod.tres +++ /dev/null @@ -1,25 +0,0 @@ -[gd_resource type="Resource" script_class="FishingRodData" load_steps=2 format=3] - -[ext_resource type="Script" path="res://items/fishing_rod_data.gd" id="1_script"] - -[resource] -script = ExtResource("1_script") -item_id = &"oddity_string_rod" -display_name = "oddity string" -description = "a crooked spool of string that attracts fish with questionable silhouettes." -active = false -category = 0 -stackable = false -max_stack = 1 -usable = true -equippable = true -hotbar_allowed = true -shop_order = 20 -shop_price = 2600 -unlock_level = 12 -preferred_collection_groups = Array[StringName]([&"Brackish oddities", &"Coastal oddities", &"Deep-sea oddities", &"Freshwater oddities", &"Reef oddities"]) -affinity_weight_multiplier = 1.8 -bite_time_multiplier = 1.18 -quality_weight_multipliers = Array[float]([1.10, 1.05, 0.95, 0.90, 0.90]) -effect_summary = "favors eligible fish from authored oddity collection groups." -tradeoff = "longer bite waits and a slight average-quality penalty." diff --git a/items/catalog/rods/pocket_rocket_rod.tres b/items/catalog/rods/pocket_rocket_rod.tres deleted file mode 100644 index b93d348..0000000 --- a/items/catalog/rods/pocket_rocket_rod.tres +++ /dev/null @@ -1,25 +0,0 @@ -[gd_resource type="Resource" script_class="FishingRodData" load_steps=2 format=3] - -[ext_resource type="Script" path="res://items/fishing_rod_data.gd" id="1_script"] - -[resource] -script = ExtResource("1_script") -item_id = &"pocket_rocket_rod" -display_name = "pocket rocket" -description = "a buzzing pocket-sized rod for anglers in a hurry." -active = false -category = 0 -stackable = false -max_stack = 1 -usable = true -equippable = true -hotbar_allowed = true -shop_order = 16 -shop_price = 1400 -unlock_level = 9 -bite_time_multiplier = 0.7 -reel_speed_multiplier = 1.25 -barrier_power_multiplier = 0.8 -rarity_weight_multipliers = Array[float]([1.15, 1.00, 0.85, 0.72, 0.60]) -effect_summary = "greatly shortens bite waits and reels faster." -tradeoff = "reduces higher-rarity odds and barrier power." diff --git a/items/catalog/rods/pond_skipper_rod.tres b/items/catalog/rods/pond_skipper_rod.tres deleted file mode 100644 index adb18e4..0000000 --- a/items/catalog/rods/pond_skipper_rod.tres +++ /dev/null @@ -1,24 +0,0 @@ -[gd_resource type="Resource" script_class="FishingRodData" load_steps=2 format=3] - -[ext_resource type="Script" path="res://items/fishing_rod_data.gd" id="1_script"] - -[resource] -script = ExtResource("1_script") -item_id = &"pond_skipper_rod" -display_name = "pond skipper" -description = "a springy little rod that feels at home beside quiet ponds." -active = false -category = 0 -stackable = false -max_stack = 1 -usable = true -equippable = true -hotbar_allowed = true -shop_order = 3 -shop_price = 150 -unlock_level = 2 -preferred_location_tags = Array[StringName]([&"starter_pond", &"pond"]) -affinity_weight_multiplier = 1.5 -bite_time_multiplier = 0.95 -effect_summary = "increases the relative selection weight of eligible pond fish." -tradeoff = "none; a focused sidegrade rather than a direct upgrade." diff --git a/items/catalog/rods/rainmaker_rod.tres b/items/catalog/rods/rainmaker_rod.tres deleted file mode 100644 index 3a407fd..0000000 --- a/items/catalog/rods/rainmaker_rod.tres +++ /dev/null @@ -1,23 +0,0 @@ -[gd_resource type="Resource" script_class="FishingRodData" load_steps=2 format=3] - -[ext_resource type="Script" path="res://items/fishing_rod_data.gd" id="1_script"] - -[resource] -script = ExtResource("1_script") -item_id = &"rainmaker_rod" -display_name = "rainmaker" -description = "a drip-shaped rod that becomes unusually lucky in the rain." -active = false -category = 0 -stackable = false -max_stack = 1 -usable = true -equippable = true -hotbar_allowed = true -shop_order = 11 -shop_price = 1100 -unlock_level = 7 -weather_affinity = 1 -affinity_weight_multiplier = 1.65 -effect_summary = "strongly favors eligible rain-active fish." -tradeoff = "its affinity provides no benefit outside rainy weather." diff --git a/items/catalog/rods/reef_raker_rod.tres b/items/catalog/rods/reef_raker_rod.tres deleted file mode 100644 index 2b3ff91..0000000 --- a/items/catalog/rods/reef_raker_rod.tres +++ /dev/null @@ -1,24 +0,0 @@ -[gd_resource type="Resource" script_class="FishingRodData" load_steps=2 format=3] - -[ext_resource type="Script" path="res://items/fishing_rod_data.gd" id="1_script"] - -[resource] -script = ExtResource("1_script") -item_id = &"reef_raker_rod" -display_name = "reef raker" -description = "a bright hooked rod tuned for the crowded life around reefs." -active = false -category = 0 -stackable = false -max_stack = 1 -usable = true -equippable = true -hotbar_allowed = true -shop_order = 8 -shop_price = 900 -unlock_level = 6 -preferred_collection_groups = Array[StringName]([&"Cold reef fish", &"Reef ambush fish", &"Reef eels", &"Reef flatfish", &"Reef grazers", &"Reef oddities", &"Reef ornamentals", &"Reef predators", &"Reef schooling fish", &"Reef snapper", &"Reef wrasses", &"Temperate reef fish", &"Temperate reef predators"]) -affinity_weight_multiplier = 1.45 -quality_weight_multipliers = Array[float]([0.95, 1.00, 1.12, 1.05, 1.00]) -effect_summary = "favors eligible reef collection groups and modestly favors impressive quality." -tradeoff = "no advantage away from reef-associated fish." diff --git a/items/catalog/rods/river_runner_rod.tres b/items/catalog/rods/river_runner_rod.tres deleted file mode 100644 index 7f0a464..0000000 --- a/items/catalog/rods/river_runner_rod.tres +++ /dev/null @@ -1,24 +0,0 @@ -[gd_resource type="Resource" script_class="FishingRodData" load_steps=2 format=3] - -[ext_resource type="Script" path="res://items/fishing_rod_data.gd" id="1_script"] - -[resource] -script = ExtResource("1_script") -item_id = &"river_runner_rod" -display_name = "river runner" -description = "a lively rod made to keep pace with moving river water." -active = false -category = 0 -stackable = false -max_stack = 1 -usable = true -equippable = true -hotbar_allowed = true -shop_order = 4 -shop_price = 250 -unlock_level = 3 -preferred_location_tags = Array[StringName]([&"river"]) -affinity_weight_multiplier = 1.5 -reel_speed_multiplier = 1.05 -effect_summary = "increases the relative selection weight of eligible river fish." -tradeoff = "none; a focused sidegrade rather than a direct upgrade." diff --git a/items/catalog/rods/salt_spray_rod.tres b/items/catalog/rods/salt_spray_rod.tres deleted file mode 100644 index f3e6102..0000000 --- a/items/catalog/rods/salt_spray_rod.tres +++ /dev/null @@ -1,24 +0,0 @@ -[gd_resource type="Resource" script_class="FishingRodData" load_steps=2 format=3] - -[ext_resource type="Script" path="res://items/fishing_rod_data.gd" id="1_script"] - -[resource] -script = ExtResource("1_script") -item_id = &"salt_spray_rod" -display_name = "salt spray" -description = "a sea-green rod that seems happiest with salt on the line." -active = false -category = 0 -stackable = false -max_stack = 1 -usable = true -equippable = true -hotbar_allowed = true -shop_order = 6 -shop_price = 600 -unlock_level = 5 -preferred_location_tags = Array[StringName]([&"ocean"]) -affinity_weight_multiplier = 1.5 -rarity_weight_multipliers = Array[float]([0.95, 1.00, 1.05, 1.05, 1.05]) -effect_summary = "increases the relative selection weight of eligible ocean fish." -tradeoff = "none; a focused sidegrade rather than a direct upgrade." diff --git a/items/catalog/rods/showboat_rod.tres b/items/catalog/rods/showboat_rod.tres deleted file mode 100644 index 99bef41..0000000 --- a/items/catalog/rods/showboat_rod.tres +++ /dev/null @@ -1,24 +0,0 @@ -[gd_resource type="Resource" script_class="FishingRodData" load_steps=2 format=3] - -[ext_resource type="Script" path="res://items/fishing_rod_data.gd" id="1_script"] - -[resource] -script = ExtResource("1_script") -item_id = &"showboat_rod" -display_name = "showboat" -description = "a theatrical rod that refuses to land an unimpressive fish quietly." -active = false -category = 0 -stackable = false -max_stack = 1 -usable = true -equippable = true -hotbar_allowed = true -shop_order = 18 -shop_price = 2000 -unlock_level = 11 -bite_time_multiplier = 1.18 -reel_speed_multiplier = 0.9 -quality_weight_multipliers = Array[float]([0.50, 0.75, 1.35, 1.70, 2.10]) -effect_summary = "strongly shifts catch quality toward impressive, exceptional, and shiny." -tradeoff = "longer bite waits and slower reeling; species rarity is unchanged." diff --git a/items/catalog/rods/small_fry_rod.tres b/items/catalog/rods/small_fry_rod.tres deleted file mode 100644 index a1631f0..0000000 --- a/items/catalog/rods/small_fry_rod.tres +++ /dev/null @@ -1,23 +0,0 @@ -[gd_resource type="Resource" script_class="FishingRodData" load_steps=2 format=3] - -[ext_resource type="Script" path="res://items/fishing_rod_data.gd" id="1_script"] - -[resource] -script = ExtResource("1_script") -item_id = &"small_fry_rod" -display_name = "small fry" -description = "a tiny rod for anglers who value character over size." -active = false -category = 0 -stackable = false -max_stack = 1 -usable = true -equippable = true -hotbar_allowed = true -shop_order = 14 -shop_price = 1200 -unlock_level = 8 -weight_roll_bias = -0.25 -quality_weight_multipliers = Array[float]([0.75, 0.90, 1.25, 1.40, 1.55]) -effect_summary = "biases fish weight downward while improving high-quality outcomes." -tradeoff = "produces smaller catches on average." diff --git a/items/catalog/rods/sun_chaser_rod.tres b/items/catalog/rods/sun_chaser_rod.tres deleted file mode 100644 index 22c0803..0000000 --- a/items/catalog/rods/sun_chaser_rod.tres +++ /dev/null @@ -1,24 +0,0 @@ -[gd_resource type="Resource" script_class="FishingRodData" load_steps=2 format=3] - -[ext_resource type="Script" path="res://items/fishing_rod_data.gd" id="1_script"] - -[resource] -script = ExtResource("1_script") -item_id = &"sun_chaser_rod" -display_name = "sun chaser" -description = "a warm cream rod that likes bright mornings and busy afternoons." -active = false -category = 0 -stackable = false -max_stack = 1 -usable = true -equippable = true -hotbar_allowed = true -shop_order = 10 -shop_price = 950 -unlock_level = 6 -time_affinity = 1 -affinity_weight_multiplier = 1.4 -rarity_weight_multipliers = Array[float]([0.95, 1.00, 1.12, 1.08, 1.00]) -effect_summary = "favors eligible daytime fish and modestly improves rare-species odds." -tradeoff = "none; a focused sidegrade rather than a direct upgrade." diff --git a/items/catalog/rods/whisker_stick_rod.tres b/items/catalog/rods/whisker_stick_rod.tres deleted file mode 100644 index a49ff63..0000000 --- a/items/catalog/rods/whisker_stick_rod.tres +++ /dev/null @@ -1,24 +0,0 @@ -[gd_resource type="Resource" script_class="FishingRodData" load_steps=2 format=3] - -[ext_resource type="Script" path="res://items/fishing_rod_data.gd" id="1_script"] - -[resource] -script = ExtResource("1_script") -item_id = &"whisker_stick_rod" -display_name = "whisker stick" -description = "a bendy rod with a suspicious talent for finding catfish." -active = false -category = 0 -stackable = false -max_stack = 1 -usable = true -equippable = true -hotbar_allowed = true -shop_order = 7 -shop_price = 750 -unlock_level = 5 -preferred_collection_groups = Array[StringName]([&"Freshwater catfish"]) -affinity_weight_multiplier = 1.7 -bite_time_multiplier = 1.08 -effect_summary = "strongly favors eligible fish in the Freshwater catfish collection group." -tradeoff = "slightly longer bite waits while it searches for whiskers." diff --git a/items/catalog/shrimp.tres b/items/catalog/shrimp.tres index 6864265..e308163 100644 --- a/items/catalog/shrimp.tres +++ b/items/catalog/shrimp.tres @@ -7,7 +7,7 @@ script = ExtResource("1") item_id = &"shrimp" display_name = "shrimp" -description = "lively bait that noticeably improves rarity and quality odds." +description = "lively bait that noticeably improves rare catch chances." icon = ExtResource("2_icon") category = 2 bait_tags = Array[StringName]([&"bait_rarity_2"]) diff --git a/items/catalog/snails.tres b/items/catalog/snails.tres index adddefb..12d4497 100644 --- a/items/catalog/snails.tres +++ b/items/catalog/snails.tres @@ -7,7 +7,7 @@ script = ExtResource("1") item_id = &"snails" display_name = "snails" -description = "slow-moving bait with better rarity and quality odds." +description = "slow-moving bait with a better chance for rarer catches." icon = ExtResource("2_icon") category = 2 bait_tags = Array[StringName]([&"bait_rarity_1"]) diff --git a/items/catalog/squid_chunks.tres b/items/catalog/squid_chunks.tres index bf0da93..dfe245f 100644 --- a/items/catalog/squid_chunks.tres +++ b/items/catalog/squid_chunks.tres @@ -7,7 +7,7 @@ script = ExtResource("1") item_id = &"squid_chunks" display_name = "squid chunks" -description = "rich cut bait that strongly favors rarer, higher-quality catches." +description = "rich cut bait that strongly favors rarer catches." icon = ExtResource("2_icon") category = 2 bait_tags = Array[StringName]([&"bait_rarity_3"]) diff --git a/items/catalog/whole_anchovy.tres b/items/catalog/whole_anchovy.tres index b52018b..cbc60b6 100644 --- a/items/catalog/whole_anchovy.tres +++ b/items/catalog/whole_anchovy.tres @@ -7,7 +7,7 @@ script = ExtResource("1") item_id = &"whole_anchovy" display_name = "sardine" -description = "valuable oily schooling bait tuned for exceptional rarity and quality odds." +description = "valuable oily schooling bait tuned for exceptional catches." icon = ExtResource("2_icon") category = 2 bait_tags = Array[StringName]([&"bait_rarity_5"]) diff --git a/items/catalog/whole_sardine.tres b/items/catalog/whole_sardine.tres index 78a0e0e..c5d0163 100644 --- a/items/catalog/whole_sardine.tres +++ b/items/catalog/whole_sardine.tres @@ -7,7 +7,7 @@ script = ExtResource("1") item_id = &"whole_sardine" display_name = "minnow" -description = "small live bait with strong rarity and quality potential." +description = "small live bait with high rare catch potential." icon = ExtResource("2_icon") category = 2 bait_tags = Array[StringName]([&"bait_rarity_4"]) diff --git a/items/catalog/worms.tres b/items/catalog/worms.tres index 71bd744..f01258e 100644 --- a/items/catalog/worms.tres +++ b/items/catalog/worms.tres @@ -7,7 +7,7 @@ script = ExtResource("1") item_id = &"worms" display_name = "worms" -description = "basic bait that opens a small chance for rarer, higher-quality catches." +description = "basic bait that opens a small chance for rarer catches." icon = ExtResource("2_icon") category = 2 bait_tags = Array[StringName]([&"worm", &"bait_rarity_0"]) diff --git a/items/fishing_rod_data.gd b/items/fishing_rod_data.gd deleted file mode 100644 index d1c8e7c..0000000 --- a/items/fishing_rod_data.gd +++ /dev/null @@ -1,151 +0,0 @@ -class_name FishingRodData -extends ItemData - -const FishDataType = preload("res://fish/fish_data.gd") -const FishingContextType = preload("res://fishing/fishing_context.gd") - -enum TimeAffinity { - ANY, - DAY, - NIGHT, -} - -enum WeatherAffinity { - ANY, - RAIN, - FOG, -} - -const MULTIPLIER_COUNT: int = 5 - -@export_category("Rod Shop") -@export var shop_enabled: bool = true -@export_range(1, 999, 1) var shop_order: int = 1 -@export_range(0, 1000000, 1) var shop_price: int = 0 -@export_range(1, 100000, 1) var unlock_level: int = 1 - -@export_category("Rod Presentation") -## Optional authored visual. A null scene deliberately uses the current -## temporary rod mesh so new rod data never requires a model to function. -@export var rod_model_scene: PackedScene -@export var rod_model_transform: Transform3D = Transform3D.IDENTITY -@export var rod_tip_position := Vector3(0.0, 1.1, 0.0) - -@export_category("Rod Affinity") -@export var preferred_location_tags: Array[StringName] = [] -@export var preferred_collection_groups: Array[StringName] = [] -@export var time_affinity: TimeAffinity = TimeAffinity.ANY -@export var weather_affinity: WeatherAffinity = WeatherAffinity.ANY -@export_range(0.0, 10.0, 0.01) var affinity_weight_multiplier: float = 1.0 -@export_range(0.0, 10.0, 0.01) var undiscovered_weight_multiplier: float = 1.0 - -@export_category("Rod Catch Modifiers") -@export_range(-0.5, 0.5, 0.01) var weight_roll_bias: float = 0.0 -@export_range(0.05, 5.0, 0.01) var bite_time_multiplier: float = 1.0 -@export_range(0.05, 5.0, 0.01) var reel_speed_multiplier: float = 1.0 -@export_range(0.05, 5.0, 0.01) var barrier_power_multiplier: float = 1.0 -@export var rarity_weight_multipliers: Array[float] = [ - 1.0, 1.0, 1.0, 1.0, 1.0, -] -@export var quality_weight_multipliers: Array[float] = [ - 1.0, 1.0, 1.0, 1.0, 1.0, -] -@export_multiline var effect_summary: String -@export_multiline var tradeoff: String - - -func is_valid() -> bool: - return ( - super.is_valid() - and category == Category.ROD - and shop_order >= 1 - and shop_price >= 0 - and unlock_level >= 1 - and rarity_weight_multipliers.size() == MULTIPLIER_COUNT - and quality_weight_multipliers.size() == MULTIPLIER_COUNT - and _multipliers_are_non_negative(rarity_weight_multipliers) - and _multipliers_are_non_negative(quality_weight_multipliers) - and affinity_weight_multiplier >= 0.0 - and undiscovered_weight_multiplier >= 0.0 - and bite_time_multiplier > 0.0 - and reel_speed_multiplier > 0.0 - and barrier_power_multiplier > 0.0 - ) - - -func is_shop_available() -> bool: - return is_available() and shop_enabled and icon != null - - -func get_affinity_multiplier( - fish: FishDataType, - context: FishingContextType, -) -> float: - if fish == null or context == null or not _has_authored_affinity(): - return 1.0 - if ( - not preferred_location_tags.is_empty() - and not _has_any_match( - preferred_location_tags, - context.location_tags, - ) - ): - return 1.0 - if ( - not preferred_collection_groups.is_empty() - and fish.collection_group not in preferred_collection_groups - ): - return 1.0 - match time_affinity: - TimeAffinity.DAY: - if context.is_night or context.is_day_night_transition: - return 1.0 - TimeAffinity.NIGHT: - if not context.is_night or context.is_day_night_transition: - return 1.0 - match weather_affinity: - WeatherAffinity.RAIN: - if not context.is_raining: - return 1.0 - WeatherAffinity.FOG: - if not context.is_foggy: - return 1.0 - return maxf(affinity_weight_multiplier, 0.0) - - -func get_rarity_multiplier(rarity: int) -> float: - if rarity < 0 or rarity >= rarity_weight_multipliers.size(): - return 1.0 - return maxf(rarity_weight_multipliers[rarity], 0.0) - - -func get_quality_multiplier(quality: int) -> float: - if quality < 0 or quality >= quality_weight_multipliers.size(): - return 1.0 - return maxf(quality_weight_multipliers[quality], 0.0) - - -func _has_authored_affinity() -> bool: - return ( - not preferred_location_tags.is_empty() - or not preferred_collection_groups.is_empty() - or time_affinity != TimeAffinity.ANY - or weather_affinity != WeatherAffinity.ANY - ) - - -func _has_any_match( - expected: Array[StringName], - actual: Array[StringName], -) -> bool: - for value: StringName in expected: - if value in actual: - return true - return false - - -func _multipliers_are_non_negative(values: Array[float]) -> bool: - for value: float in values: - if not is_finite(value) or value < 0.0: - return false - return true diff --git a/items/fishing_rod_data.gd.uid b/items/fishing_rod_data.gd.uid deleted file mode 100644 index 324cfd7..0000000 --- a/items/fishing_rod_data.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://car3ne3q6dhln diff --git a/items/icons/placeholder/cooler_expansion.svg b/items/icons/placeholder/cooler_expansion.svg new file mode 100644 index 0000000..105bff7 --- /dev/null +++ b/items/icons/placeholder/cooler_expansion.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/items/icons/placeholder/cooler_expansion.svg.import b/items/icons/placeholder/cooler_expansion.svg.import new file mode 100644 index 0000000..fbcc85c --- /dev/null +++ b/items/icons/placeholder/cooler_expansion.svg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d115jiqughf40" +path="res://.godot/imported/cooler_expansion.svg-a3d63bc21ba230007f1039372b518c8f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://items/icons/placeholder/cooler_expansion.svg" +dest_files=["res://.godot/imported/cooler_expansion.svg-a3d63bc21ba230007f1039372b518c8f.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 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/items/item_catalog.gd b/items/item_catalog.gd index 511604b..b4245a0 100644 --- a/items/item_catalog.gd +++ b/items/item_catalog.gd @@ -28,16 +28,3 @@ func get_valid_items() -> Array[ItemDataType]: seen[item.item_id] = true result.append(item) return result - - -func get_available_item_by_id(item_id: StringName) -> ItemDataType: - var item: ItemDataType = get_item_by_id(item_id) - return item if item != null and item.is_available() else null - - -func get_available_items() -> Array[ItemDataType]: - var result: Array[ItemDataType] = [] - for item: ItemDataType in get_valid_items(): - if item.active: - result.append(item) - return result diff --git a/items/item_data.gd b/items/item_data.gd index 72ac0d6..a34cec0 100644 --- a/items/item_data.gd +++ b/items/item_data.gd @@ -15,11 +15,6 @@ enum Category { @export var item_id: StringName @export var display_name: String @export_multiline var description: String -@export_category("Developer Catalog") -## Inactive items remain resolvable for existing saves, but cannot be newly -## acquired, equipped, used, or presented in shops. -@export var active: bool = true -@export_category("Item") @export var category: Category = Category.UTILITY @export var bait_tags: Array[StringName] = [] @export var lure_effects: Array[StringName] = [] @@ -40,10 +35,6 @@ func is_valid() -> bool: ) -func is_available() -> bool: - return active and is_valid() - - func get_category_name() -> String: return Category.keys()[category].to_lower() diff --git a/jobs/player_job_service.gd b/jobs/player_job_service.gd index 7f3be92..6f79e8f 100644 --- a/jobs/player_job_service.gd +++ b/jobs/player_job_service.gd @@ -150,10 +150,6 @@ func get_plan_id() -> String: return _active_plan_id -func has_active_board() -> bool: - return validate_board(_active_board) - - func get_time_until_refresh_text() -> String: if _active_plan_id.is_empty() or _world_time == null: return "daily jobs unavailable" @@ -454,7 +450,7 @@ func _generate_host_board(cycle: int) -> void: var candidates: Array[FishDataType] = [] if _catalog != null: for fish: FishDataType in _catalog.candidates: - if fish != null and fish.is_selectable(): + if fish != null: candidates.append(fish) var schedule_anchor_index: int = _current_weather_segment() var allow_weather_jobs: bool = ( @@ -727,7 +723,7 @@ func _matches_canonical_board(board: Dictionary) -> bool: var candidates: Array[FishDataType] = [] if _catalog != null: for fish: FishDataType in _catalog.candidates: - if fish != null and fish.is_selectable(): + if fish != null: candidates.append(fish) var anchor_index: int = int(board.get("schedule_anchor_index", -1)) var allow_weather_jobs: bool = ( diff --git a/main/main.gd b/main/main.gd index 4e1f28b..51929a0 100644 --- a/main/main.gd +++ b/main/main.gd @@ -24,7 +24,6 @@ const PauseMenuType = preload("res://ui/pause_menu.gd") const ItemCatalogType = preload("res://items/item_catalog.gd") const ArtShopStockType = preload("res://economy/art_shop_stock.gd") const ItemDataType = preload("res://items/item_data.gd") -const FishingRodDataType = preload("res://items/fishing_rod_data.gd") const FishingShopType = preload("res://ui/fishing_shop.gd") const FishingShopInteractionType = preload( "res://world/fishing_shop_interaction.gd" @@ -335,7 +334,6 @@ func _start_dedicated_server() -> void: if not _network_session.set_host_open(true): _fail_dedicated_server("Could not open the dedicated server.") return - _player_jobs.begin_progression_session() if config.public_listing and not _discovery.set_discoverable(true): _network_session.disconnect_session("Discovery setup failed.") _fail_dedicated_server(_discovery.get_host_status_message()) @@ -562,7 +560,7 @@ func _initialize_application(dedicated: bool) -> void: _network_player_list.set_surface_drawing_service( _network_surface_drawing ) - _network_chat.setup(_network_session, _world_time, _world_weather) + _network_chat.setup(_network_session) _network_fishing.setup( _network_session, _player_spawn_service, @@ -1557,13 +1555,8 @@ func _on_pause_join_game_requested(endpoint: String) -> void: _join_requested_from_title = false _pending_join_endpoint = endpoint _game_ui.get_pause_menu().close_for_title_transition() - var preserved_public_join: bool = ( - _discovery.preserve_public_join_for_session_switch() - ) _network_session.disconnect_session("Connecting to another game.") if not _network_session.join_direct(endpoint): - if preserved_public_join: - _discovery.cancel_pending_public_join() _handle_failed_session_switch( "Could not begin the direct connection." ) @@ -1648,16 +1641,14 @@ func _handle_failed_session_switch(message: String) -> void: _show_title_music(true) -func _on_network_server_lost(message: String) -> void: +func _on_network_server_lost() -> void: if not _gameplay_started: return - _join_requested_from_title = false - _join_requested_from_pause = false - _pending_join_endpoint = "" _set_gameplay_active(false) var title_screen: TitleScreenType = _game_ui.get_title_screen() - title_screen.reopen_to_menu() - title_screen.report_network_error(message) + title_screen.reopen() + title_screen.open_join_game_page(_pending_join_endpoint) + title_screen.report_network_error("The server connection was lost.") _show_title_music(true) @@ -1765,20 +1756,15 @@ func _on_active_hotbar_item_changed( var item = item_catalog.get_item_by_id(item_id) var active_is_rod: bool = ( item != null - and item.is_available() and item.category == ItemDataType.Category.ROD and _player.bag.owns_item(item_id) ) var active_is_art_kit: bool = ( item_id == ArtShopStockType.ART_KIT_ITEM_ID and item != null - and item.is_available() and _player.bag.owns_item(item_id) ) - _player.set_active_fishing_rod( - item as FishingRodDataType if active_is_rod else null, - true, - ) + _player.set_active_item_is_rod(active_is_rod, true) _player.set_active_art_kit( item.icon if item != null else null, active_is_art_kit, diff --git a/network/discovery_client.gd b/network/discovery_client.gd index bf15bbf..476cff4 100644 --- a/network/discovery_client.gd +++ b/network/discovery_client.gd @@ -85,7 +85,6 @@ var _join_request_in_flight: bool = false var _pending_join_endpoint: String = "" var _pending_join_token: String = "" var _pending_join_room_id: String = "" -var _preserve_pending_join_on_inactive: bool = false var _upnp_thread: Thread var _upnp_mapping_in_progress: bool = false var _upnp_operation_is_renewal: bool = false @@ -292,17 +291,6 @@ func is_public_join_preparing() -> bool: return _join_request_in_flight -func preserve_public_join_for_session_switch() -> bool: - _preserve_pending_join_on_inactive = not _pending_join_token.is_empty() - return _preserve_pending_join_on_inactive - - -func cancel_pending_public_join() -> void: - _preserve_pending_join_on_inactive = false - _set_public_join_state(PublicJoinState.IDLE) - _clear_pending_join() - - func prepare_public_join(room: Dictionary) -> bool: if _join_request_in_flight: return false @@ -925,30 +913,18 @@ func _discovery_version_mismatch_message(required_version: String) -> String: func _on_session_state_changed(state: NetworkSession.State) -> void: if state == NetworkSession.State.CONNECTING and not _pending_join_token.is_empty(): - _preserve_pending_join_on_inactive = false _set_public_join_state(PublicJoinState.CONNECTING) _join_probe_timer.start() call_deferred("_send_pending_join_probe") elif state in [ NetworkSession.State.JOINED_CLIENT, NetworkSession.State.SERVER_LOST, + NetworkSession.State.INACTIVE, ]: - _preserve_pending_join_on_inactive = false _set_public_join_state(PublicJoinState.IDLE) _join_probe_timer.stop() _clear_pending_join() - elif state == NetworkSession.State.INACTIVE: - if ( - _preserve_pending_join_on_inactive - and not _pending_join_token.is_empty() - ): - _preserve_pending_join_on_inactive = false - else: - _set_public_join_state(PublicJoinState.IDLE) - _join_probe_timer.stop() - _clear_pending_join() elif state == NetworkSession.State.CONNECTION_FAILED: - _preserve_pending_join_on_inactive = false _set_public_join_state(PublicJoinState.ERROR) _join_probe_timer.stop() _clear_pending_join() diff --git a/network/network_chat_service.gd b/network/network_chat_service.gd index 50c47d3..368c529 100644 --- a/network/network_chat_service.gd +++ b/network/network_chat_service.gd @@ -5,7 +5,6 @@ const BURST_COUNT: int = 3 const WINDOW_COUNT: int = 5 const WINDOW_SECONDS: float = 10.0 const CALL_COOLDOWN_MILLISECONDS: int = 180 -const WORLD_COMMAND_COOLDOWN_MILLISECONDS: int = 500 const CALL_PITCH_VARIANTS: Array[float] = [ 0.96, 1.03, @@ -23,7 +22,6 @@ signal message_received(message: Dictionary) signal local_message_confirmed(message: Dictionary) signal send_rejected(message: String) signal history_replaced(messages: Array[Dictionary]) -signal world_command_finished(success: bool, message: String) signal character_call_received( peer_id: int, call_id: String, @@ -37,22 +35,13 @@ var _request_ledgers: Dictionary[int, Dictionary] = {} var _rate_times: Dictionary[int, Array] = {} var _last_call_msec: Dictionary[int, int] = {} var _call_variant_indices: Dictionary[int, int] = {} -var _last_world_command_msec: Dictionary[int, int] = {} var _sequence: int = 0 var _peer_names: Dictionary[int, String] = {} var _relationships: PlayerRelationshipStore -var _world_time: WorldTimeService -var _world_weather: WorldWeatherService -func setup( - session: NetworkSession, - world_time: WorldTimeService, - world_weather: WorldWeatherService, -) -> void: +func setup(session: NetworkSession) -> void: _session = session - _world_time = world_time - _world_weather = world_weather _session.peer_authenticated.connect(_on_peer_authenticated) _session.peer_removed.connect(_on_peer_removed) _session.state_changed.connect(_on_session_state_changed) @@ -253,188 +242,6 @@ func broadcast_system_message(body: String) -> bool: return true -func request_world_time_change(phase_name: String) -> bool: - var normalized: String = phase_name.strip_edges().to_lower() - if not _valid_time_phase(normalized) or _session == null: - return false - if _session.is_host(): - return _apply_world_time_change(normalized) - if ( - not _session.is_joined_client() - or not _session.is_local_operator() - or not _session.supports_server_capability( - NetworkProtocol.WORLD_TIME_CAPABILITY - ) - ): - return false - submit_world_time_command.rpc_id(1, normalized) - return true - - -func request_world_weather_change(weather_name: String) -> bool: - var normalized: String = _normalized_weather_name(weather_name) - if normalized.is_empty() or _session == null: - return false - if _session.is_host(): - return _apply_world_weather_change(normalized) - if ( - not _session.is_joined_client() - or not _session.is_local_operator() - or not _session.supports_server_capability( - NetworkProtocol.WORLD_WEATHER_CAPABILITY - ) - ): - return false - submit_world_weather_command.rpc_id(1, normalized) - return true - - -@rpc("any_peer", "call_remote", "reliable", NetworkChatProtocol.RELIABLE_CHANNEL) -func submit_world_time_command(phase_name: String) -> void: - var sender_id: int = multiplayer.get_remote_sender_id() - if not _valid_world_command_sender(sender_id): - _send_world_command_result( - sender_id, false, "Only the host or an operator can change world time." - ) - return - if not _consume_world_command_rate(sender_id): - _send_world_command_result(sender_id, false, "Slow down.") - return - var success: bool = _apply_world_time_change( - phase_name.strip_edges().to_lower() - ) - _send_world_command_result( - sender_id, - success, - "" if success else "World time could not be changed.", - ) - - -@rpc("any_peer", "call_remote", "reliable", NetworkChatProtocol.RELIABLE_CHANNEL) -func submit_world_weather_command(weather_name: String) -> void: - var sender_id: int = multiplayer.get_remote_sender_id() - if not _valid_world_command_sender(sender_id): - _send_world_command_result( - sender_id, - false, - "Only the host or an operator can change world weather.", - ) - return - if not _consume_world_command_rate(sender_id): - _send_world_command_result(sender_id, false, "Slow down.") - return - var success: bool = _apply_world_weather_change( - _normalized_weather_name(weather_name) - ) - _send_world_command_result( - sender_id, - success, - "" if success else "World weather could not be changed.", - ) - - -@rpc("authority", "call_remote", "reliable", NetworkChatProtocol.RELIABLE_CHANNEL) -func receive_world_command_result(success: bool, message: String) -> void: - if _session == null or not _session.is_joined_client(): - return - world_command_finished.emit(success, message.left(120)) - - -func _valid_world_command_sender(peer_id: int) -> bool: - return ( - _session != null - and _session.is_host() - and peer_id > 1 - and _session.is_authenticated_peer(peer_id) - and _session.is_peer_operator(peer_id) - ) - - -func _apply_world_time_change(phase_name: String) -> bool: - if _world_time == null or not _valid_time_phase(phase_name): - return false - var target_hour: float = _time_phase_hour(phase_name) - if not _world_time.set_authoritative_time(target_hour): - return false - broadcast_system_message( - "World time set to %s (%s)." - % [phase_name, _world_time.get_clock_text()] - ) - return true - - -func _apply_world_weather_change(weather_name: String) -> bool: - if _world_weather == null: - return false - var normalized: String = _normalized_weather_name(weather_name) - if normalized.is_empty(): - return false - var target_weather: WorldWeatherService.Weather = ( - _weather_for_name(normalized) - ) - if not _world_weather.set_authoritative_weather(target_weather): - return false - broadcast_system_message("World weather set to %s." % normalized) - return true - - -func _send_world_command_result( - peer_id: int, - success: bool, - message: String, -) -> void: - if peer_id > 1 and _session.is_authenticated_peer(peer_id): - receive_world_command_result.rpc_id(peer_id, success, message.left(120)) - - -func _consume_world_command_rate(peer_id: int) -> bool: - var now_msec: int = Time.get_ticks_msec() - var last_msec: int = _last_world_command_msec.get( - peer_id, now_msec - WORLD_COMMAND_COOLDOWN_MILLISECONDS - ) - if now_msec - last_msec < WORLD_COMMAND_COOLDOWN_MILLISECONDS: - return false - _last_world_command_msec[peer_id] = now_msec - return true - - -static func _valid_time_phase(phase_name: String) -> bool: - return phase_name in ["dawn", "day", "dusk", "night"] - - -static func _time_phase_hour(phase_name: String) -> float: - match phase_name: - "dawn": - return WorldTimeService.DAWN_START_HOUR - "day": - return WorldTimeService.DAWN_END_HOUR - "dusk": - return WorldTimeService.DUSK_START_HOUR - "night": - return WorldTimeService.DUSK_END_HOUR - return -1.0 - - -static func _normalized_weather_name(weather_name: String) -> String: - var normalized: String = weather_name.strip_edges().to_lower() - return "clear" if normalized == "sunny" else normalized if normalized in [ - "clear", "cloudy", "rainy", "foggy" - ] else "" - - -static func _weather_for_name( - weather_name: String, -) -> WorldWeatherService.Weather: - match weather_name: - "cloudy": - return WorldWeatherService.Weather.CLOUDY - "rainy": - return WorldWeatherService.Weather.RAINY - "foggy": - return WorldWeatherService.Weather.FOGGY - return WorldWeatherService.Weather.SUNNY - - func get_history() -> Array[Dictionary]: var result: Array[Dictionary] = [] for message: Dictionary in _history: @@ -615,7 +422,6 @@ func _on_peer_removed(peer_id: int) -> void: _rate_times.erase(peer_id) _last_call_msec.erase(peer_id) _call_variant_indices.erase(peer_id) - _last_world_command_msec.erase(peer_id) if not _session.is_host(): return var display_name: String = _peer_names.get(peer_id, "Player") @@ -675,7 +481,6 @@ func _on_session_state_changed(state: NetworkSession.State) -> void: _rate_times.clear() _last_call_msec.clear() _call_variant_indices.clear() - _last_world_command_msec.clear() _peer_names.clear() _sequence = 0 history_replaced.emit([]) diff --git a/network/network_fishing_attempt.gd b/network/network_fishing_attempt.gd index 84511db..3a1b1de 100644 --- a/network/network_fishing_attempt.gd +++ b/network/network_fishing_attempt.gd @@ -21,7 +21,6 @@ var origin: Vector3 var target: Vector3 var bobber_position: Vector3 var fish_id: StringName -var rod_id: StringName var bait_tags: Array[StringName] = [] var lure_effects: Array[StringName] = [] var encounter_seed: int = 0 diff --git a/network/network_fishing_service.gd b/network/network_fishing_service.gd index f7e1623..a5a2154 100644 --- a/network/network_fishing_service.gd +++ b/network/network_fishing_service.gd @@ -5,7 +5,6 @@ const FishCatchType = preload("res://fish/fish_catch.gd") const FishDataType = preload("res://fish/fish_data.gd") const FishPoolType = preload("res://fish/fish_pool.gd") const FishSelectorType = preload("res://fish/fish_selector.gd") -const FishingRodDataType = preload("res://items/fishing_rod_data.gd") const FishingContextType = preload("res://fishing/fishing_context.gd") const CollectionLogType = preload("res://collection/collection_log.gd") const FishExperienceType = preload("res://fish/fish_experience.gd") @@ -255,10 +254,10 @@ func _handle_cast_request(peer_id: int, data: Dictionary) -> void: if not bool(data["capacity_available"]): _record_and_reject(peer_id, request_id, "Cooler is full.") return - var rod := _item_catalog.get_item_by_id( + var rod: ItemData = _item_catalog.get_item_by_id( StringName(str(data["rod_id"])) - ) as FishingRodDataType - if rod == null or not rod.is_available(): + ) + if rod == null or rod.category != ItemData.Category.ROD: _record_and_reject(peer_id, request_id, "Select a fishing rod to cast.") return var avatar: Player = _spawn_service.get_avatar(peer_id) @@ -313,7 +312,7 @@ func _handle_cast_request(peer_id: int, data: Dictionary) -> void: if _item_use != null else null ) var selected_fish: FishDataType = _select_authoritative_fish( - region, data, effects, rod + region, data, effects ) if selected_fish == null or not selected_fish.is_allowed_in_water( region.water_type @@ -340,7 +339,6 @@ func _handle_cast_request(peer_id: int, data: Dictionary) -> void: not lure_id.is_empty() and ( lure == null - or not lure.is_available() or not lure.is_lure() or ( owns_authoritative_bag @@ -355,7 +353,6 @@ func _handle_cast_request(peer_id: int, data: Dictionary) -> void: return if not bait_id.is_empty() and ( bait == null - or not bait.is_available() or not bait.is_bait() or ( owns_authoritative_bag @@ -377,38 +374,20 @@ func _handle_cast_request(peer_id: int, data: Dictionary) -> void: attempt.target = authoritative_target attempt.bobber_position = authoritative_target attempt.fish_id = selected_fish.id - attempt.rod_id = rod.item_id attempt.bait_tags = _bait_tags_for_request(data) attempt.lure_effects.clear() if lure != null: for effect_id: StringName in lure.lure_effects: attempt.lure_effects.append(effect_id) - var effect_reel_multiplier: float = ( + attempt.reel_speed = float(data["reel_speed"]) * ( effects.get_reel_multiplier() if effects != null else 1.0 ) - var effect_barrier_bonus: int = ( + attempt.barrier_damage = int(data["barrier_damage"]) + ( effects.get_barrier_bonus() if effects != null else 0 ) - var effect_bite_multiplier: float = ( + attempt.bite_time_remaining = _fishing_spot.roll_bite_wait_time() * float( effects.get_bite_time_multiplier() if effects != null else 1.0 ) - attempt.reel_speed = ( - float(data["reel_speed"]) - * effect_reel_multiplier - * rod.reel_speed_multiplier - ) - attempt.barrier_damage = maxi( - roundi( - (float(data["barrier_damage"]) + effect_barrier_bonus) - * rod.barrier_power_multiplier - ), - 1, - ) - attempt.bite_time_remaining = ( - _fishing_spot.roll_bite_wait_time() - * effect_bite_multiplier - * rod.bite_time_multiplier - ) attempt.controller = CatchController.new() add_child(attempt.controller) attempt.controller.encounter_updated.connect( @@ -493,7 +472,6 @@ func _select_authoritative_fish( region: FishableWaterRegion, data: Dictionary, effects: PlayerItemEffects, - rod: FishingRodDataType, ) -> FishDataType: var evidence_log := CollectionLogType.new() for value: Variant in data["discovered_fish_ids"]: @@ -502,7 +480,6 @@ func _select_authoritative_fish( return null evidence_log.mark_discovered(fish_id) var selector := FishSelectorType.new() - selector.active_rod = rod selector.undiscovered_weight_multiplier = ( _fishing_spot.undiscovered_weight_multiplier ) @@ -526,11 +503,7 @@ func _bait_tags_for_request(data: Dictionary) -> Array[StringName]: if bait_id.is_empty() or _item_catalog == null: return [] var bait: ItemDataType = _item_catalog.get_item_by_id(bait_id) - return ( - bait.bait_tags.duplicate() - if bait != null and bait.is_available() and bait.is_bait() - else [] - ) + return bait.bait_tags.duplicate() if bait != null and bait.is_bait() else [] func _set_bite_pending(attempt: NetworkFishingAttempt) -> void: @@ -554,20 +527,13 @@ func _start_bite(attempt: NetworkFishingAttempt) -> void: if attempt.phase != NetworkFishingAttempt.Phase.WAITING_FOR_BITE: return var fish: FishDataType = _fish_catalog.get_fish_by_id(attempt.fish_id) - var rod := _item_catalog.get_item_by_id(attempt.rod_id) as FishingRodDataType - if ( - fish == null - or fish.catch_profile == null - or rod == null - or not rod.is_available() - ): + if fish == null or fish.catch_profile == null: _cancel_attempt(attempt.owner_peer_id, "Fishing attempt ended.") return attempt.bite_confirmation_pending = false attempt.phase = NetworkFishingAttempt.Phase.FIGHTING attempt.encounter_seed = _new_seed() var selector := FishSelectorType.new() - selector.active_rod = rod selector.use_deterministic_test_seed = true selector.deterministic_test_seed = attempt.encounter_seed ^ 0x5F3759DF selector.begin_roll() @@ -987,7 +953,7 @@ func _on_attempt_escaped(peer_id: int) -> void: if attempt == null: return attempt.phase = NetworkFishingAttempt.Phase.ESCAPED - _broadcast_public_outcome(attempt, &"escape", "") + _broadcast_public_outcome(attempt, &"escape", "The fish got away!") _dispose_attempt(peer_id) diff --git a/network/network_item_use_service.gd b/network/network_item_use_service.gd index 9b47b41..f39d198 100644 --- a/network/network_item_use_service.gd +++ b/network/network_item_use_service.gd @@ -1,8 +1,6 @@ class_name NetworkItemUseService extends Node -const FishingRodDataType = preload("res://items/fishing_rod_data.gd") - const ArtShopStockType = preload("res://economy/art_shop_stock.gd") const MAX_LEDGER_ENTRIES: int = 64 @@ -130,7 +128,6 @@ func _handle_use_request(peer_id: int, data: Dictionary) -> void: ) if error.is_empty() and ( item == null - or not item.is_available() or ( item.category != ItemData.Category.CONSUMABLE and not is_fish_finder @@ -297,16 +294,13 @@ func submit_local_equipped(item_id: StringName, owns_item: bool) -> void: return _local_equipped_revision += 1 var item: ItemData = _catalog.get_item_by_id(item_id) - var can_equip: bool = ( - item != null and item.is_available() and owns_item - ) var data := { "session_id": _session.get_session_id(), "owner_peer_id": _session.get_local_peer_id(), - "item_id": str(item_id) if can_equip else "", - "category": int(item.category) if can_equip else -1, + "item_id": str(item_id) if item != null and owns_item else "", + "category": int(item.category) if item != null and owns_item else -1, "revision": _local_equipped_revision, - "owns_item": can_equip, + "owns_item": owns_item and item != null, } if _session.is_host(): _handle_equipped_state(_session.get_local_peer_id(), data) @@ -337,7 +331,6 @@ func _handle_equipped_state(peer_id: int, data: Dictionary) -> void: var item: ItemData = _catalog.get_item_by_id(item_id) if not item_id.is_empty() and ( item == null - or not item.is_available() or not bool(data["owns_item"]) or int(item.category) != int(data["category"]) ): @@ -360,17 +353,8 @@ func _apply_equipped(data: Dictionary) -> void: if avatar != null: var item_id := StringName(str(data["item_id"])) var item: ItemData = _catalog.get_item_by_id(item_id) - avatar.set_active_fishing_rod( - ( - item as FishingRodDataType - if ( - item != null - and item.is_available() - and int(data["category"]) == ItemData.Category.ROD - and bool(data["owns_item"]) - ) - else null - ), + avatar.set_active_item_is_rod( + int(data["category"]) == ItemData.Category.ROD, true, ) avatar.set_active_art_kit( diff --git a/network/network_job_service.gd b/network/network_job_service.gd index ebf5a6e..7745903 100644 --- a/network/network_job_service.gd +++ b/network/network_job_service.gd @@ -2,13 +2,11 @@ class_name NetworkJobService extends Node const MAX_SESSION_ID_LENGTH: int = 96 -const BOARD_REQUEST_INTERVAL_SECONDS: float = 1.5 var _session: NetworkSession var _jobs: PlayerJobService var _sequence: int = 0 var _last_received_sequence: int = -1 -var _board_request_accumulator: float = 0.0 func setup(session: NetworkSession, jobs: PlayerJobService) -> void: @@ -17,36 +15,13 @@ func setup(session: NetworkSession, jobs: PlayerJobService) -> void: _session.state_changed.connect(_on_session_state_changed) _session.peer_authenticated.connect(_on_peer_authenticated) _jobs.board_changed.connect(_on_board_changed) - set_process(true) - - -func _process(delta: float) -> void: - if ( - _session == null - or _jobs == null - or not _session.is_joined_client() - or not _session.supports_server_capability( - NetworkProtocol.JOBS_CAPABILITY - ) - or _jobs.has_active_board() - ): - _board_request_accumulator = 0.0 - return - _board_request_accumulator += delta - if _board_request_accumulator < BOARD_REQUEST_INTERVAL_SECONDS: - return - _board_request_accumulator = 0.0 - _request_remote_board() func _on_session_state_changed(state: NetworkSession.State) -> void: _sequence = 0 _last_received_sequence = -1 - _board_request_accumulator = 0.0 if state == NetworkSession.State.JOINED_CLIENT: - if _session.supports_server_capability(NetworkProtocol.JOBS_CAPABILITY): - _request_remote_board() - else: + if not _session.supports_server_capability(NetworkProtocol.JOBS_CAPABILITY): _jobs.clear_remote_board() elif state in [ NetworkSession.State.INACTIVE, @@ -94,33 +69,6 @@ func _send_board(peer_id: int) -> void: }) -func _request_remote_board() -> void: - if ( - _session != null - and _session.is_joined_client() - and _session.supports_server_capability( - NetworkProtocol.JOBS_CAPABILITY - ) - ): - request_job_board.rpc_id(1) - - -@rpc("any_peer", "call_remote", "reliable", 0) -func request_job_board() -> void: - var sender_id: int = multiplayer.get_remote_sender_id() - if ( - _session == null - or not _session.is_host() - or sender_id <= 1 - or not _session.is_authenticated_peer(sender_id) - or not _session.peer_supports_capability( - sender_id, NetworkProtocol.JOBS_CAPABILITY - ) - ): - return - _send_board(sender_id) - - @rpc("authority", "call_remote", "reliable", 0) func receive_job_board(data: Dictionary) -> void: if ( @@ -138,7 +86,6 @@ func receive_job_board(data: Dictionary) -> void: var board: Dictionary = data.get("board", {}) if _jobs.apply_remote_board(board): _last_received_sequence = sequence - _board_request_accumulator = 0.0 static func validate_snapshot(value: Variant) -> bool: diff --git a/network/network_player_animation_protocol.gd b/network/network_player_animation_protocol.gd deleted file mode 100644 index b27cb9d..0000000 --- a/network/network_player_animation_protocol.gd +++ /dev/null @@ -1,94 +0,0 @@ -class_name NetworkPlayerAnimationProtocol -extends RefCounted - -const FORMAT_VERSION: int = 1 -const MAX_STATE_ID_LENGTH: int = 64 -const MAX_ACTION_SEQUENCE: int = 2147483647 -const MAX_ACTION_ELAPSED_SECONDS: float = 86400.0 - -const LOCOMOTION_IDLE: StringName = &"idle" -const LOCOMOTION_WALKING: StringName = &"walking" -const LOCOMOTION_RUNNING: StringName = &"running" - - -static func make_state( - locomotion_id: StringName, - grounded: bool, - action_id: StringName = &"", - action_sequence: int = 0, - action_elapsed: float = 0.0, -) -> Dictionary: - return { - "format_version": FORMAT_VERSION, - "locomotion_id": String(locomotion_id), - "grounded": grounded, - "action": make_action_state( - action_id, action_sequence, action_elapsed - ), - } - - -static func make_action_state( - action_id: StringName = &"", - action_sequence: int = 0, - action_elapsed: float = 0.0, -) -> Dictionary: - return { - "id": String(action_id), - "sequence": action_sequence, - "elapsed": action_elapsed, - } - - -static func validate_state(value: Variant) -> bool: - if typeof(value) != TYPE_DICTIONARY: - return false - var state: Dictionary = value - return ( - typeof(state.get("format_version")) == TYPE_INT - and int(state["format_version"]) == FORMAT_VERSION - and valid_state_id(state.get("locomotion_id"), false) - and typeof(state.get("grounded")) == TYPE_BOOL - and validate_action_state(state.get("action")) - ) - - -static func validate_action_state(value: Variant) -> bool: - if typeof(value) != TYPE_DICTIONARY: - return false - var action: Dictionary = value - if ( - not valid_state_id(action.get("id"), true) - or typeof(action.get("sequence")) != TYPE_INT - or typeof(action.get("elapsed")) not in [TYPE_FLOAT, TYPE_INT] - ): - return false - var sequence: int = int(action["sequence"]) - var elapsed: float = float(action["elapsed"]) - return ( - sequence >= 0 - and sequence <= MAX_ACTION_SEQUENCE - and is_finite(elapsed) - and elapsed >= 0.0 - and elapsed <= MAX_ACTION_ELAPSED_SECONDS - ) - - -static func valid_state_id(value: Variant, allow_empty: bool) -> bool: - if typeof(value) not in [TYPE_STRING, TYPE_STRING_NAME]: - return false - var state_id: String = str(value) - if state_id.is_empty(): - return allow_empty - if state_id.length() > MAX_STATE_ID_LENGTH: - return false - for index: int in state_id.length(): - var codepoint: int = state_id.unicode_at(index) - var valid_character: bool = ( - codepoint >= 97 and codepoint <= 122 - or codepoint >= 48 and codepoint <= 57 - or codepoint == 95 - ) - if not valid_character: - return false - return true diff --git a/network/network_player_animation_protocol.gd.uid b/network/network_player_animation_protocol.gd.uid deleted file mode 100644 index 466ad02..0000000 --- a/network/network_player_animation_protocol.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://cmaaep4n3p2tq diff --git a/network/network_protocol.gd b/network/network_protocol.gd index 7250fba..46192b6 100644 --- a/network/network_protocol.gd +++ b/network/network_protocol.gd @@ -1,7 +1,7 @@ class_name NetworkProtocol extends RefCounted -const PROTOCOL_VERSION: int = 4 +const PROTOCOL_VERSION: int = 3 const GAME_BUILD: String = "prealpha" const MAX_GAME_VERSION_LENGTH: int = 64 const MAX_DISPLAY_NAME_LENGTH: int = 24 diff --git a/network/network_session.gd b/network/network_session.gd index 076acc5..2043072 100644 --- a/network/network_session.gd +++ b/network/network_session.gd @@ -9,7 +9,6 @@ const CONNECTION_TIMEOUT_SECONDS: float = 10.0 const AUTHENTICATION_TIMEOUT_SECONDS: float = 60.0 const INPUT_INTERVAL: float = 1.0 / 30.0 const SNAPSHOT_INTERVAL: float = 1.0 / 30.0 -const MAX_MOVEMENT_INPUT_SEQUENCE: int = 2147483647 signal state_changed(state: State) signal status_message_changed(message: String) @@ -34,7 +33,7 @@ signal server_trust_required( ) signal peer_identity_observed(peer_id: int, status: String) signal operator_status_changed(peer_id: int, is_operator: bool) -signal server_lost(message: String) +signal server_lost signal remote_recovery_requested(peer_id: int, entry_position: Vector3) signal remote_recovery_presentation_changed( peer_id: int, @@ -875,7 +874,7 @@ func _on_server_disconnected() -> void: ) _moderation_disconnect_message = "" _set_state(State.SERVER_LOST, message) - server_lost.emit(message) + server_lost.emit() connection_error.emit(message) @@ -1108,6 +1107,7 @@ func submit_client_identity_proof(data: Dictionary) -> void: @rpc("authority", "call_remote", "reliable", 0) func receive_moderation_disconnect(message: String) -> void: _moderation_disconnect_message = message.left(120) + connection_error.emit(_moderation_disconnect_message) @rpc("authority", "call_remote", "reliable", 0) @@ -1741,10 +1741,9 @@ func _is_valid_movement_input(data: Dictionary) -> bool: or typeof(data.get("sprint")) != TYPE_BOOL or typeof(data.get("sneak")) != TYPE_BOOL or typeof(data.get("slow_walk")) != TYPE_BOOL - or typeof(data.get("sitting")) != TYPE_BOOL - or typeof(data.get("casting")) != TYPE_BOOL - or not NetworkPlayerAnimationProtocol.validate_action_state( - data.get("animation_action") + or ( + data.has("sitting") + and typeof(data.get("sitting")) != TYPE_BOOL ) or typeof(data.get("camera_yaw")) not in [TYPE_FLOAT, TYPE_INT] ): @@ -1752,18 +1751,11 @@ func _is_valid_movement_input(data: Dictionary) -> bool: var axis: Array = data["axis"] if axis.size() != 2: return false - if ( - typeof(axis[0]) not in [TYPE_FLOAT, TYPE_INT] - or typeof(axis[1]) not in [TYPE_FLOAT, TYPE_INT] - ): - return false var x: float = float(axis[0]) var y: float = float(axis[1]) var camera_yaw: float = float(data["camera_yaw"]) return ( - int(data["sequence"]) > 0 - and int(data["sequence"]) <= MAX_MOVEMENT_INPUT_SEQUENCE - and is_finite(x) + is_finite(x) and is_finite(y) and is_finite(camera_yaw) and absf(x) <= 1.01 diff --git a/network/network_shop_service.gd b/network/network_shop_service.gd index 0f26553..4dd0f98 100644 --- a/network/network_shop_service.gd +++ b/network/network_shop_service.gd @@ -5,7 +5,6 @@ const FishingShopStockType = preload( "res://economy/fishing_shop_stock.gd" ) const ItemDataType = preload("res://items/item_data.gd") -const FishingRodDataType = preload("res://items/fishing_rod_data.gd") const OwnedItemType = preload("res://items/owned_item.gd") const ArtShopStockType = preload("res://economy/art_shop_stock.gd") @@ -127,15 +126,6 @@ func request_supply(item_id: StringName) -> String: ) -func request_rod(item_id: StringName) -> String: - return _request_purchase( - item_id, - NetworkShopProtocol.ProductCategory.ROD, - 1, - _bag.get_quantity(item_id) if _bag != null else 0, - ) - - func request_reel_speed_upgrade() -> String: return _request_purchase( REEL_PRODUCT_ID, @@ -350,7 +340,7 @@ func _build_authoritative_result( ) if ( item == null - or not item.is_available() + or not item.is_valid() or product_id not in ( FishingShopStockType.get_stock_item_ids() ) @@ -394,29 +384,7 @@ func _build_authoritative_result( rejection = "Purchase could not be completed." resulting_state = current_state + quantity NetworkShopProtocol.ProductCategory.ROD: - var rod := ( - _item_catalog.get_item_by_id(product_id) - as FishingRodDataType - if _item_catalog != null else null - ) - var available_rods: Array[FishingRodDataType] = ( - FishingShopStockType.get_rod_stock(_item_catalog) - ) - if ( - rod == null - or not rod.is_shop_available() - or rod not in available_rods - or quantity != 1 - or current_state != 0 - ): - rejection = ( - "Rod already owned." - if current_state > 0 - else "Purchase could not be completed." - ) - else: - cost = rod.shop_price - resulting_state = 1 + rejection = "This item is not sold here." NetworkShopProtocol.ProductCategory.REEL_SPEED_UPGRADE: if ( product_id != REEL_PRODUCT_ID @@ -466,7 +434,7 @@ func _build_authoritative_result( if ( product_id != ArtShopStockType.ART_KIT_ITEM_ID or art_item == null - or not art_item.is_available() + or not art_item.is_valid() or art_item.category != ItemDataType.Category.TOOL or art_item.stackable or not art_item.equippable @@ -675,7 +643,6 @@ func _validate_local_result(data: Dictionary) -> String: var bait_unlocked: bool = _bag.is_bait_unlocked(product_id) if ( item == null - or not item.is_available() or _bag.get_quantity(product_id) != expected_state or int(data["quantity"]) != FishingShopStockType.get_purchase_quantity( product_id, expected_state, item.max_stack @@ -688,22 +655,6 @@ func _validate_local_result(data: Dictionary) -> String: return "Purchase could not be completed." if not _bag.can_add_item(product_id, data["quantity"]): return "Your Bag is full." - NetworkShopProtocol.ProductCategory.ROD: - var rod := ( - _item_catalog.get_item_by_id(product_id) - as FishingRodDataType - if _item_catalog != null else null - ) - if ( - rod == null - or not rod.is_shop_available() - or _bag.get_quantity(product_id) != expected_state - or expected_state != 0 - or int(data["quantity"]) != 1 - or cost != rod.shop_price - or not _bag.can_add_item(product_id, 1) - ): - return "Purchase could not be completed." NetworkShopProtocol.ProductCategory.REEL_SPEED_UPGRADE: if _upgrades.get_reel_speed_level() != expected_state: return "Purchase could not be completed." @@ -720,14 +671,8 @@ func _validate_local_result(data: Dictionary) -> String: if _cooler_capacity.get_next_cost() != cost: return "Purchase could not be completed." NetworkShopProtocol.ProductCategory.ART_KIT: - var art_item: ItemDataType = ( - _item_catalog.get_item_by_id(product_id) - if _item_catalog != null else null - ) if ( product_id != ArtShopStockType.ART_KIT_ITEM_ID - or art_item == null - or not art_item.is_available() or _bag.get_quantity(product_id) != expected_state or not _bag.can_add_item(product_id, 1) or cost != ArtShopStockType.ART_KIT_PRICE @@ -757,11 +702,6 @@ func _apply_local_product(data: Dictionary) -> bool: _wallet.debit(data["total_cost"]) and _bag.add_item(product_id, data["quantity"]) ) - NetworkShopProtocol.ProductCategory.ROD: - return ( - _wallet.debit(int(data["total_cost"])) - and _bag.add_item(product_id, 1) - ) NetworkShopProtocol.ProductCategory.REEL_SPEED_UPGRADE: return _upgrades.purchase_reel_speed(_wallet) NetworkShopProtocol.ProductCategory.BARRIER_POWER_UPGRADE: diff --git a/player/fishing_rod_attachment.tscn b/player/fishing_rod_attachment.tscn index f284825..46da419 100644 --- a/player/fishing_rod_attachment.tscn +++ b/player/fishing_rod_attachment.tscn @@ -14,12 +14,10 @@ bone_name = "rod_socket" [node name="FishingRod" type="Node3D" parent="."] -[node name="FallbackRodMesh" type="MeshInstance3D" parent="FishingRod"] +[node name="RodMesh" type="MeshInstance3D" parent="FishingRod"] position = Vector3(0, 0.5, 0) mesh = SubResource("FishingRodMesh") material_override = SubResource("FishingRodMaterial") -[node name="ModelMount" type="Node3D" parent="FishingRod"] - [node name="FishingRodTip" type="Marker3D" parent="FishingRod"] position = Vector3(0, 1.1, 0) diff --git a/player/player.gd b/player/player.gd index 66dde01..a381e11 100644 --- a/player/player.gd +++ b/player/player.gd @@ -31,7 +31,6 @@ const ControllerMappingManagerType = preload( const FishingRodAttachmentScene = preload( "res://player/fishing_rod_attachment.tscn" ) -const FishingRodDataType = preload("res://items/fishing_rod_data.gd") const HeldItemAttachmentScene = preload( "res://player/held_item_attachment.tscn" ) @@ -69,10 +68,6 @@ const CHARACTER_FISHING_ANIMATION: StringName = &"fishing" const CHARACTER_FISHING_SIT_ANIMATION: StringName = &"fishing_sit" const CHARACTER_FIGHTING_ANIMATION: StringName = &"fighting" const CHARACTER_FIGHTING_SIT_ANIMATION: StringName = &"fighting_sit" -# Add future networked emote animation IDs here. The protocol accepts unknown -# safe IDs so newer clients can extend it, but Player only presents actions -# explicitly approved by this catalog. -const NETWORK_ANIMATION_ACTION_IDS: Array[StringName] = [] enum FishingVisualPhase { NONE, @@ -89,12 +84,6 @@ enum PocketVisualTarget { ART_KIT, CATCH_SHOWCASE, } - -enum LocomotionState { - IDLE, - WALKING, - RUNNING, -} const FIGHTING_EYES_ID: String = "alligator_eyes" const BLINK_EYES_ID: String = "closed" const BLINK_INTERVAL_SECONDS := Vector2(2.8, 7.5) @@ -404,18 +393,8 @@ var _last_network_input_sequence: int = 0 var _network_target_position: Vector3 var _network_target_velocity: Vector3 var _network_target_visual_yaw: float = 0.0 -var _network_target_grounded: bool = false -var _network_target_locomotion_state: LocomotionState = LocomotionState.IDLE -var _network_target_animation_action_id: StringName = &"" -var _network_target_animation_action_sequence: int = 0 -var _network_target_animation_action_elapsed: float = 0.0 var _network_snapshot_ready: bool = false var _network_snapshot_age: float = 0.0 -var _animation_action_id: StringName = &"" -var _animation_action_sequence: int = 0 -var _animation_action_elapsed: float = 0.0 -var _presented_animation_action_id: StringName = &"" -var _presented_animation_action_sequence: int = -1 var _character_animation_name: StringName = &"" var _sitting: bool = false var _sit_after_landing: bool = false @@ -446,10 +425,6 @@ var _fishing_after_release_pending: bool = false var _retract_animation_completed: bool = true var _fishing_rod: Node3D var _fishing_rod_tip: Marker3D -var _fishing_rod_model_mount: Node3D -var _fishing_rod_fallback_visual: GeometryInstance3D -var _custom_fishing_rod_visual: Node3D -var _active_fishing_rod_id: StringName var _active_item_is_rod: bool = false var _controller_mapping_manager: ControllerMappingManagerType var _sprint_dust_landing_ready: bool = false @@ -500,72 +475,6 @@ func set_controller_mapping_manager( _controller_mapping_manager = mapping_manager -func begin_animation_action( - action_id: StringName, - elapsed_seconds: float = 0.0, -) -> bool: - if ( - action_id.is_empty() - or not supports_network_animation_action(action_id) - or _character_animation_player == null - or not _character_animation_player.has_animation(action_id) - ): - return false - var next_sequence: int = ( - 1 - if _animation_action_sequence - >= NetworkPlayerAnimationProtocol.MAX_ACTION_SEQUENCE - else _animation_action_sequence + 1 - ) - var action_state: Dictionary = ( - NetworkPlayerAnimationProtocol.make_action_state( - action_id, next_sequence, elapsed_seconds - ) - ) - if not NetworkPlayerAnimationProtocol.validate_action_state(action_state): - return false - _apply_animation_action_state(action_state) - return true - - -func end_animation_action() -> void: - if _animation_action_id.is_empty(): - return - var next_sequence: int = ( - 1 - if _animation_action_sequence - >= NetworkPlayerAnimationProtocol.MAX_ACTION_SEQUENCE - else _animation_action_sequence + 1 - ) - _apply_animation_action_state( - NetworkPlayerAnimationProtocol.make_action_state( - &"", next_sequence, 0.0 - ) - ) - - -func _apply_animation_action_state(action_state: Dictionary) -> void: - if not NetworkPlayerAnimationProtocol.validate_action_state(action_state): - return - var action_id := StringName(str(action_state["id"])) - if ( - not action_id.is_empty() - and not supports_network_animation_action(action_id) - ): - action_id = &"" - var action_sequence: int = int(action_state["sequence"]) - var action_changed: bool = ( - action_id != _animation_action_id - or action_sequence != _animation_action_sequence - ) - _animation_action_id = action_id - _animation_action_sequence = action_sequence - _animation_action_elapsed = float(action_state["elapsed"]) - if action_changed: - _character_animation_name = &"" - _update_character_animation() - - func _initialize_fishing_rod() -> void: var skeleton := get_node_or_null( "Visuals/CharacterRig/CharacterRig/Skeleton3D" @@ -582,12 +491,6 @@ func _initialize_fishing_rod() -> void: _fishing_rod_tip = attachment.get_node( "FishingRod/FishingRodTip" ) as Marker3D - _fishing_rod_model_mount = attachment.get_node( - "FishingRod/ModelMount" - ) as Node3D - _fishing_rod_fallback_visual = attachment.get_node( - "FishingRod/FallbackRodMesh" - ) as GeometryInstance3D func _initialize_held_item_attachment() -> void: @@ -710,11 +613,6 @@ func _physics_process(delta: float) -> void: func _process(delta: float) -> void: - if not _animation_action_id.is_empty(): - _animation_action_elapsed = minf( - _animation_action_elapsed + delta, - NetworkPlayerAnimationProtocol.MAX_ACTION_ELAPSED_SECONDS, - ) _update_blink(delta) _update_character_animation() _update_sprint_dust(delta) @@ -807,7 +705,7 @@ func _update_sprint_dust(delta: float) -> void: if _sprint_dust == null: return var horizontal_velocity := Vector3(velocity.x, 0.0, velocity.z) - var grounded: bool = _get_presented_grounded() + var grounded: bool = is_on_floor() if _water_recovery_active: _sprint_dust_airborne = false _sprint_dust_fall_speed = 0.0 @@ -832,11 +730,18 @@ func _update_sprint_dust(delta: float) -> void: ) _sprint_dust_airborne = false _sprint_dust_fall_speed = 0.0 + var horizontal_speed_squared: float = horizontal_velocity.length_squared() + var fastest_non_sprint_speed := maxf( + walk_speed, + maxf(sneak_speed, slow_walk_speed) + ) + var running_threshold := fastest_non_sprint_speed + 0.5 var should_emit: bool = ( grounded and not _sitting and not _water_recovery_active - and _get_presented_locomotion_state() == LocomotionState.RUNNING + and horizontal_speed_squared + > running_threshold * running_threshold ) _sprint_dust.update_trail( delta, @@ -873,17 +778,18 @@ func _get_controller_zoom_strength() -> float: func _update_character_animation() -> void: if _character_animation_player == null: return - var locomotion_state: LocomotionState = ( - _get_presented_locomotion_state() + var horizontal_speed_squared: float = ( + velocity.x * velocity.x + velocity.z * velocity.z ) - var is_walking: bool = locomotion_state != LocomotionState.IDLE - var is_running: bool = locomotion_state == LocomotionState.RUNNING - var animation_action: Dictionary = _get_presented_animation_action() - var animation_action_id := StringName(str(animation_action.get("id", ""))) - var animation_action_available: bool = ( - not animation_action_id.is_empty() - and supports_network_animation_action(animation_action_id) - and _character_animation_player.has_animation(animation_action_id) + var is_walking: bool = horizontal_speed_squared > 0.0025 + var fastest_non_sprint_speed := maxf( + walk_speed, + maxf(sneak_speed, slow_walk_speed) + ) + var running_threshold := fastest_non_sprint_speed + 0.5 + var is_running := ( + is_walking + and horizontal_speed_squared > running_threshold * running_threshold ) var held_show_item_visible: bool = ( _held_fish_visible or _held_art_kit_visible @@ -972,8 +878,6 @@ func _update_character_animation() -> void: CHARACTER_FISHING_ANIMATION, CHARACTER_IDLE_ANIMATION, ] - elif animation_action_available: - requested_animation = [animation_action_id] elif _sitting: if held_show_item_visible: requested_animation = [ @@ -1030,45 +934,13 @@ func _update_character_animation() -> void: break if next_animation.is_empty(): return - var action_selected: bool = ( - animation_action_available and next_animation == animation_action_id - ) - var action_sequence: int = int(animation_action.get("sequence", 0)) - var action_changed: bool = ( - action_selected - and ( - animation_action_id != _presented_animation_action_id - or action_sequence != _presented_animation_action_sequence - ) - ) - if not action_selected: - _presented_animation_action_id = &"" - _presented_animation_action_sequence = -1 - if _character_animation_name == next_animation and not action_changed: + if _character_animation_name == next_animation: return _character_animation_player.play(next_animation) _character_animation_name = next_animation - if action_selected: - _presented_animation_action_id = animation_action_id - _presented_animation_action_sequence = action_sequence - var elapsed: float = float(animation_action.get("elapsed", 0.0)) - var animation: Animation = _character_animation_player.get_animation( - next_animation - ) - if elapsed > 0.0 and animation != null and animation.length > 0.0: - _character_animation_player.seek( - fposmod(elapsed, animation.length), true - ) func _on_character_animation_finished(animation_name: StringName) -> void: - if ( - local_control_enabled - and not _animation_action_id.is_empty() - and animation_name == _animation_action_id - ): - end_animation_action() - return if animation_name in [ CHARACTER_POCKET_IDLE_IDLE_ANIMATION, CHARACTER_POCKET_IDLE_SHOW_ANIMATION, @@ -1406,11 +1278,6 @@ func configure_network_remote(authoritative_simulation: bool) -> void: _network_interpolation_enabled = not authoritative_simulation _network_snapshot_ready = false _network_snapshot_age = 0.0 - _network_target_grounded = false - _network_target_locomotion_state = LocomotionState.IDLE - _network_target_animation_action_id = &"" - _network_target_animation_action_sequence = 0 - _network_target_animation_action_elapsed = 0.0 _camera.current = false @@ -1434,7 +1301,6 @@ func capture_network_input(sequence: int) -> Dictionary: "casting": ( _fishing_visual_phase == FishingVisualPhase.CASTING ), - "animation_action": _make_animation_action_state(), } var axis: Vector2 = Input.get_vector( "move_left", @@ -1452,7 +1318,6 @@ func capture_network_input(sequence: int) -> Dictionary: "slow_walk": Input.is_action_pressed("slow_walk"), "sitting": _sitting, "casting": _fishing_visual_phase == FishingVisualPhase.CASTING, - "animation_action": _make_animation_action_state(), } @@ -1470,7 +1335,6 @@ func apply_authoritative_network_input(data: Dictionary) -> void: _network_sprint = bool(data.get("sprint", false)) _network_sneak = bool(data.get("sneak", false)) _network_slow_walk = bool(data.get("slow_walk", false)) - _apply_animation_action_state(data.get("animation_action", {})) _apply_network_casting(bool(data.get("casting", false))) var sitting_requested: bool = bool(data.get("sitting", false)) if sitting_requested and not is_on_floor(): @@ -1488,13 +1352,7 @@ func make_network_snapshot(peer_id: int) -> Dictionary: "position": [global_position.x, global_position.y, global_position.z], "velocity": [velocity.x, velocity.y, velocity.z], "visual_yaw": _visuals.rotation.y, - "animation_state": NetworkPlayerAnimationProtocol.make_state( - _get_authoritative_locomotion_id(), - is_on_floor(), - _animation_action_id, - _animation_action_sequence, - _animation_action_elapsed, - ), + "grounded": is_on_floor(), "sitting": _sitting, "casting": _fishing_visual_phase == FishingVisualPhase.CASTING, } @@ -1507,7 +1365,6 @@ func push_network_snapshot(snapshot: Dictionary) -> void: _network_target_position = parsed["position"] _network_target_velocity = parsed["velocity"] _network_target_visual_yaw = parsed["visual_yaw"] - _apply_network_target_animation_state(parsed["animation_state"]) _network_snapshot_age = 0.0 _apply_network_casting(bool(parsed["casting"])) _set_sitting(bool(parsed["sitting"])) @@ -1555,7 +1412,6 @@ func apply_network_teleport(snapshot: Dictionary) -> void: _network_target_position = global_position _network_target_velocity = velocity _network_target_visual_yaw = _visuals.rotation.y - _apply_network_target_animation_state(parsed["animation_state"]) _network_snapshot_age = 0.0 _network_snapshot_ready = true @@ -1581,12 +1437,6 @@ func _parse_network_snapshot(snapshot: Dictionary) -> Dictionary: float(network_velocity[2]) ) var visual_yaw: float = float(snapshot.get("visual_yaw", 0.0)) - var animation_state_value: Variant = snapshot.get("animation_state") - if not NetworkPlayerAnimationProtocol.validate_state(animation_state_value): - return {} - var animation_state: Dictionary = ( - animation_state_value as Dictionary - ).duplicate(true) if ( snapshot.has("acknowledged_input") and ( @@ -1614,119 +1464,12 @@ func _parse_network_snapshot(snapshot: Dictionary) -> Dictionary: "position": parsed_position, "velocity": parsed_velocity, "visual_yaw": visual_yaw, - "animation_state": animation_state, "acknowledged_input": acknowledged_input, "sitting": sitting, "casting": casting, } -func _make_animation_action_state() -> Dictionary: - return NetworkPlayerAnimationProtocol.make_action_state( - _animation_action_id, - _animation_action_sequence, - _animation_action_elapsed, - ) - - -func _apply_network_target_animation_state(state: Dictionary) -> void: - if not NetworkPlayerAnimationProtocol.validate_state(state): - return - _network_target_grounded = bool(state["grounded"]) - _network_target_locomotion_state = _locomotion_state_from_id( - StringName(str(state["locomotion_id"])) - ) - var action: Dictionary = state["action"] - _network_target_animation_action_id = StringName(str(action["id"])) - _network_target_animation_action_sequence = int(action["sequence"]) - _network_target_animation_action_elapsed = float(action["elapsed"]) - - -func _get_authoritative_locomotion_state() -> LocomotionState: - if ( - _network_authoritative_simulation - and _is_movement_input_enabled() - and not _water_recovery_active - and not _sitting - and _network_axis.length_squared() > 0.0025 - ): - return ( - LocomotionState.RUNNING - if _network_sprint - else LocomotionState.WALKING - ) - return _locomotion_state_from_velocity() - - -func _get_authoritative_locomotion_id() -> StringName: - return _locomotion_id_from_state(_get_authoritative_locomotion_state()) - - -func _get_presented_locomotion_state() -> LocomotionState: - if _network_interpolation_enabled and _network_snapshot_ready: - return _network_target_locomotion_state - return _locomotion_state_from_velocity() - - -func _get_presented_animation_action() -> Dictionary: - if _network_interpolation_enabled and _network_snapshot_ready: - return NetworkPlayerAnimationProtocol.make_action_state( - _network_target_animation_action_id, - _network_target_animation_action_sequence, - minf( - _network_target_animation_action_elapsed + _network_snapshot_age, - NetworkPlayerAnimationProtocol.MAX_ACTION_ELAPSED_SECONDS, - ), - ) - return _make_animation_action_state() - - -func _locomotion_id_from_state(state: LocomotionState) -> StringName: - match state: - LocomotionState.WALKING: - return NetworkPlayerAnimationProtocol.LOCOMOTION_WALKING - LocomotionState.RUNNING: - return NetworkPlayerAnimationProtocol.LOCOMOTION_RUNNING - _: - return NetworkPlayerAnimationProtocol.LOCOMOTION_IDLE - - -func _locomotion_state_from_id(state_id: StringName) -> LocomotionState: - match state_id: - NetworkPlayerAnimationProtocol.LOCOMOTION_WALKING: - return LocomotionState.WALKING - NetworkPlayerAnimationProtocol.LOCOMOTION_RUNNING: - return LocomotionState.RUNNING - _: - return LocomotionState.IDLE - - -static func supports_network_animation_action(action_id: StringName) -> bool: - return action_id in NETWORK_ANIMATION_ACTION_IDS - - -func _locomotion_state_from_velocity() -> LocomotionState: - var horizontal_speed_squared: float = ( - velocity.x * velocity.x + velocity.z * velocity.z - ) - if horizontal_speed_squared <= 0.0025: - return LocomotionState.IDLE - var fastest_non_sprint_speed := maxf( - walk_speed, - maxf(sneak_speed, slow_walk_speed) - ) - var running_threshold := fastest_non_sprint_speed + 0.5 - if horizontal_speed_squared > running_threshold * running_threshold: - return LocomotionState.RUNNING - return LocomotionState.WALKING - - -func _get_presented_grounded() -> bool: - if _network_interpolation_enabled and _network_snapshot_ready: - return _network_target_grounded - return is_on_floor() - - func _apply_network_casting(casting: bool) -> void: if casting: if _fishing_visual_phase == FishingVisualPhase.NONE: @@ -1913,45 +1656,6 @@ func get_fishing_rod() -> Node3D: return _fishing_rod -func set_active_fishing_rod( - rod: FishingRodDataType, - animate_transition: bool = false, -) -> void: - _apply_fishing_rod_model(rod) - set_active_item_is_rod(rod != null and rod.is_available(), animate_transition) - - -func _apply_fishing_rod_model(rod: FishingRodDataType) -> void: - var next_id: StringName = rod.item_id if rod != null else StringName() - if next_id == _active_fishing_rod_id: - return - _active_fishing_rod_id = next_id - if _custom_fishing_rod_visual != null: - _custom_fishing_rod_visual.hide() - _custom_fishing_rod_visual.queue_free() - _custom_fishing_rod_visual = null - if _fishing_rod_fallback_visual == null or _fishing_rod_tip == null: - return - _fishing_rod_fallback_visual.show() - _fishing_rod_tip.position = Vector3(0.0, 1.1, 0.0) - if rod == null: - return - _fishing_rod_tip.position = rod.rod_tip_position - if rod.rod_model_scene == null or _fishing_rod_model_mount == null: - return - var instance := rod.rod_model_scene.instantiate() as Node3D - if instance == null: - push_warning( - "Rod %s model root is not Node3D; using fallback." - % rod.item_id - ) - return - _custom_fishing_rod_visual = instance - _fishing_rod_model_mount.add_child(instance) - instance.transform = rod.rod_model_transform - _fishing_rod_fallback_visual.hide() - - func set_active_item_is_rod( active_is_rod: bool, animate_transition: bool = false, diff --git a/project.godot b/project.godot index 1745ecc..6975e3b 100644 --- a/project.godot +++ b/project.godot @@ -11,7 +11,7 @@ config_version=5 [application] config/name="NETFISHING" -config/version="0.7.1-alpha" +config/version="0.6.8-alpha" run/main_scene="res://main/main.tscn" config/features=PackedStringArray("4.7", "GL Compatibility") config/icon="res://art/exported/system_icons/netfishing_256.png" diff --git a/scripts/build_playtest.sh b/scripts/build_playtest.sh index 7749b3d..980d4c4 100755 --- a/scripts/build_playtest.sh +++ b/scripts/build_playtest.sh @@ -4,14 +4,14 @@ set -euo pipefail readonly SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)" readonly PROJECT_ROOT="$(cd -- "${SCRIPT_DIR}/.." && pwd)" -readonly BUILD_ROOT="${PROJECT_ROOT}/builds/v0.7.1-alpha" +readonly BUILD_ROOT="${PROJECT_ROOT}/builds/v0.6.8-alpha" readonly WINDOWS_DIR="${BUILD_ROOT}/windows-x86_64" readonly LINUX_DIR="${BUILD_ROOT}/linux-x86_64" readonly README_SOURCE="${PROJECT_ROOT}/docs/README-PLAYTEST.txt" readonly SOURCE_COMMIT="$(git -C "${PROJECT_ROOT}" rev-parse HEAD)" readonly SOURCE_URL="https://forge.makearmy.io/woofmeow/netfishing" -readonly WINDOWS_ZIP="${BUILD_ROOT}/NETfishing-v0.7.1-alpha-windows-x86_64.zip" -readonly LINUX_ZIP="${BUILD_ROOT}/NETfishing-v0.7.1-alpha-linux-x86_64.zip" +readonly WINDOWS_ZIP="${BUILD_ROOT}/NETfishing-v0.6.8-alpha-windows-x86_64.zip" +readonly LINUX_ZIP="${BUILD_ROOT}/NETfishing-v0.6.8-alpha-linux-x86_64.zip" readonly GODOT_BIN="${GODOT_BIN:-godot}" if [[ ! -f "${PROJECT_ROOT}/project.godot" ]]; then diff --git a/scripts/run_validations.sh b/scripts/run_validations.sh index 7ae8929..f7f77f3 100755 --- a/scripts/run_validations.sh +++ b/scripts/run_validations.sh @@ -17,7 +17,6 @@ readonly -a QUICK_TESTS=( "tests/fishing_surface_validation.gd" "tests/fur_pattern_validation.gd" "tests/logbook_validation.gd" - "tests/network_player_animation_protocol_validation.gd" "tests/player_experience_validation.gd" "tests/shoreline_ambience_validation.gd" "tests/surface_drawing_validation.gd" @@ -50,7 +49,6 @@ readonly -a NETWORK_TESTS=( "tests/fish_showcase_multiplayer_validation.gd" "tests/fishing_multiplayer_validation.gd" "tests/job_multiplayer_validation.gd" - "tests/movement_multiplayer_validation.gd" "tests/operator_multiplayer_validation.gd" "tests/surface_drawing_multiplayer_validation.gd" "tests/world_time_multiplayer_validation.gd" diff --git a/tests/economy_regression_validation.gd b/tests/economy_regression_validation.gd index a0257d0..51ba48d 100644 --- a/tests/economy_regression_validation.gd +++ b/tests/economy_regression_validation.gd @@ -48,8 +48,7 @@ func _run() -> void: as PlayerAssetReservationService ) assert(player != null) - assert(catalog != null and catalog.candidates.size() == 313) - assert(LogbookCatalog.ordered_species(catalog.candidates).size() == 53) + assert(catalog != null and catalog.candidates.size() == 53) assert(sale_service != null) assert(shop_service != null) assert(session != null and session.is_host()) @@ -73,7 +72,6 @@ func _run() -> void: assert(session.set_host_open(false)) await _test_host_shop_purchase(main, player, shop_service) - await _test_host_rod_purchase(player, shop_service) await _test_host_art_shop_purchase(main, player, shop_service) await _test_fishing_shop_sale_ui( main, player, catalog, sale_service, reservations @@ -162,8 +160,6 @@ func _run_multiplayer_client() -> void: shop_service.local_purchase_finished.connect(_on_shop_finished) var catch_ids: Array[StringName] = [] for fish: FishData in catalog.candidates: - if not fish.active: - continue var fish_catch := _make_catch(fish) player.inventory.add_catch(fish_catch) catch_ids.append(fish_catch.catch_id) @@ -264,8 +260,6 @@ func _test_each_species( sale_service: NetworkSaleService, ) -> void: for fish: FishData in catalog.candidates: - if not fish.active: - continue assert(fish != null) var fish_catch := _make_catch(fish) player.inventory.add_catch(fish_catch) @@ -378,8 +372,6 @@ func _test_host_shop_sale( var species_ids: Array[StringName] = [] var expected_payout: int = 0 for fish: FishData in catalog.candidates: - if not fish.active: - continue var fish_catch := _make_catch(fish) player.inventory.add_catch(fish_catch) species_ids.append(fish_catch.catch_id) @@ -536,18 +528,6 @@ func _test_host_art_shop_purchase( assert(not shop_service.is_local_purchase_pending()) -func _test_host_rod_purchase( - player: Player, - shop_service: NetworkShopService, -) -> void: - assert(player.bag.remove_item(&"basic_fishing_rod", 1)) - _shop_result.clear() - assert(not shop_service.request_rod(&"basic_fishing_rod").is_empty()) - assert(not _shop_result.is_empty() and bool(_shop_result[1])) - assert(player.bag.owns_item(&"basic_fishing_rod")) - assert(not shop_service.is_local_purchase_pending()) - - func _test_fishing_shop_sale_ui( main: Node, player: Player, @@ -636,27 +616,6 @@ func _test_fishing_shop_sale_ui( assert(art_supplies_tab != null and art_supplies_tab.text == "Art Supplies") var sell_mode := shop_tabs[5] as Button assert(sell_mode != null and sell_mode.text == "Sell Fish") - var equipment_tab := shop_tabs[3] as Button - assert(equipment_tab != null and equipment_tab.text == "Equipment") - await _activate_pointer_control(equipment_tab, ui_viewport) - await process_frame - var equipment_sections: Array[String] = [] - for child: Node in shop.get_node("%SuppliesList").get_children(): - if child is Label: - equipment_sections.append((child as Label).text) - assert(equipment_sections == ["rods", "equipment"]) - var supplies_list := shop.get_node("%SuppliesList") as VBoxContainer - var rod_carousel := supplies_list.get_node("RodCarousel") as HBoxContainer - assert(rod_carousel != null) - var rod_cards := rod_carousel.get_node("RodScroll/RodCards") as HBoxContainer - assert(rod_cards != null and rod_cards.get_child_count() == 1) - var basic_rod_button := rod_cards.find_child( - "Rod_basic_fishing_rod", true, false - ) as Button - assert(basic_rod_button != null) - assert(basic_rod_button.custom_minimum_size == Vector2(144.0, 144.0)) - assert(basic_rod_button.icon != null and basic_rod_button.disabled) - assert(rod_cards.find_child("Rod_aurora_rod", true, false) == null) await _activate_pointer_control(art_supplies_tab, ui_viewport) await process_frame var stock_sections: Array[String] = [] diff --git a/tests/equipment_catalog_validation.gd b/tests/equipment_catalog_validation.gd deleted file mode 100644 index 3e562b4..0000000 --- a/tests/equipment_catalog_validation.gd +++ /dev/null @@ -1,49 +0,0 @@ -extends SceneTree - -const FishingShopStockType = preload("res://economy/fishing_shop_stock.gd") -const FishingShopType = preload("res://ui/fishing_shop.gd") -const ItemCatalogType = preload("res://items/item_catalog.gd") -const ItemDataType = preload("res://items/item_data.gd") -const PlayerBagType = preload("res://inventory/player_bag.gd") -const PlayerWalletType = preload("res://economy/player_wallet.gd") - -const ItemCatalogResource: ItemCatalogType = preload( - "res://items/catalog/item_catalog.tres" -) - - -func _initialize() -> void: - var shop := FishingShopType.new() - assert(shop.call("_unlock_status", false) == "locked") - assert(shop.call("_unlock_status", true) == "unlocked") - shop.free() - - var magnet: ItemDataType = ItemCatalogResource.get_available_item_by_id( - &"magnet" - ) - assert(magnet != null) - assert(magnet.category == ItemDataType.Category.TOOL) - assert(magnet.icon == null) - assert(not magnet.usable) - assert(not magnet.equippable) - assert(not magnet.hotbar_allowed) - assert(FishingShopStockType.get_price(&"magnet") == 250) - assert(FishingShopStockType.get_stock_item_ids().has(&"magnet")) - assert(FishingShopStockType.is_permanent_unlock(&"magnet", magnet)) - - var wallet := PlayerWalletType.new() - wallet.current_balance = 250 - var bag := PlayerBagType.new() - bag.setup(ItemCatalogResource) - assert(FishingShopStockType.purchase_one( - &"magnet", wallet, bag, ItemCatalogResource - )) - assert(bag.owns_item(&"magnet")) - assert(wallet.get_balance() == 0) - assert(not FishingShopStockType.purchase_one( - &"magnet", wallet, bag, ItemCatalogResource - )) - bag.free() - wallet.free() - print("Equipment catalog validation: PASS") - quit() diff --git a/tests/equipment_catalog_validation.gd.uid b/tests/equipment_catalog_validation.gd.uid deleted file mode 100644 index b26406d..0000000 --- a/tests/equipment_catalog_validation.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://1f2k3yrth7qn diff --git a/tests/fish_catalog_content_validation.gd b/tests/fish_catalog_content_validation.gd index cc393f6..6746d70 100644 --- a/tests/fish_catalog_content_validation.gd +++ b/tests/fish_catalog_content_validation.gd @@ -89,8 +89,6 @@ func _run() -> void: func _validate_weight_based_display_scale() -> void: var previous_scale: float = 0.0 for fish: FishDataType in Catalog.candidates: - if not fish.active: - continue assert(fish.is_selectable()) assert(fish.weight_min_lb > 0.0) assert(fish.weight_max_lb <= 1000.0) @@ -121,48 +119,9 @@ func _validate_weight_based_display_scale() -> void: func _validate_catalog_and_pools() -> void: - assert(Catalog.candidates.size() == 313) + assert(Catalog.candidates.size() == 53) assert(PondPool.candidates.size() == 19) assert(OceanPool.candidates.size() == 34) - var active_count: int = 0 - var inactive_count: int = 0 - var catalog_numbers: Dictionary[int, bool] = {} - for fish: FishDataType in Catalog.candidates: - assert(fish != null and not fish.id.is_empty()) - assert(fish.catalog_number > 0) - assert(not fish.collection_group.is_empty()) - assert(not catalog_numbers.has(fish.catalog_number)) - catalog_numbers[fish.catalog_number] = true - assert(not fish.logbook_fact.strip_edges().is_empty()) - if fish.active: - active_count += 1 - assert(fish.is_selectable()) - assert(fish.display_texture != null) - else: - inactive_count += 1 - assert(not fish.is_selectable()) - assert(fish.display_texture == null) - assert(active_count == 53) - assert(inactive_count == 260) - var inactive_fish: FishDataType = Catalog.get_fish_by_id(&"bowfin") - assert(inactive_fish != null and not inactive_fish.active) - var inactive_pool := FishPoolType.new() - inactive_pool.candidates = [inactive_fish] - var inactive_context := FishingContextType.new() - inactive_context.water_type = WaterType.Type.FRESH_WATER - var inactive_collection := CollectionLogType.new() - var inactive_selector := FishSelectorType.new() - inactive_selector.use_deterministic_test_seed = true - inactive_selector.begin_roll() - assert( - inactive_selector.select_fish( - inactive_pool, - inactive_context, - inactive_collection, - ) == null - ) - assert(inactive_selector.create_catch(inactive_fish) == null) - inactive_collection.free() for fish_id: StringName in ORIGINAL_IDS: var original_fish: FishDataType = Catalog.get_fish_by_id(fish_id) assert(original_fish != null) @@ -318,33 +277,21 @@ func _validate_authoritative_water_filter() -> void: stale_fresh_pool_region.location_tags = [&"coast", &"ocean"] var evidence := {"discovered_fish_ids": []} assert( - service.call( - "_select_authoritative_fish", pond_region, evidence, null, null - ) + service.call("_select_authoritative_fish", pond_region, evidence, null) + != null + ) + assert( + service.call("_select_authoritative_fish", ocean_region, evidence, null) != null ) assert( service.call( - "_select_authoritative_fish", ocean_region, evidence, null, null - ) - != null - ) - assert( - service.call( - "_select_authoritative_fish", - stale_salt_pool_region, - evidence, - null, - null, + "_select_authoritative_fish", stale_salt_pool_region, evidence, null ) == null ) assert( service.call( - "_select_authoritative_fish", - stale_fresh_pool_region, - evidence, - null, - null, + "_select_authoritative_fish", stale_fresh_pool_region, evidence, null ) == null ) service.free() @@ -400,14 +347,11 @@ func _validate_catches_and_authoritative_sale() -> void: } sale_service.set("_buyers", sale_buyers) - var catch_sequence: int = 0 - for fish: FishDataType in Catalog.candidates: - if not fish.active: - continue - catch_sequence += 1 + for index: int in Catalog.candidates.size(): + var fish: FishDataType = Catalog.candidates[index] var fish_catch: FishCatch = selector.create_catch(fish) assert(fish_catch != null) - fish_catch.catch_sequence = catch_sequence + fish_catch.catch_sequence = index + 1 assert(fish_catch.fish.display_texture == fish.display_texture) var loaded: FishCatch = FishCatchType.from_save_dict( @@ -441,7 +385,7 @@ func _validate_catches_and_authoritative_sale() -> void: var sale_result: Dictionary = sale_service.call( "_build_authoritative_result", 1, - "catalog_sale_%d" % catch_sequence, + "catalog_sale_%d" % index, [loaded.to_network_dict()], PelicanBuyer, ) diff --git a/tests/fish_hotbar_showcase_validation.gd b/tests/fish_hotbar_showcase_validation.gd index 06b2f4d..8919221 100644 --- a/tests/fish_hotbar_showcase_validation.gd +++ b/tests/fish_hotbar_showcase_validation.gd @@ -181,7 +181,7 @@ func _run() -> void: var invalid_state: Dictionary = valid_state.duplicate(true) invalid_state["display_scale"] = 1000.0 assert(not NetworkFishShowcaseProtocol.validate_state(invalid_state)) - assert(NetworkProtocol.PROTOCOL_VERSION == 4) + assert(NetworkProtocol.PROTOCOL_VERSION == 3) assert(NetworkProtocol.ENET_CHANNEL_COUNT == 10) assert( NetworkProtocol.FISH_QUALITY_CAPABILITY diff --git a/tests/fish_quality_validation.gd b/tests/fish_quality_validation.gd index 555fb3c..72ebecc 100644 --- a/tests/fish_quality_validation.gd +++ b/tests/fish_quality_validation.gd @@ -25,7 +25,7 @@ func _run() -> void: _validate_mail_round_trip() _validate_collection_mastery() _validate_version_four_migration() - assert(NetworkProtocol.PROTOCOL_VERSION == 4) + assert(NetworkProtocol.PROTOCOL_VERSION == 3) assert(NetworkProtocol.ENET_CHANNEL_COUNT == 10) assert(NetworkProtocol.FISH_QUALITY_CAPABILITY == "fish_quality_v1") print("Fish quality validation: PASS") diff --git a/tests/fishing_authority_validation.gd b/tests/fishing_authority_validation.gd index 6b0429d..20f02e1 100644 --- a/tests/fishing_authority_validation.gd +++ b/tests/fishing_authority_validation.gd @@ -31,9 +31,6 @@ func _run() -> void: "%NetworkFishingService" ) as NetworkFishingService var fishing_spot := main.get_node("%FishingSpot") as FishingSpotType - var game_ui := main.get_node("UIPresentation/UIViewport/GameUI") - var fishing_status := game_ui.get_node("%StatusLabel") as Label - var fishing_panel := game_ui.get_node("%FishingPanel") as PanelContainer var player := main.get("_player") as Player assert(session.is_host()) assert(not session.is_open_host()) @@ -74,9 +71,6 @@ func _run() -> void: await process_frame assert(fishing_spot.state == FishingSpotType.FishingState.WAITING_FOR_BITE) assert(service.has_local_attempt()) - assert(fishing_status.text.is_empty()) - assert(not fishing_status.visible) - assert(not fishing_panel.visible) var attempts: Dictionary = service.get("_attempts") var attempt: NetworkFishingAttempt = attempts.get(session.get_local_peer_id()) assert(attempt != null) @@ -170,12 +164,9 @@ func _run() -> void: <= FishQuality.BARRIER_HEALTH_MAXIMUMS[fish_catch.quality] ) reference_controller.queue_free() - service.call("_on_attempt_escaped", session.get_local_peer_id()) + service.call("_cancel_attempt", session.get_local_peer_id(), "") await process_frame assert(not service.has_local_attempt()) - assert(fishing_status.text.is_empty()) - assert(not fishing_status.visible) - assert(not fishing_panel.visible) print("Fishing authority validation: PASS") session.disconnect_session("") diff --git a/tests/fishing_multiplayer_validation.gd b/tests/fishing_multiplayer_validation.gd index c40e492..f0976f8 100644 --- a/tests/fishing_multiplayer_validation.gd +++ b/tests/fishing_multiplayer_validation.gd @@ -147,6 +147,12 @@ func _run_host() -> void: await process_frame assert(remote_animation_player.current_animation == &"retract_sit") + var completion_deadline: int = Time.get_ticks_msec() + 12000 + while ( + Time.get_ticks_msec() < completion_deadline + and session.get_authenticated_peer_ids().size() == 2 + ): + await process_frame print("Fishing multiplayer host validation: PASS") session.disconnect_session("") main.queue_free() @@ -331,14 +337,7 @@ func _run_client() -> void: while Time.get_ticks_msec() < host_observation_deadline: await process_frame print("Fishing multiplayer client validation: PASS") - var host_completion_deadline: int = Time.get_ticks_msec() + 10000 - while ( - Time.get_ticks_msec() < host_completion_deadline - and session.is_joined_client() - ): - await process_frame - if session.is_joined_client(): - session.disconnect_session("") + session.disconnect_session("") main.queue_free() for _frame: int in 4: await process_frame diff --git a/tests/job_multiplayer_validation.gd b/tests/job_multiplayer_validation.gd index c31d392..b40fc2e 100644 --- a/tests/job_multiplayer_validation.gd +++ b/tests/job_multiplayer_validation.gd @@ -23,12 +23,13 @@ func _run() -> void: func _run_host() -> void: var main: Node = await _create_initialized_main() var session := main.get_node("%NetworkSession") as NetworkSession + var save_manager := main.get("_save_manager") as PlayerSaveManager var jobs := main.get_node("%PlayerJobService") as PlayerJobService - assert(session.start_dedicated_host(TEST_PORT, 8, "127.0.0.1")) - jobs.begin_progression_session() + assert(session.start_private_host(TEST_PORT)) + assert(save_manager.initialize_new_game()) + main.call("_enter_gameplay") await process_frame assert(session.set_host_open(true)) - assert(session.is_dedicated_host()) var host_board: Dictionary = jobs.get_host_board_network_data() assert(PlayerJobService.validate_board(host_board)) @@ -86,20 +87,6 @@ func _run_client() -> void: assert(not jobs.get_plan_id().is_empty()) assert(jobs.get_daily_jobs().size() == JobCatalog.DAILY_JOB_COUNT) assert(jobs.get_forecast().size() == JobCatalog.WEATHER_SEGMENT_COUNT) - var preserved_plan_id: String = jobs.get_plan_id() - jobs.clear_remote_board() - assert(not jobs.has_active_board()) - assert(jobs.get_plan_id() == preserved_plan_id) - var retry_deadline: int = Time.get_ticks_msec() + 5000 - while ( - Time.get_ticks_msec() < retry_deadline - and not jobs.has_active_board() - ): - await process_frame - assert(jobs.has_active_board()) - assert(jobs.get_plan_id() == preserved_plan_id) - assert(jobs.get_daily_jobs().size() == JobCatalog.DAILY_JOB_COUNT) - assert(jobs.get_forecast().size() == JobCatalog.WEATHER_SEGMENT_COUNT) assert(weather.get_daily_plan_id().is_empty()) var game_ui := main.get_node("%GameUI") as GameUI var player_menu := game_ui.get("_player_menu") as PlayerMenu diff --git a/tests/job_system_validation.gd b/tests/job_system_validation.gd index 32fe10e..b6036eb 100644 --- a/tests/job_system_validation.gd +++ b/tests/job_system_validation.gd @@ -85,7 +85,6 @@ func _run() -> void: (player_menu.get_node("%NavigationCluster") as Control).get_child_count() == 7 ) - await _validate_unavailable_fishnet_layout() var wallet_before: int = player.wallet.get_balance() var experience_before: int = player.experience.get_total_experience() @@ -163,24 +162,6 @@ func _run() -> void: var pause_menu := game_ui.get_pause_menu() var join_page := pause_menu.get_node("%JoinGamePage") as JoinGamePage assert(join_page != null) - pause_menu.show() - join_page.set_status("Connection timed out.") - join_page.show() - join_page.call( - "_on_discovery_status_changed", "2 public rooms found", false - ) - var join_status := join_page.get_node("%Status") as Label - assert(join_status.text == "Could not reach the server.") - join_page.hide() - join_page.call("_set_mode", JoinGamePage.Mode.DIRECT) - join_page.call("_set_mode", JoinGamePage.Mode.DISCOVER) - join_page.show() - join_page.call( - "_on_discovery_status_changed", "2 public rooms found", false - ) - assert(join_status.text == "2 public rooms found") - join_page.close_page() - pause_menu.hide() join_page.call("_refresh") var session_summary := ( join_page.get_node("%SessionSummary") as Label @@ -206,63 +187,14 @@ func _run() -> void: assert(int(save_data.get("save_version", -1)) == 7) assert(PlayerJobService.validate_save_data(save_data.get("jobs", {}))) - _validate_pause_session_switch(main, session) + session.disconnect_session("Job system validation complete.") main.queue_free() for _frame: int in 4: await process_frame - await create_timer(0.1).timeout print("Job system validation: PASS") quit() -func _validate_pause_session_switch( - main: Node, - session: NetworkSession, -) -> void: - var discovery := main.get_node("%DiscoveryClient") as DiscoveryClient - discovery.set("_pending_join_endpoint", "127.0.0.1:18141") - discovery.set("_pending_join_room_id", "session-switch-room") - discovery.set("_pending_join_token", "session-switch-token") - discovery.call( - "_set_public_join_state", - DiscoveryClient.PublicJoinState.CONNECTING, - ) - main.call("_on_pause_join_game_requested", "127.0.0.1:18141") - assert(session.state == NetworkSession.State.CONNECTING) - assert(discovery.get("_pending_join_token") == "session-switch-token") - var join_probe_timer := discovery.get("_join_probe_timer") as Timer - assert(join_probe_timer != null and not join_probe_timer.is_stopped()) - session.cancel_connection() - assert(session.state == NetworkSession.State.INACTIVE) - assert(str(discovery.get("_pending_join_token")).is_empty()) - - -func _validate_unavailable_fishnet_layout() -> void: - var unavailable_page := TheNetPage.new() - unavailable_page.size = Vector2(1280.0, 720.0) - root.add_child(unavailable_page) - for _frame: int in 3: - await process_frame - unavailable_page.call("_refresh_forecast", true) - await process_frame - var forecast_list := unavailable_page.get("_forecast_list") as HBoxContainer - assert(forecast_list != null) - assert(forecast_list.size.x >= 272.0) - assert(forecast_list.size.y <= 66.0) - assert(forecast_list.get_child_count() == 1) - var placeholder := forecast_list.get_child(0) as Label - assert(placeholder != null) - assert(placeholder.size.x >= 252.0) - assert(placeholder.size.y <= 66.0) - assert(placeholder.autowrap_mode == TextServer.AUTOWRAP_OFF) - var tabs := unavailable_page.get("_tabs") as HBoxContainer - assert(tabs != null) - assert(tabs.position.y + tabs.size.y < UtilityPageStyle.LAPTOP_RECT.end.y) - unavailable_page.queue_free() - for _frame: int in 2: - await process_frame - - func _validate_weather_guarantees(board: Dictionary) -> void: var jobs: Array = board.get("jobs", []) var schedule: Array = board.get("weather_schedule", []) diff --git a/tests/logbook_runtime_validation.gd b/tests/logbook_runtime_validation.gd index c7fdb26..88227aa 100644 --- a/tests/logbook_runtime_validation.gd +++ b/tests/logbook_runtime_validation.gd @@ -108,11 +108,9 @@ 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() == 313) - var active_species := LogbookCatalog.ordered_species(catalog.candidates) - assert(active_species.size() == 53) + assert(catalog.candidates.size() == 53) for index: int in 4: - _add_test_catch(player, active_species[index]) + _add_test_catch(player, catalog.candidates[index]) assert(save_manager.save_now()) var no_catches: Array[FishCatch] = [] var no_discoveries: Array[StringName] = [] @@ -121,18 +119,18 @@ func _validate_save_round_trip( assert(save_manager.load_player_data()) assert(player.inventory.get_all_catches().size() == 4) for index: int in 4: - var original_fish: FishData = active_species[index] + var original_fish: FishData = catalog.candidates[index] assert(player.inventory.get_count(original_fish.id) == 1) assert(player.collection_log.has_discovered(original_fish.id)) - for index: int in range(4, active_species.size()): - _add_test_catch(player, active_species[index]) + for index: int in range(4, catalog.candidates.size()): + _add_test_catch(player, catalog.candidates[index]) assert(save_manager.save_now()) 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() == 53) - for fish: FishData in active_species: + for fish: FishData in catalog.candidates: assert(player.inventory.get_count(fish.id) == 1) assert(player.collection_log.has_discovered(fish.id)) for fish_id: StringName in [ diff --git a/tests/logbook_validation.gd b/tests/logbook_validation.gd index bb43d3d..866a34f 100644 --- a/tests/logbook_validation.gd +++ b/tests/logbook_validation.gd @@ -40,27 +40,119 @@ func _run() -> void: func _validate_catalog() -> void: - assert(CatalogResource.candidates.size() == 313) - var ordered := LogbookCatalog.ordered_species(CatalogResource.candidates) - assert(ordered.size() == 53) - var previous_number: int = 0 - var catalog_numbers: Dictionary[int, bool] = {} - for fish: FishDataType in CatalogResource.candidates: + var expected_ids: Array[StringName] = [ + &"bluegill", + &"bass", + &"carp", + &"sunfish", + &"catfish_blue", + &"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", + &"anchovy_european", + &"anchovy_northern", + &"chub_european", + &"chub_flame", + &"chub_lake", + &"goldfish", + &"goldfish_bubbleeye", + &"grouper_gulf", + &"grouper_red", + &"mackerel_atlantic", + &"mackerel_cero", + &"mackerel_chub", + &"mackerel_king", + &"mackerel_spanish", + &"marlin_black", + &"marlin_blue", + &"marlin_white", + &"pomfret_black", + &"pomfret_chinese", + &"pomfret_golden", + &"pomfret_white", + &"sailfish", + &"sauger", + &"saugeye", + &"snapper_lane", + &"snapper_mangrove", + &"snapper_mutton", + &"snapper_red", + &"swordfish", + &"trout_cutthroat", + &"trout_golden", + &"trout_rainbow", + &"trout_steelhead", + &"walleye", + ] + assert(LogbookCatalog.CATALOG_ORDER == expected_ids) + for index: int in expected_ids.size(): + var fish := CatalogResource.get_fish_by_id(expected_ids[index]) assert(fish != null) - assert(fish.catalog_number > 0) - assert(not catalog_numbers.has(fish.catalog_number)) - catalog_numbers[fish.catalog_number] = true - assert(not LogbookCatalog.facts_for(fish).is_empty()) + assert(not LogbookCatalog.facts_for(fish.id).is_empty()) assert( - LogbookCatalog.facts_for(fish) - == LogbookCatalog.facts_for(fish).to_lower() + LogbookCatalog.facts_for(fish.id) + == LogbookCatalog.facts_for(fish.id).to_lower() ) - assert(LogbookCatalog.facts_for(fish) != "unknown") - for fish: FishDataType in ordered: - assert(fish.active) - assert(fish.catalog_number > previous_number) - assert(LogbookCatalog.catalog_number(fish) == fish.catalog_number) - previous_number = fish.catalog_number + if LogbookCatalog.FISH_FACTS.has(fish.id): + assert(LogbookCatalog.facts_for(fish.id) != "unknown") + else: + assert(LogbookCatalog.facts_for(fish.id) == "unknown") + var expected_category: WaterType.Type = ( + WaterType.Type.SALT_WATER + 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", + &"anchovy_european", + &"anchovy_northern", + &"grouper_gulf", + &"grouper_red", + &"mackerel_atlantic", + &"mackerel_cero", + &"mackerel_chub", + &"mackerel_king", + &"mackerel_spanish", + &"marlin_black", + &"marlin_blue", + &"marlin_white", + &"pomfret_black", + &"pomfret_chinese", + &"pomfret_golden", + &"pomfret_white", + &"sailfish", + &"snapper_lane", + &"snapper_mangrove", + &"snapper_mutton", + &"snapper_red", + &"swordfish", + ] + else WaterType.Type.FRESH_WATER + ) + assert( + LogbookCatalog.category_for(fish) + == expected_category + ) + assert(LogbookCatalog.catalog_number(fish.id) == index + 1) assert( LogbookCatalog.empty_state(WaterType.Type.SALT_WATER) == "No saltwater catches cataloged yet." @@ -103,7 +195,7 @@ func _validate_page() -> void: if LogbookCatalog.category_for(fish) != category: continue var unknown_key := StringName( - "unknown_%d" % LogbookCatalog.catalog_number(fish) + "unknown_%d" % LogbookCatalog.catalog_number(fish.id) ) var entry := entries.get(unknown_key) as Button assert(entry != null) @@ -159,13 +251,10 @@ func _validate_page() -> void: await create_timer(0.25).timeout var bluegill = CatalogResource.get_fish_by_id(&"bluegill") - var bluegill_unknown := StringName( - "unknown_%d" % bluegill.catalog_number - ) - page.call("_select_entry", bluegill_unknown, StringName()) + page.call("_select_entry", &"unknown_1", StringName()) assert( (page.get("_entry_buttons") as Dictionary) - .get(bluegill_unknown) != null + .get(&"unknown_1") != null ) collection.mark_discovered(&"bluegill") await process_frame @@ -201,13 +290,9 @@ func _validate_page() -> void: assert(_detail_text(page).contains("number owned\n1")) assert(_detail_text(page).contains("number caught\nunknown")) assert(_detail_text(page).contains("body of water\nfresh water")) - assert( - _detail_text(page).contains( - "catalog number\n#%03d" % bluegill.catalog_number - ) - ) + assert(_detail_text(page).contains("catalog number\n#001")) assert(_detail_text(page).contains("fish facts\n")) - assert(_detail_text(page).contains(LogbookCatalog.facts_for(bluegill))) + assert(_detail_text(page).contains(LogbookCatalog.facts_for(&"bluegill"))) _validate_detail_field_fonts(page) _validate_handwritten_numeric_scale(page) var portrait_button := page.get("_detail_portrait_button") as Button @@ -328,7 +413,7 @@ func _validate_handwritten_numeric_scale(page: LogbookPage) -> void: var label := node as Label if label.text == "common": text_value = label - elif label.text.begins_with("#"): + elif label.text == "#001": numeric_value = label assert(text_value != null) assert(numeric_value != null) diff --git a/tests/movement_multiplayer_validation.gd b/tests/movement_multiplayer_validation.gd deleted file mode 100644 index cb1d4eb..0000000 --- a/tests/movement_multiplayer_validation.gd +++ /dev/null @@ -1,163 +0,0 @@ -extends SceneTree - -const MainScene: PackedScene = preload("res://main/main.tscn") -const TEST_PORT: int = 18141 - - -func _initialize() -> void: - call_deferred("_run") - - -func _run() -> void: - var arguments: PackedStringArray = OS.get_cmdline_user_args() - if arguments.has("host"): - await _run_host() - return - if arguments.has("client"): - await _run_client() - return - push_error("Movement multiplayer validation needs host or client mode.") - quit(1) - - -func _run_host() -> void: - var main: Node = await _create_initialized_main() - var session := main.get_node("%NetworkSession") as NetworkSession - var save_manager := main.get("_save_manager") as PlayerSaveManager - assert(session.start_private_host(TEST_PORT)) - assert(save_manager.initialize_new_game()) - main.call("_enter_gameplay") - for _frame: int in 4: - await physics_frame - assert(session.set_host_open(true)) - var remote_peer_id: int = await _wait_for_remote_peer(session) - assert(remote_peer_id > 1) - var player := main.get("_player") as Player - player.configure_network_remote(true) - player.apply_authoritative_network_input(_movement_input(1, true)) - await create_timer(2.5).timeout - player.apply_authoritative_network_input(_movement_input(2, false)) - await create_timer(2.5).timeout - player.apply_authoritative_network_input(_movement_input(3, false, false)) - var disconnect_deadline: int = Time.get_ticks_msec() + 8000 - while ( - Time.get_ticks_msec() < disconnect_deadline - and session.is_authenticated_peer(remote_peer_id) - ): - await process_frame - assert(not session.is_authenticated_peer(remote_peer_id)) - print("Movement multiplayer host validation: PASS") - session.disconnect_session("") - main.queue_free() - for _frame: int in 4: - await process_frame - await create_timer(0.1).timeout - quit() - - -func _run_client() -> void: - var main: Node = await _create_initialized_main() - main.call( - "_on_title_join_game_requested", - "127.0.0.1:%d" % TEST_PORT, - ) - var session := main.get_node("%NetworkSession") as NetworkSession - var join_deadline: int = Time.get_ticks_msec() + 20000 - while Time.get_ticks_msec() < join_deadline: - await process_frame - if session.state == NetworkSession.State.VERIFYING_SERVER_IDENTITY: - main.call("_confirm_server_trust") - if session.is_joined_client() and bool(main.get("_gameplay_started")): - break - assert(session.is_joined_client()) - var spawn_service := main.get_node( - "%PlayerSpawnService" - ) as PlayerSpawnService - var host_avatar: Player = spawn_service.get_avatar(1) - assert(host_avatar != null) - var animation_player := host_avatar.get_node( - "Visuals/CharacterRig/AnimationPlayer" - ) as AnimationPlayer - var sprint_dust := host_avatar.get_node("%SprintDust") as SprintDustTrail - var saw_running: bool = false - var saw_walking: bool = false - var saw_animation_advance: bool = false - var saw_dust: bool = false - var previous_animation: StringName = &"" - var previous_animation_position: float = -1.0 - var observation_deadline: int = Time.get_ticks_msec() + 7000 - while Time.get_ticks_msec() < observation_deadline: - await process_frame - var current_animation: StringName = animation_player.current_animation - saw_running = saw_running or current_animation.begins_with("running") - saw_walking = saw_walking or current_animation.begins_with("walking") - var current_position: float = ( - animation_player.current_animation_position - ) - if ( - current_animation == previous_animation - and previous_animation_position >= 0.0 - and absf(current_position - previous_animation_position) > 0.001 - ): - saw_animation_advance = true - previous_animation = current_animation - previous_animation_position = current_position - saw_dust = saw_dust or sprint_dust.get_active_puff_count() > 0 - if saw_running and saw_walking and saw_animation_advance and saw_dust: - break - assert(saw_running) - assert(saw_walking) - assert(saw_animation_advance) - assert(saw_dust) - print("Movement multiplayer client validation: PASS") - session.disconnect_session("") - main.queue_free() - for _frame: int in 4: - await process_frame - await create_timer(0.1).timeout - quit() - - -func _movement_input( - sequence: int, - sprinting: bool, - moving: bool = true, -) -> Dictionary: - return { - "sequence": sequence, - "axis": [0.0, -1.0] if moving else [0.0, 0.0], - "camera_yaw": 0.0, - "jump": false, - "sprint": sprinting, - "sneak": false, - "slow_walk": false, - "sitting": false, - "casting": false, - "animation_action": ( - NetworkPlayerAnimationProtocol.make_action_state() - ), - } - - -func _create_initialized_main() -> Node: - root.size = Vector2i(1280, 720) - var main: Node = MainScene.instantiate() - root.add_child(main) - for _frame: int in 4: - await process_frame - if not bool(main.get("_application_initialized")): - main.call("_activate_selected_data_path", "", true) - for _frame: int in 8: - await process_frame - assert(bool(main.get("_application_initialized"))) - return main - - -func _wait_for_remote_peer(session: NetworkSession) -> int: - var deadline: int = Time.get_ticks_msec() + 20000 - while Time.get_ticks_msec() < deadline: - await process_frame - for peer_id: int in session.get_authenticated_peer_ids(): - if peer_id != session.get_local_peer_id(): - return peer_id - return 0 diff --git a/tests/movement_multiplayer_validation.gd.uid b/tests/movement_multiplayer_validation.gd.uid deleted file mode 100644 index 4d8c726..0000000 --- a/tests/movement_multiplayer_validation.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://dlpu5lwb2pges diff --git a/tests/network_player_animation_protocol_validation.gd b/tests/network_player_animation_protocol_validation.gd deleted file mode 100644 index 8c3474c..0000000 --- a/tests/network_player_animation_protocol_validation.gd +++ /dev/null @@ -1,49 +0,0 @@ -extends SceneTree - - -func _initialize() -> void: - var idle := NetworkPlayerAnimationProtocol.make_state( - NetworkPlayerAnimationProtocol.LOCOMOTION_IDLE, - true, - ) - assert(NetworkPlayerAnimationProtocol.validate_state(idle)) - var emote := NetworkPlayerAnimationProtocol.make_state( - NetworkPlayerAnimationProtocol.LOCOMOTION_RUNNING, - false, - &"wave_hello", - 17, - 1.25, - ) - assert(NetworkPlayerAnimationProtocol.validate_state(emote)) - var future_locomotion := NetworkPlayerAnimationProtocol.make_state( - &"swimming_fast", - false, - ) - assert(NetworkPlayerAnimationProtocol.validate_state(future_locomotion)) - var extra_future_field: Dictionary = emote.duplicate(true) - extra_future_field["future_layer"] = {"id": "umbrella"} - assert(NetworkPlayerAnimationProtocol.validate_state(extra_future_field)) - - var invalid_action: Dictionary = emote.duplicate(true) - invalid_action["action"] = { - "id": "../unsafe", - "sequence": 17, - "elapsed": 1.25, - } - assert(not NetworkPlayerAnimationProtocol.validate_state(invalid_action)) - var invalid_sequence: Dictionary = emote.duplicate(true) - invalid_sequence["action"] = { - "id": "wave_hello", - "sequence": -1, - "elapsed": 1.25, - } - assert(not NetworkPlayerAnimationProtocol.validate_state(invalid_sequence)) - var invalid_elapsed: Dictionary = emote.duplicate(true) - invalid_elapsed["action"] = { - "id": "wave_hello", - "sequence": 17, - "elapsed": INF, - } - assert(not NetworkPlayerAnimationProtocol.validate_state(invalid_elapsed)) - print("Network player animation protocol validation: PASS") - quit() diff --git a/tests/network_player_animation_protocol_validation.gd.uid b/tests/network_player_animation_protocol_validation.gd.uid deleted file mode 100644 index 017146d..0000000 --- a/tests/network_player_animation_protocol_validation.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://cjgelp62dkykn diff --git a/tests/operator_multiplayer_validation.gd b/tests/operator_multiplayer_validation.gd index 3712fd4..5847aa3 100644 --- a/tests/operator_multiplayer_validation.gd +++ b/tests/operator_multiplayer_validation.gd @@ -88,11 +88,6 @@ func _run_host() -> void: entry.revision, )) assert(not session.is_peer_operator(remote_peer_id)) - await create_timer(2.0).timeout - assert(session.kick_authenticated_peer( - remote_peer_id, - remote_record.identity_fingerprint, - )) var disconnect_deadline: int = Time.get_ticks_msec() + 8000 while ( @@ -178,25 +173,9 @@ func _run_client() -> void: assert(not (tabs.get_child(2) as Button).visible) assert(int(players_page.get("_current_tab")) == 0) service.request_unban.rpc_id(1, SECOND_BANNED_FINGERPRINT) - var disconnect_deadline: int = Time.get_ticks_msec() + 10000 - while ( - Time.get_ticks_msec() < disconnect_deadline - and session.state != NetworkSession.State.SERVER_LOST - ): - await process_frame - assert(session.state == NetworkSession.State.SERVER_LOST) - assert(not bool(main.get("_gameplay_started"))) - var game_ui := main.get_node("%GameUI") as GameUI - var title_screen := game_ui.get_title_screen() - assert(title_screen.visible) - assert(not title_screen.is_awaiting_start_input()) - assert((title_screen.get_node("%Center") as Control).visible) - assert((title_screen.get_node("%ButtonCenter") as Control).visible) - assert(not (title_screen.get_node("%JoinGamePage") as Control).visible) - var feedback := title_screen.get_node("%FeedbackLabel") as RichTextLabel - assert(feedback.visible) - assert("removed by the host" in feedback.text.to_lower()) + await create_timer(1.0).timeout print("Operator multiplayer client validation: PASS") + session.disconnect_session("") main.queue_free() for _frame: int in 4: await process_frame diff --git a/tests/rod_catalog_validation.gd b/tests/rod_catalog_validation.gd deleted file mode 100644 index 3b43b3f..0000000 --- a/tests/rod_catalog_validation.gd +++ /dev/null @@ -1,109 +0,0 @@ -extends SceneTree - -const FishingRodDataType = preload("res://items/fishing_rod_data.gd") -const FishingShopStockType = preload("res://economy/fishing_shop_stock.gd") -const ItemCatalogType = preload("res://items/item_catalog.gd") -const ItemDataType = preload("res://items/item_data.gd") -const OwnedItemType = preload("res://items/owned_item.gd") -const PlayerBagType = preload("res://inventory/player_bag.gd") -const PlayerWalletType = preload("res://economy/player_wallet.gd") - -const ItemCatalogResource: ItemCatalogType = preload( - "res://items/catalog/item_catalog.tres" -) -const RodAttachmentScene = preload( - "res://player/fishing_rod_attachment.tscn" -) - - -func _initialize() -> void: - call_deferred("_run") - - -func _run() -> void: - _validate_catalog_activation() - _validate_shop_stock() - _validate_inactive_save_compatibility() - _validate_fallback_attachment() - print("Rod catalog validation: PASS") - quit() - - -func _validate_catalog_activation() -> void: - var rods: Array[FishingRodDataType] = [] - for item: ItemDataType in ItemCatalogResource.get_valid_items(): - var rod := item as FishingRodDataType - if rod == null: - continue - rods.append(rod) - assert(rod.is_valid()) - if rod.icon == null: - assert(not rod.active) - assert(rods.size() == 21) - var available_rods: Array[FishingRodDataType] = [] - for rod: FishingRodDataType in rods: - if rod.is_available(): - available_rods.append(rod) - assert(available_rods.size() == 1) - var basic: FishingRodDataType = available_rods.front() - assert(basic.item_id == &"basic_fishing_rod") - assert(basic.icon != null) - assert(basic.rod_model_scene == null) - assert( - ItemCatalogResource.get_available_item_by_id(&"aurora_rod") == null - ) - assert(ItemCatalogResource.get_item_by_id(&"aurora_rod") != null) - - -func _validate_shop_stock() -> void: - var stock: Array[FishingRodDataType] = ( - FishingShopStockType.get_rod_stock(ItemCatalogResource) - ) - assert(stock.size() == 1) - assert(stock.front().item_id == &"basic_fishing_rod") - var wallet := PlayerWalletType.new() - wallet.current_balance = 100 - var bag := PlayerBagType.new() - bag.setup(ItemCatalogResource) - assert( - FishingShopStockType.purchase_one( - &"basic_fishing_rod", - wallet, - bag, - ItemCatalogResource, - ) - ) - assert(bag.owns_item(&"basic_fishing_rod")) - assert(wallet.get_balance() == 100) - assert( - not FishingShopStockType.purchase_one( - &"aurora_rod", - wallet, - bag, - ItemCatalogResource, - ) - ) - bag.free() - wallet.free() - - -func _validate_inactive_save_compatibility() -> void: - var bag := PlayerBagType.new() - bag.setup(ItemCatalogResource) - assert(not bag.can_add_item(&"aurora_rod", 1)) - assert(not bag.add_item(&"aurora_rod", 1)) - var legacy_record := OwnedItemType.new() - legacy_record.item_id = &"aurora_rod" - legacy_record.quantity = 1 - var legacy_items: Array[OwnedItemType] = [legacy_record] - assert(bag.replace_all_items(legacy_items)) - assert(bag.owns_item(&"aurora_rod")) - bag.free() - - -func _validate_fallback_attachment() -> void: - var attachment := RodAttachmentScene.instantiate() - assert(attachment.get_node_or_null("FishingRod/FallbackRodMesh") != null) - assert(attachment.get_node_or_null("FishingRod/ModelMount") != null) - assert(attachment.get_node_or_null("FishingRod/FishingRodTip") != null) - attachment.free() diff --git a/tests/rod_catalog_validation.gd.uid b/tests/rod_catalog_validation.gd.uid deleted file mode 100644 index ae0537e..0000000 --- a/tests/rod_catalog_validation.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://bjbgbahx5iuyy diff --git a/tests/world_time_multiplayer_validation.gd b/tests/world_time_multiplayer_validation.gd index cebb0eb..3d1c025 100644 --- a/tests/world_time_multiplayer_validation.gd +++ b/tests/world_time_multiplayer_validation.gd @@ -3,7 +3,7 @@ extends SceneTree const MainScene = preload("res://main/main.tscn") const TEST_PORT: int = 17983 const INITIAL_HOST_TIME: float = 19.75 -const UPDATED_HOST_TIME: float = WorldTimeService.DUSK_END_HOUR +const UPDATED_HOST_TIME: float = 20.75 const TIME_TOLERANCE_HOURS: float = 0.05 @@ -61,31 +61,14 @@ func _run_host() -> void: assert(session.peer_supports_capability( remote_peer_id, NetworkProtocol.WORLD_WEATHER_CAPABILITY )) - var remote_record: PeerRegistry.PeerRecord = session.get_peer_record( - remote_peer_id - ) - assert(remote_record != null and remote_record.identity_authenticated) - assert(session.set_peer_operator( - remote_peer_id, - remote_record.identity_fingerprint, - true, - )) assert(world_time.get_phase() == WorldTimeService.Phase.DUSK) - var command_deadline: int = Time.get_ticks_msec() + 10000 - while ( - Time.get_ticks_msec() < command_deadline - and _wrapped_time_difference( - world_time.get_time_hours(), UPDATED_HOST_TIME - ) > TIME_TOLERANCE_HOURS - ): - await process_frame + await create_timer(1.0).timeout + world_time.synchronize_time(UPDATED_HOST_TIME) assert(is_equal_approx( world_time.get_persistent_time_hours(), UPDATED_HOST_TIME )) - var fog_deadline: int = Time.get_ticks_msec() + 10000 - while Time.get_ticks_msec() < fog_deadline and not world_weather.is_foggy(): - await process_frame + assert(chat_ui.call("_handle_chat_command", "/weather foggy")) assert( world_weather.get_persistent_weather() == WorldWeatherService.Weather.FOGGY @@ -170,11 +153,6 @@ func _run_client() -> void: assert(is_equal_approx(clock_panel.position.y, 10.0)) assert(is_equal_approx(weather_icon.position.y, 10.0)) assert(clock_panel.position.y + clock_panel.size.y < chat_panel.position.y) - var operator_deadline: int = Time.get_ticks_msec() + 10000 - while Time.get_ticks_msec() < operator_deadline and not session.is_local_operator(): - await process_frame - assert(session.is_local_operator()) - assert(chat_ui.call("_handle_chat_command", "/time night")) var update_deadline: int = Time.get_ticks_msec() + 10000 while ( @@ -190,8 +168,6 @@ func _run_client() -> void: assert(world_time.get_phase() == WorldTimeService.Phase.NIGHT) assert(is_equal_approx(world_time.get_persistent_time_hours(), 15.25)) assert(clock_label.text == world_time.get_clock_text()) - await create_timer(0.6).timeout - assert(chat_ui.call("_handle_chat_command", "/weather foggy")) var fog_deadline: int = Time.get_ticks_msec() + 8000 while ( Time.get_ticks_msec() < fog_deadline diff --git a/tests/world_weather_validation.gd b/tests/world_weather_validation.gd index a725117..01ac8e1 100644 --- a/tests/world_weather_validation.gd +++ b/tests/world_weather_validation.gd @@ -456,14 +456,8 @@ func _validate_weather_presentation() -> void: assert(rain.emitting) assert(rain.amount_ratio > 0.99) assert(rain.amount == WorldTimeVisualControllerType.RAIN_PARTICLE_AMOUNT) - assert(rain.visibility_aabb == ( - WorldTimeVisualControllerType.RAIN_VISIBILITY_AABB - )) var rain_material := rain.process_material as ParticleProcessMaterial assert(rain_material != null) - assert(rain_material.emission_box_extents.is_equal_approx( - WorldTimeVisualControllerType.RAIN_EMISSION_EXTENTS - )) assert(is_equal_approx( rain_material.initial_velocity_min, WorldTimeVisualControllerType.RAIN_VELOCITY_MIN, diff --git a/ui/chat_ui.gd b/ui/chat_ui.gd index c080a04..bf38a75 100644 --- a/ui/chat_ui.gd +++ b/ui/chat_ui.gd @@ -181,7 +181,6 @@ func setup( _service.local_message_confirmed.connect(_on_local_message_confirmed) _service.history_replaced.connect(_on_history) _service.send_rejected.connect(_on_rejected) - _service.world_command_finished.connect(_on_world_command_finished) _session.peer_removed.connect(_on_peer_removed) _entry.text = _settings.current_settings.chat_draft _entry.caret_column = _entry.text.length() @@ -790,16 +789,34 @@ func _handle_time_command(parts: PackedStringArray) -> void: if parts.size() != 2: _set_status("Usage: /time [dawn, day, dusk, night]") return - if _service == null or _world_time == null: + if _session == null or not _session.is_host(): + _set_status("Only the host can change world time.") + return + if _world_time == null: _set_status("World time is unavailable.") return var phase_name := String(parts[1]).to_lower() - if phase_name not in ["dawn", "day", "dusk", "night"]: - _set_status("Usage: /time [dawn, day, dusk, night]") - return - if not _service.request_world_time_change(phase_name): - _set_status("Only the host or an operator can change world time.") + var target_hour: float + match phase_name: + "dawn": + target_hour = WorldTimeServiceType.DAWN_START_HOUR + "day": + target_hour = WorldTimeServiceType.DAWN_END_HOUR + "dusk": + target_hour = WorldTimeServiceType.DUSK_START_HOUR + "night": + target_hour = WorldTimeServiceType.DUSK_END_HOUR + _: + _set_status("Usage: /time [dawn, day, dusk, night]") + return + if not _world_time.set_authoritative_time(target_hour): + _set_status("World time could not be changed.") return + _set_status("") + _service.broadcast_system_message( + "World time set to %s (%s)." + % [phase_name, _world_time.get_clock_text()] + ) close_chat() @@ -807,31 +824,37 @@ func _handle_weather_command(parts: PackedStringArray) -> void: if parts.size() != 2: _set_status("Usage: /weather [clear, cloudy, rainy, foggy]") return - if _service == null or _world_weather == null: + if _session == null or not _session.is_host(): + _set_status("Only the host can change world weather.") + return + if _world_weather == null: _set_status("World weather is unavailable.") return var weather_name := String(parts[1]).to_lower() + var target_weather: WorldWeatherServiceType.Weather match weather_name: "clear", "sunny": + target_weather = WorldWeatherServiceType.Weather.SUNNY weather_name = "clear" - "cloudy", "rainy", "foggy": - pass + "cloudy": + target_weather = WorldWeatherServiceType.Weather.CLOUDY + "rainy": + target_weather = WorldWeatherServiceType.Weather.RAINY + "foggy": + target_weather = WorldWeatherServiceType.Weather.FOGGY _: _set_status("Usage: /weather [clear, cloudy, rainy, foggy]") return - if not _service.request_world_weather_change(weather_name): - _set_status("Only the host or an operator can change world weather.") + if not _world_weather.set_authoritative_weather(target_weather): + _set_status("World weather could not be changed.") return + _set_status("") + _service.broadcast_system_message( + "World weather set to %s." % weather_name + ) close_chat() -func _on_world_command_finished(success: bool, message: String) -> void: - if success: - _set_status("") - elif not message.is_empty(): - _set_status(message) - - func _on_local_message_confirmed(message: Dictionary) -> void: if ( not _send_pending diff --git a/ui/components/bubble_hotbar/bubble_hotbar_slot.gd b/ui/components/bubble_hotbar/bubble_hotbar_slot.gd index 6c9764a..4bebdfe 100644 --- a/ui/components/bubble_hotbar/bubble_hotbar_slot.gd +++ b/ui/components/bubble_hotbar/bubble_hotbar_slot.gd @@ -377,7 +377,7 @@ func _can_drop_data(_at_position: Vector2, data: Variant) -> bool: if _bag == null or not _bag.owns_item(item_id) or _catalog == null: return false var item: ItemDataType = _catalog.get_item_by_id(item_id) - return item != null and item.is_available() and item.hotbar_allowed + return item != null and item.is_valid() and item.hotbar_allowed if kind == "cooler_fish": var catch_id: StringName = StringName(str(payload.get("catch_id", ""))) return ( diff --git a/ui/fishing_shop.gd b/ui/fishing_shop.gd index ff1a44e..d8678b7 100644 --- a/ui/fishing_shop.gd +++ b/ui/fishing_shop.gd @@ -8,7 +8,6 @@ const PlayerWalletType = preload("res://economy/player_wallet.gd") const FishingShopStockType = preload("res://economy/fishing_shop_stock.gd") const ItemCatalogType = preload("res://items/item_catalog.gd") const ItemDataType = preload("res://items/item_data.gd") -const FishingRodDataType = preload("res://items/fishing_rod_data.gd") const PlayerBagType = preload("res://inventory/player_bag.gd") const FishingSpotType = preload("res://fishing/fishing_spot.gd") const PlayerFishingUpgradesType = preload( @@ -83,15 +82,6 @@ const SUPPLY_PRICE_HEIGHT: float = 24.0 const SUPPLY_PRICE_HORIZONTAL_PADDING: float = 12.0 const SUPPLY_PRICE_ICON_SIZE: float = 18.0 const SUPPLY_PRICE_ICON_GAP: float = 3.0 -const ROD_CARD_TILE_SIZE := Vector2(144.0, 144.0) -const ROD_CARD_HOST_SIZE := Vector2(152.0, 198.0) -const ROD_CAROUSEL_HEIGHT: float = 206.0 -const ROD_CAROUSEL_SEPARATION: int = 12 -const ROD_CAROUSEL_STEP: float = 328.0 -const ROD_PRICE_Y: float = 128.0 -const ROD_PRICE_HEIGHT: float = 30.0 -const ROD_PRICE_FONT_SIZE: int = 18 -const ROD_PRICE_ICON_SIZE: float = 22.0 @onready var _wallet_label: Label = %WalletLabel @onready var _shop_panel: PanelContainer = %ShopPanel @@ -660,12 +650,7 @@ func _refresh_supplies() -> void: stock_item_ids = grouped_item_ids var current_stock_group: StringName = StringName() var current_stock_grid: GridContainer - if _shop_section == ShopSection.SNACKS: - current_stock_grid = _add_stock_icon_grid() - elif _shop_section == ShopSection.EQUIPMENT: - _add_stock_section("rods") - _add_rod_carousel() - _add_stock_section("equipment") + if _shop_section in [ShopSection.SNACKS, ShopSection.EQUIPMENT]: current_stock_grid = _add_stock_icon_grid() for item_id: StringName in stock_item_ids: var item: ItemDataType = _item_catalog.get_item_by_id(item_id) @@ -686,10 +671,6 @@ func _refresh_supplies() -> void: button.alignment = HORIZONTAL_ALIGNMENT_LEFT var owned: int = _bag.get_quantity(item_id) var bait_topoff: bool = FishingShopStockType.is_bait_topoff(item_id) - var permanent_unlock: bool = ( - FishingShopStockType.is_permanent_unlock(item_id, item) - ) - var unlock_status: String = _unlock_status(owned > 0) var bait_unlocked: bool = ( not bait_topoff or _bag.is_bait_unlocked(item_id) ) @@ -702,11 +683,10 @@ func _refresh_supplies() -> void: var use_icon_tile: bool = ( current_stock_grid != null ) - button.text = ( - "%s\n%s" % [item.display_name, unlock_status] - if permanent_unlock - else "%s\nowned %d" % [item.display_name, owned] - ) + button.text = "%s\nowned %d" % [ + item.display_name, + owned, + ] var item_tooltip_text: String = item.description if bait_topoff: if use_icon_tile: @@ -744,19 +724,11 @@ func _refresh_supplies() -> void: button.size_flags_horizontal = Control.SIZE_SHRINK_BEGIN button.alignment = HORIZONTAL_ALIGNMENT_CENTER button.text = "" - item_tooltip_text = ( - "%s\n%s\n%s" % [ - item.display_name, - unlock_status, - item.description, - ] - if permanent_unlock - else "%s\nowned %d\n%s" % [ - item.display_name, - owned, - item.description, - ] - ) + item_tooltip_text = "%s\nowned %d\n%s" % [ + item.display_name, + owned, + item.description, + ] button.disabled = ( _transaction_in_progress or _closing @@ -805,8 +777,6 @@ func _refresh_supplies() -> void: func _item_belongs_in_current_section(item: ItemDataType) -> bool: - if not item.is_available(): - return false match _shop_section: ShopSection.BAIT: return item.is_bait() or item.is_lure() @@ -817,10 +787,6 @@ func _item_belongs_in_current_section(item: ItemDataType) -> bool: return false -func _unlock_status(unlocked: bool) -> String: - return "unlocked" if unlocked else "locked" - - func _add_stock_section(title: String) -> void: var label := Label.new() label.text = title @@ -845,156 +811,21 @@ func _add_stock_icon_grid() -> GridContainer: return grid -func _add_rod_carousel() -> void: - var shell := HBoxContainer.new() - shell.name = "RodCarousel" - shell.custom_minimum_size.y = ROD_CAROUSEL_HEIGHT - shell.size_flags_horizontal = Control.SIZE_EXPAND_FILL - shell.alignment = BoxContainer.ALIGNMENT_CENTER - shell.add_theme_constant_override("separation", 8) - _supplies_list.add_child(shell) - var previous := Button.new() - previous.name = "PreviousRod" - previous.text = "‹" - previous.tooltip_text = "Previous rods" - previous.custom_minimum_size = Vector2(42.0, 72.0) - previous.focus_mode = Control.FOCUS_ALL - UtilityPageStyleType.apply_ocean_button(previous) - shell.add_child(previous) - var scroll := ScrollContainer.new() - scroll.name = "RodScroll" - scroll.custom_minimum_size.y = ROD_CAROUSEL_HEIGHT - scroll.size_flags_horizontal = Control.SIZE_EXPAND_FILL - scroll.horizontal_scroll_mode = ScrollContainer.SCROLL_MODE_AUTO - scroll.vertical_scroll_mode = ScrollContainer.SCROLL_MODE_DISABLED - scroll.follow_focus = true - shell.add_child(scroll) - var row := HBoxContainer.new() - row.name = "RodCards" - row.size_flags_horizontal = Control.SIZE_EXPAND_FILL - row.add_theme_constant_override( - "separation", ROD_CAROUSEL_SEPARATION - ) - scroll.add_child(row) - var rods: Array[FishingRodDataType] = ( - FishingShopStockType.get_rod_stock(_item_catalog) - ) - for rod: FishingRodDataType in rods: - _add_rod_card(row, rod) - var next := Button.new() - next.name = "NextRod" - next.text = "›" - next.tooltip_text = "Next rods" - next.custom_minimum_size = Vector2(42.0, 72.0) - next.focus_mode = Control.FOCUS_ALL - UtilityPageStyleType.apply_ocean_button(next) - shell.add_child(next) - previous.disabled = rods.size() <= 1 - next.disabled = rods.size() <= 1 - previous.pressed.connect( - _scroll_rod_carousel.bind(scroll, -ROD_CAROUSEL_STEP) - ) - next.pressed.connect( - _scroll_rod_carousel.bind(scroll, ROD_CAROUSEL_STEP) - ) - - -func _add_rod_card(parent: HBoxContainer, rod: FishingRodDataType) -> void: - var owned: bool = _bag.owns_item(rod.item_id) - var level: int = _player.experience.get_level() - var level_locked: bool = level < rod.unlock_level - var tooltip := "%s\n%s" % [rod.display_name, rod.description] - if not rod.effect_summary.strip_edges().is_empty(): - tooltip += "\n%s" % rod.effect_summary - if not rod.tradeoff.strip_edges().is_empty(): - tooltip += "\ntradeoff: %s" % rod.tradeoff - tooltip += "\nlevel %d" % rod.unlock_level - tooltip += "\n%s" % _unlock_status(owned) - var button := _make_stock_button("", tooltip) - button.name = "Rod_%s" % str(rod.item_id) - button.custom_minimum_size = ROD_CARD_TILE_SIZE - button.size = ROD_CARD_TILE_SIZE - button.size_flags_horizontal = Control.SIZE_SHRINK_BEGIN - button.icon = rod.icon - button.expand_icon = true - button.alignment = HORIZONTAL_ALIGNMENT_CENTER - button.texture_filter = CanvasItem.TEXTURE_FILTER_NEAREST - button.disabled = ( - owned - or level_locked - or _transaction_in_progress - or _closing - or _network_shop == null - or not _network_shop.can_request_purchase() - or not _wallet.can_afford(rod.shop_price) - or not _bag.can_add_item(rod.item_id, 1) - ) - button.pressed.connect(_purchase_rod.bind(rod.item_id)) - var host: Control = _add_supply_icon_tile( - parent, - button, - rod.shop_price, - ROD_CARD_TILE_SIZE, - ROD_CARD_HOST_SIZE, - ROD_PRICE_Y, - ROD_PRICE_HEIGHT, - ROD_PRICE_FONT_SIZE, - ROD_PRICE_ICON_SIZE, - ) - var name_label := Label.new() - name_label.name = "RodName" - name_label.position = Vector2(0.0, 162.0) - name_label.size = Vector2(ROD_CARD_HOST_SIZE.x, 30.0) - name_label.mouse_filter = Control.MOUSE_FILTER_IGNORE - name_label.text = rod.display_name - name_label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER - name_label.vertical_alignment = VERTICAL_ALIGNMENT_CENTER - name_label.text_overrun_behavior = TextServer.OVERRUN_TRIM_ELLIPSIS - name_label.add_theme_font_override("font", UtilityPageStyleType.TuffyFont) - name_label.add_theme_font_size_override("font_size", 17) - name_label.add_theme_color_override( - "font_color", UtilityPageStyleType.OCEAN_TEXT_PRIMARY - ) - host.add_child(name_label) - - -func _scroll_rod_carousel(scroll: ScrollContainer, amount: float) -> void: - var target: float = clampf( - float(scroll.scroll_horizontal) + amount, - 0.0, - maxf( - scroll.get_h_scroll_bar().max_value - - scroll.get_h_scroll_bar().page, - 0.0, - ), - ) - var tween := create_tween() - tween.set_trans(Tween.TRANS_QUAD) - tween.set_ease(Tween.EASE_OUT) - tween.tween_method( - func(value: float) -> void: - scroll.scroll_horizontal = roundi(value), - float(scroll.scroll_horizontal), - target, - 0.15, - ) - - func _add_art_kit_button(parent: GridContainer) -> void: var item: ItemDataType = _item_catalog.get_item_by_id( ArtShopStockType.ART_KIT_ITEM_ID ) - if item == null or not item.is_available(): + if item == null: return var owned: bool = _bag.get_quantity(ArtShopStockType.ART_KIT_ITEM_ID) > 0 var button: Button = _make_stock_button( "%s\n%s" % [ item.display_name, - _unlock_status(owned), + "owned" if owned else "not owned", ], "%s\n%s\n%s" % [ item.display_name, - _unlock_status(owned), + "owned" if owned else "not owned", item.description, ], ) @@ -1111,35 +942,29 @@ func _configure_marker_icon_tile( func _add_supply_icon_tile( - parent: Container, + parent: GridContainer, button: Button, price: int, - tile_size: Vector2 = SUPPLY_ICON_TILE_SIZE, - host_size: Vector2 = SUPPLY_ICON_HOST_SIZE, - price_y: float = SUPPLY_PRICE_Y, - price_height: float = SUPPLY_PRICE_HEIGHT, - price_font_size: int = SUPPLY_PRICE_FONT_SIZE, - price_icon_size: float = SUPPLY_PRICE_ICON_SIZE, -) -> Control: +) -> void: var tile_host := Control.new() - tile_host.custom_minimum_size = host_size + tile_host.custom_minimum_size = SUPPLY_ICON_HOST_SIZE tile_host.mouse_filter = Control.MOUSE_FILTER_IGNORE parent.add_child(tile_host) button.position = Vector2.ZERO - button.size = tile_size + button.size = SUPPLY_ICON_TILE_SIZE tile_host.add_child(button) var price_text := str(price) var price_text_width: float = UtilityPageStyleType.TuffyFont.get_string_size( price_text, HORIZONTAL_ALIGNMENT_LEFT, -1.0, - price_font_size, + SUPPLY_PRICE_FONT_SIZE, ).x var price_width: float = minf( - tile_size.x, + SUPPLY_ICON_TILE_SIZE.x, ceilf( price_text_width - + price_icon_size + + SUPPLY_PRICE_ICON_SIZE + SUPPLY_PRICE_ICON_GAP + SUPPLY_PRICE_HORIZONTAL_PADDING ), @@ -1147,10 +972,10 @@ func _add_supply_icon_tile( var price_bubble := PanelContainer.new() price_bubble.name = "PriceBubble" price_bubble.position = Vector2( - (tile_size.x - price_width) * 0.5, - price_y, + (SUPPLY_ICON_TILE_SIZE.x - price_width) * 0.5, + SUPPLY_PRICE_Y, ) - price_bubble.size = Vector2(price_width, price_height) + price_bubble.size = Vector2(price_width, SUPPLY_PRICE_HEIGHT) price_bubble.mouse_filter = Control.MOUSE_FILTER_IGNORE price_bubble.z_index = 2 var price_style := UtilityPageStyleType.rounded_style( @@ -1173,7 +998,7 @@ func _add_supply_icon_tile( price_bubble.add_child(price_row) var price_icon := TextureRect.new() price_icon.name = "CurrencyIcon" - price_icon.custom_minimum_size = Vector2.ONE * price_icon_size + price_icon.custom_minimum_size = Vector2.ONE * SUPPLY_PRICE_ICON_SIZE price_icon.mouse_filter = Control.MOUSE_FILTER_IGNORE price_icon.texture = CURRENCY_ICON price_icon.expand_mode = TextureRect.EXPAND_IGNORE_SIZE @@ -1190,14 +1015,13 @@ func _add_supply_icon_tile( "font", UtilityPageStyleType.TuffyFont ) price_label.add_theme_font_size_override( - "font_size", price_font_size + "font_size", SUPPLY_PRICE_FONT_SIZE ) price_label.add_theme_color_override( "font_color", SUPPLY_PRICE_COLOR ) price_label.add_theme_constant_override("outline_size", 0) price_row.add_child(price_label) - return tile_host func _refresh_cooler_capacity() -> void: @@ -1249,7 +1073,7 @@ func _purchase_supply(item_id: StringName) -> void: return var owned: int = _bag.get_quantity(item_id) var item: ItemDataType = _item_catalog.get_item_by_id(item_id) - if item == null or not item.is_available(): + if item == null: _set_feedback("Purchase could not be completed.") return var quantity: int = FishingShopStockType.get_purchase_quantity( @@ -1270,23 +1094,6 @@ func _purchase_supply(item_id: StringName) -> void: _network_shop.request_supply(item_id) -func _purchase_rod(item_id: StringName) -> void: - if _network_shop == null or not _is_transaction_context_valid(): - _set_feedback("Purchase could not be completed.") - return - var rod := _item_catalog.get_item_by_id(item_id) as FishingRodDataType - if ( - rod == null - or not rod.is_shop_available() - or _bag.owns_item(item_id) - or not _wallet.can_afford(rod.shop_price) - or not _bag.can_add_item(item_id, 1) - ): - _set_feedback("Purchase could not be completed.") - return - _network_shop.request_rod(item_id) - - func _purchase_art_kit() -> void: if _network_shop == null or not _is_transaction_context_valid(): _set_feedback("Purchase could not be completed.") diff --git a/ui/logbook_catalog.gd b/ui/logbook_catalog.gd index 9bff3cc..1ba1a1e 100644 --- a/ui/logbook_catalog.gd +++ b/ui/logbook_catalog.gd @@ -3,6 +3,281 @@ extends RefCounted const FishDataType = preload("res://fish/fish_data.gd") +# Catalog numbers are a presentation contract. Add future species deliberately; +# filtering and display order must not redefine an existing number. +const CATALOG_ORDER: Array[StringName] = [ + &"bluegill", + &"bass", + &"carp", + &"sunfish", + &"catfish_blue", + &"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", + &"anchovy_european", + &"anchovy_northern", + &"chub_european", + &"chub_flame", + &"chub_lake", + &"goldfish", + &"goldfish_bubbleeye", + &"grouper_gulf", + &"grouper_red", + &"mackerel_atlantic", + &"mackerel_cero", + &"mackerel_chub", + &"mackerel_king", + &"mackerel_spanish", + &"marlin_black", + &"marlin_blue", + &"marlin_white", + &"pomfret_black", + &"pomfret_chinese", + &"pomfret_golden", + &"pomfret_white", + &"sailfish", + &"sauger", + &"saugeye", + &"snapper_lane", + &"snapper_mangrove", + &"snapper_mutton", + &"snapper_red", + &"swordfish", + &"trout_cutthroat", + &"trout_golden", + &"trout_rainbow", + &"trout_steelhead", + &"walleye", +] + +# Short presentation notes are kept here with the catalog contract rather +# than mixed into gameplay balance resources. Add facts deliberately when a +# species joins the catalog. +const FISH_FACTS: Dictionary[StringName, String] = { + &"bluegill": ( + "bluegill fathers sweep shallow bowls into the bottom for nests, " + + "then stand guard. whole neighborhoods of nests can crowd together." + ), + &"bass": ( + "striped bass split their lives between salt and fresh water, " + + "returning upriver to spawn. a long-lived striper may see three decades." + ), + &"carp": ( + "whisker-like barbels help a common carp investigate the bottom. " + + "nosing through sediment can cloud the water and loosen plants." + ), + &"sunfish": ( + "ocean sunfish are built more like enormous swimming heads than " + + "ordinary fish. they visit the surface and turn sideways to warm up." + ), + &"catfish_blue": ( + "a deep fork in the tail inspired the blue catfish's scientific " + + "name. it rests deep by daylight and becomes more active after dark." + ), + &"catfish_channel": ( + "a channel catfish can taste through skin all over its body, " + + "especially near its gills and whiskers. the male watches the eggs." + ), + &"catfish_flathead": ( + "flatheads favor hideouts made by logs, rocks, ledges, and other " + + "underwater structure. as they grow, fish dominate their menu." + ), + &"catfish_white": ( + "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." + ), + &"anchovy_european": ( + "european anchovies form dense schools and feed by filtering tiny " + + "plankton from coastal water." + ), + &"anchovy_northern": ( + "northern anchovies gather in huge schools along the pacific coast " + + "and filter plankton with their fine gill rakers." + ), + &"chub_european": ( + "european chub are adaptable river fish. adults often patrol " + + "shallows and feed on insects, small fish, and fruit." + ), + &"chub_flame": ( + "flame chubs prefer cool, clear streams. their bright breeding colors " + + "make a small fish easy to spot in spring water." + ), + &"chub_lake": ( + "lake chubs school in cold northern water and use their small mouths " + + "to pick insects and other tiny prey from the current." + ), + &"goldfish": ( + "goldfish can tolerate a surprisingly wide range of conditions. " + + "their wild relatives often live in slow, weedy water." + ), + &"goldfish_bubbleeye": ( + "bubble-eye goldfish have delicate fluid-filled sacs beneath their " + + "eyes, making careful handling especially important." + ), + &"grouper_gulf": ( + "gulf grouper are ambush predators that use a sudden gulp to pull " + + "prey into their cavernous mouths." + ), + &"grouper_red": ( + "red grouper excavate shelters in reef rubble. the hollows they make " + + "can become hiding places for many smaller animals." + ), + &"mackerel_atlantic": ( + "atlantic mackerel travel in fast schools across the north atlantic " + + "and feed on plankton and small schooling fish." + ), + &"mackerel_cero": ( + "cero mackerel are streamlined coastal hunters. sharp teeth help " + + "them slash through schools of smaller fish." + ), + &"mackerel_chub": ( + "chub mackerel school near the surface and follow plankton blooms. " + + "their dark wavy bars help identify them at a glance." + ), + &"mackerel_king": ( + "king mackerel are swift coastal predators. their pointed teeth and " + + "long body are built for sudden bursts of speed." + ), + &"mackerel_spanish": ( + "spanish mackerel hunt in warm coastal waters and often travel in " + + "loose schools while chasing baitfish." + ), + &"marlin_black": ( + "black marlin are powerful billfish that spend much of their lives " + + "in warm open ocean and can make blistering runs." + ), + &"marlin_blue": ( + "blue marlin are highly migratory open-ocean hunters. their long bill " + + "helps them stun prey before turning back to feed." + ), + &"marlin_white": ( + "white marlin favor warm offshore water and use their rounded dorsal " + + "fin and bill to weave through schools of prey." + ), + &"pomfret_black": ( + "black pomfret have a deep, laterally compressed body that lets them " + + "maneuver neatly through open water." + ), + &"pomfret_chinese": ( + "chinese pomfret are silvery schooling fish with a tall, flattened " + + "body and long sickle-shaped fins." + ), + &"pomfret_golden": ( + "golden pomfret are warm-water swimmers whose golden sheen is most " + + "noticeable along the fins and flanks." + ), + &"pomfret_white": ( + "white pomfret gather over coastal grounds and use their compact, " + + "deep bodies to turn quickly while feeding." + ), + &"sailfish": ( + "sailfish raise their enormous dorsal fin while herding baitfish. " + + "they are among the fastest fish in the sea." + ), + &"sauger": ( + "sauger favor turbid rivers and reservoirs. their mottled backs " + + "blend into the dim, shifting light near the bottom." + ), + &"saugeye": ( + "saugeye are a fertile hybrid of sauger and walleye. they combine " + + "traits from both parent species and often grow quickly." + ), + &"snapper_lane": ( + "lane snapper use reef structure for cover and hunt small crustaceans " + + "and fish when the light begins to fade." + ), + &"snapper_mangrove": ( + "mangrove snapper shelter among roots and docks when young, then " + + "move toward reefs as they grow." + ), + &"snapper_mutton": ( + "mutton snapper have canine teeth that help them pick crabs, shrimp, " + + "and other hard-shelled prey from the reef." + ), + &"snapper_red": ( + "red snapper gather around reefs, wrecks, and ledges. their diet " + + "includes small fish, shrimp, and squid." + ), + &"swordfish": ( + "swordfish are fast, wide-ranging predators with a flattened bill. " + + "they can cross deep water and warm surface layers in one day." + ), + &"trout_cutthroat": ( + "cutthroat trout take their name from the red slash beneath the jaw. " + + "many populations rely on cold, well-oxygenated streams." + ), + &"trout_golden": ( + "golden trout evolved in clear, high-elevation california streams. " + + "their bright flanks stand out against rocky alpine water." + ), + &"trout_rainbow": ( + "rainbow trout are adaptable stream hunters. the pink lateral stripe " + + "is especially vivid when the fish is in breeding condition." + ), + &"trout_steelhead": ( + "steelhead are the ocean-going form of rainbow trout. adults can " + + "leave fresh water and later return to spawn." + ), + &"walleye": ( + "walleye have light-sensitive eyes that help them hunt in murky water " + + "and around dusk. their reflective layer gives the eyes a pale glow." + ), +} static func category_for(fish: FishDataType) -> WaterType.Type: if fish == null: @@ -24,27 +299,24 @@ static func empty_state(category: WaterType.Type) -> String: return "No entries available." -static func catalog_number(fish: FishDataType) -> int: - return fish.catalog_number if fish != null else 0 +static func catalog_number(fish_id: StringName) -> int: + var index: int = CATALOG_ORDER.find(fish_id) + return index + 1 if index >= 0 else 0 -static func facts_for(fish: FishDataType) -> String: - if fish == null or fish.logbook_fact.strip_edges().is_empty(): - return "unknown" - return fish.logbook_fact +static func facts_for(fish_id: StringName) -> String: + return str(FISH_FACTS.get(fish_id, "unknown")) static func ordered_species( candidates: Array[FishDataType], ) -> Array[FishDataType]: - var ordered: Array[FishDataType] = [] + var by_id: Dictionary[StringName, FishDataType] = {} for fish: FishDataType in candidates: - if fish != null and fish.active and not fish.id.is_empty(): - ordered.append(fish) - ordered.sort_custom( - func(a: FishDataType, b: FishDataType) -> bool: - if a.catalog_number == b.catalog_number: - return String(a.id) < String(b.id) - return a.catalog_number < b.catalog_number - ) + if fish != null and not fish.id.is_empty(): + by_id[fish.id] = fish + var ordered: Array[FishDataType] = [] + for fish_id: StringName in CATALOG_ORDER: + if by_id.has(fish_id): + ordered.append(by_id[fish_id]) return ordered diff --git a/ui/logbook_page.gd b/ui/logbook_page.gd index c579084..ee63797 100644 --- a/ui/logbook_page.gd +++ b/ui/logbook_page.gd @@ -654,7 +654,7 @@ func _refresh_details(animate: bool) -> void: func _build_known_details(fish: FishDataType) -> void: _clear_details() - var catalog_number: int = LogbookCatalog.catalog_number(fish) + var catalog_number: int = LogbookCatalog.catalog_number(fish.id) var summary_margin := MarginContainer.new() summary_margin.size_flags_horizontal = Control.SIZE_EXPAND_FILL _set_margins(summary_margin, 40, 0, 40, 0) @@ -719,7 +719,7 @@ func _build_known_details(fish: FishDataType) -> void: summary_columns.add_child(facts_column) var facts_heading := _field_label("fish facts", 16) facts_column.add_child(facts_heading) - var facts := _label(LogbookCatalog.facts_for(fish), 16) + var facts := _label(LogbookCatalog.facts_for(fish.id), 16) facts.autowrap_mode = TextServer.AUTOWRAP_WORD_SMART facts.size_flags_horizontal = Control.SIZE_EXPAND_FILL facts_column.add_child(facts) @@ -999,7 +999,7 @@ func _on_inventory_changed() -> void: func _unknown_selection_key(fish: FishDataType) -> StringName: - var number: int = LogbookCatalog.catalog_number(fish) + var number: int = LogbookCatalog.catalog_number(fish.id) return StringName("unknown_%d" % number) diff --git a/ui/network/join_game_page.gd b/ui/network/join_game_page.gd index ca3fbe5..1788ea5 100644 --- a/ui/network/join_game_page.gd +++ b/ui/network/join_game_page.gd @@ -62,7 +62,6 @@ var _discovery_refresh_timer: Timer var _editing_entry_id: String = "" var _name_entry_active: bool = false var _delete_armed: bool = false -var _connection_error_latched: bool = false func _ready() -> void: @@ -182,7 +181,7 @@ func open_page(preserved_endpoint: String = "") -> void: _address.text = "127.0.0.1:7777" show() UtilityPageStyle.animate_in(self) - _set_mode(_mode, false) + _set_mode(_mode) if _mode == Mode.DIRECT: _address.grab_focus() _address.select_all() @@ -202,13 +201,10 @@ func get_endpoint_text() -> String: func set_status(message: String) -> void: - _connection_error_latched = true _set_status(_friendly_connection_message(message), true) -func _set_mode(mode: Mode, clear_connection_error: bool = true) -> void: - if clear_connection_error: - _connection_error_latched = false +func _set_mode(mode: Mode) -> void: _mode = mode _selected_entry = null _selected_discovery_index = -1 @@ -229,7 +225,6 @@ func _set_mode(mode: Mode, clear_connection_error: bool = true) -> void: func _request_join() -> void: - _connection_error_latched = false if _network_session.state in [ NetworkSession.State.CONNECTION_FAILED, NetworkSession.State.SERVER_LOST, @@ -272,10 +267,6 @@ func _on_public_join_prepared(endpoint_text: String) -> void: func _on_public_join_status_changed(message: String, is_error: bool) -> void: if _mode == Mode.DISCOVER and is_visible_in_tree(): - if is_error: - _connection_error_latched = true - elif _connection_error_latched: - return _set_status(message, is_error) _refresh() @@ -717,11 +708,7 @@ func _on_discovery_rooms_updated(rooms: Array[Dictionary]) -> void: func _on_discovery_status_changed(message: String, is_error: bool) -> void: - if ( - _mode == Mode.DISCOVER - and is_visible_in_tree() - and not _connection_error_latched - ): + if _mode == Mode.DISCOVER and is_visible_in_tree(): _set_status(message, is_error) @@ -753,7 +740,6 @@ func _friendly_connection_message(message: String) -> String: return "Connection cancelled." if ( "timeout" in normalized - or "timed out" in normalized or "unavailable" in normalized or "refused" in normalized or "reach" in normalized @@ -783,7 +769,6 @@ func _clear_edit_state() -> void: func _on_cancel_pressed() -> void: - _connection_error_latched = false if _network_session != null: _network_session.cancel_connection() _refresh() @@ -810,14 +795,11 @@ func _on_state_changed(_state: NetworkSession.State) -> void: func _on_status_message_changed(message: String) -> void: - if _connection_error_latched: - return _set_status(_friendly_connection_message(message)) _refresh() func _on_connection_error(message: String) -> void: - _connection_error_latched = true _set_status(_friendly_connection_message(message), true) _refresh() diff --git a/ui/player_menu.gd b/ui/player_menu.gd index 6c5d2f2..7f73acd 100644 --- a/ui/player_menu.gd +++ b/ui/player_menu.gd @@ -4334,7 +4334,7 @@ func _refresh_logbook() -> void: var valid_species: Array[FishDataType] = [] if _catalog != null: for fish: FishDataType in _catalog.candidates: - if fish != null and fish.active and not fish.id.is_empty(): + if fish != null and not fish.id.is_empty(): valid_species.append(fish) _logbook_species = valid_species _logbook_empty.visible = valid_species.is_empty() diff --git a/ui/the_net_page.gd b/ui/the_net_page.gd index ff83a11..a60bc26 100644 --- a/ui/the_net_page.gd +++ b/ui/the_net_page.gd @@ -158,8 +158,6 @@ func _build_laptop() -> void: ) forecast_stack.add_child(forecast_heading) _forecast_list = HBoxContainer.new() - _forecast_list.custom_minimum_size = Vector2(272.0, 66.0) - _forecast_list.size_flags_horizontal = Control.SIZE_EXPAND_FILL _forecast_list.alignment = BoxContainer.ALIGNMENT_CENTER _forecast_list.add_theme_constant_override("separation", 6) forecast_stack.add_child(_forecast_list) @@ -503,10 +501,7 @@ func _daily_refresh_text() -> String: func _add_forecast_empty(message: String) -> void: var label := Label.new() label.text = message - label.custom_minimum_size = Vector2(252.0, 66.0) - label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER - label.vertical_alignment = VERTICAL_ALIGNMENT_CENTER - label.autowrap_mode = TextServer.AUTOWRAP_OFF + label.autowrap_mode = TextServer.AUTOWRAP_WORD_SMART label.add_theme_color_override( "font_color", UtilityPageStyle.OCEAN_TEXT_SECONDARY ) diff --git a/ui/title_screen.gd b/ui/title_screen.gd index 9e17d3e..54cfcf7 100644 --- a/ui/title_screen.gd +++ b/ui/title_screen.gd @@ -276,19 +276,6 @@ func reopen() -> void: _start_entry_prompt_animation() -func reopen_to_menu() -> void: - reopen() - _awaiting_start_input = false - _stop_entry_prompt_animation() - _start_prompt_center.hide() - _presentation_center.show() - _button_center.show() - var bubble_field := get_node_or_null("%BubbleField") as Control - if bubble_field != null: - bubble_field.show() - _set_title_bubbles_interactive(true) - - func open_join_game_page(endpoint: String = "") -> void: _cancel_title_entry_transition() _awaiting_start_input = false diff --git a/ui/title_screen.tscn b/ui/title_screen.tscn index ae0c0c6..c79e894 100644 --- a/ui/title_screen.tscn +++ b/ui/title_screen.tscn @@ -221,7 +221,7 @@ unique_name_in_owner = true layout_mode = 2 theme_override_colors/font_color = Color(0.682, 0.733, 0.761, 1) theme_override_font_sizes/font_size = 22 -text = "v0.7.1-alpha" +text = "v0.6.8-alpha" horizontal_alignment = 1 [node name="Spacer" type="Control" parent="ResponsiveTitleStage/TitlePresentationScaleRoot/Center/MainContent"] diff --git a/world/world_time_visual_controller.gd b/world/world_time_visual_controller.gd index 99b0429..231bbfd 100644 --- a/world/world_time_visual_controller.gd +++ b/world/world_time_visual_controller.gd @@ -5,12 +5,7 @@ const UPDATE_INTERVAL_SECONDS: float = 0.1 const SUN_YAW_DEGREES: float = -32.0 const WEATHER_TRANSITION_SECONDS: float = 10.0 const RAIN_EMITTER_OFFSET := Vector3(0.0, 7.0, 0.0) -const RAIN_EMISSION_EXTENTS := Vector3(13.0, 1.0, 13.0) -const RAIN_VISIBILITY_AABB := AABB( - Vector3(-13.5, -9.0, -13.5), - Vector3(27.0, 12.0, 27.0), -) -const RAIN_PARTICLE_AMOUNT: int = 2240 +const RAIN_PARTICLE_AMOUNT: int = 560 const RAIN_VELOCITY_MIN: float = 16.0 const RAIN_VELOCITY_MAX: float = 20.0 const RAIN_DROP_SIZE := Vector3(0.014, 0.34, 0.014) @@ -192,12 +187,14 @@ func _prepare_rain() -> void: _rain.lifetime = 1.25 _rain.fixed_fps = 30 _rain.local_coords = false - _rain.visibility_aabb = RAIN_VISIBILITY_AABB + _rain.visibility_aabb = AABB( + Vector3(-7.0, -9.0, -7.0), Vector3(14.0, 12.0, 14.0) + ) var process_material := ParticleProcessMaterial.new() process_material.emission_shape = ( ParticleProcessMaterial.EMISSION_SHAPE_BOX ) - process_material.emission_box_extents = RAIN_EMISSION_EXTENTS + process_material.emission_box_extents = Vector3(6.5, 1.0, 6.5) process_material.direction = Vector3.DOWN process_material.spread = 5.0 process_material.initial_velocity_min = RAIN_VELOCITY_MIN