diff --git a/docs/design/fish_catalog_proposal.csv b/docs/design/fish_catalog_proposal.csv index b583915..c427dc0 100644 --- a/docs/design/fish_catalog_proposal.csv +++ b/docs/design/fish_catalog_proposal.csv @@ -1,314 +1,314 @@ -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 +catalog_number,display_name,collection_group,water_type,spawn_area,seasons,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,Spring | Summer | Fall,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall,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,Spring | Summer,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall,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,Summer | Fall,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall,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,Spring | Fall | Winter,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,Spring | Summer | Fall,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,Spring | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Fall | Winter,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,Summer | Fall,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,Spring | Summer | Fall,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,Spring | Summer | Fall,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall,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,Summer | Fall,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,Summer | Fall,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,Summer | Fall,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,Spring | Summer | Fall | Winter,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,Spring | Fall | Winter,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,Spring | Summer | Fall,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall,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,Spring | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Summer | Fall,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,Summer | Fall,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Summer | Fall,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,Spring | Fall | Winter,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,Spring | Fall | Winter,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,Spring | Fall | Winter,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,Spring | Fall | Winter,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,Spring | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Fall | Winter,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,Spring | Summer | Fall,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,Spring | Summer | Fall | Winter,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,Spring | Fall | Winter,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,Spring | Fall | Winter,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,Spring | Fall | Winter,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,Spring | Fall | Winter,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,Spring | Fall | Winter,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,Spring | Fall | Winter,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,Spring | Fall | Winter,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,Spring | Fall | Winter,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,Spring | Fall | Winter,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,Spring | Fall | Winter,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,Spring | Fall | Winter,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,Spring | Fall | Winter,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,Spring | Fall | Winter,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,Spring | Fall | Winter,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,Spring | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall,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,Spring | Summer | Fall,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall,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,Spring | Summer | Fall,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,Spring | Summer | Fall,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,Spring | Summer | Fall,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,Spring | Summer | Fall,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,Spring | Summer | Fall,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,Spring | Summer | Fall,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,Spring | Summer | Fall,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,Spring | Summer | Fall,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,Spring | Summer | Fall,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,Spring | Summer | Fall,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,Spring | Summer | Fall,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,Spring | Summer | Fall,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,Spring | Summer | Fall,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,Spring | Summer | Fall,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,Spring | Summer | Fall,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,Spring | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall,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,Spring | Summer | Fall,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,Spring | Summer | Fall,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,Spring | Summer | Fall,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,Spring | Summer | Fall,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,Spring | Summer | Fall,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Fall | Winter,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,Spring | Summer | Fall,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,Spring | Summer | Fall,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,Spring | Summer | Fall,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,Spring | Summer | Fall,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,Spring | Summer | Fall,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,Spring | Summer | Fall,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,Spring | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall,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,Spring | Fall | Winter,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,Spring | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Fall | Winter,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,Spring | Summer | Fall,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,Spring | Summer | Fall,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,Spring | Summer | Fall,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,Spring | Summer | Fall,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,Spring | Summer | Fall,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,Spring | Fall | Winter,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,Spring | Fall | Winter,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,Spring | Fall | Winter,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,Spring | Fall | Winter,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,Spring | Fall | Winter,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,Spring | Fall | Winter,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,Spring | Fall | Winter,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,Spring | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Winter,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,Spring | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Summer | Fall,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,Spring | Summer | Fall | Winter,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,Summer | Fall,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,Summer | Fall,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,Summer | Fall,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,Summer | Fall,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,Summer | Fall,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,Spring | Fall | Winter,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,Spring | Fall | Winter,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,Spring | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Summer | Fall,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,Summer | Fall,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,Spring | Fall | Winter,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,Spring | Fall | Winter,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,Spring | Fall | Winter,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,Fall | Winter,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,Fall | Winter,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,Spring | Winter,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,Spring,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,Spring | Fall,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,Spring | Fall,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,Fall,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,Fall | Winter,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,Summer | Fall,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,Summer | Fall,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,Spring | Fall | Winter,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,Summer | Fall,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,Summer | Fall,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Summer | Fall,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,Summer | Fall,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,Summer | Fall,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,Summer | Fall,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,Spring | Summer | Fall,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,Spring | Summer | Fall | Winter,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,Spring | Fall,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall,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,Spring | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Summer | Fall,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,Summer | Fall,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,Spring | Summer | Fall | Winter,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,Summer | Fall,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Fall,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,Spring | Summer | Fall,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,Spring | Summer | Fall,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,Spring | Summer | Fall,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,Spring | Summer | Fall,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,Spring | Summer | Fall,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,Spring | Summer | Fall,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,Spring | Summer | Fall,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,Spring | Fall | Winter,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,Spring | Fall | Winter,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,Spring | Fall | Winter,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,Spring | Fall | Winter,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,Spring | Fall | Winter,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,Spring | Fall | Winter,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,Spring | Fall | Winter,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,Spring | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Summer | Fall | Winter,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,Spring | Fall | Winter,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,Spring | Fall | Winter,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,Spring | Summer | Fall | Winter,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/economy/fishing_shop_stock.gd b/economy/fishing_shop_stock.gd index 35f30ed..962ba3a 100644 --- a/economy/fishing_shop_stock.gd +++ b/economy/fishing_shop_stock.gd @@ -129,6 +129,10 @@ static func is_passive_supply(item_id: StringName) -> bool: return item_id == BATTERIES_ID +static func is_gathering_tool(item_id: StringName) -> bool: + return item_id == CRAB_NET_ID or item_id == STANDARD_SHOVEL_ID + + static func get_purchase_cost( item_id: StringName, quantity: int, diff --git a/fish/fish_data.gd b/fish/fish_data.gd index c34a953..2696d4b 100644 --- a/fish/fish_data.gd +++ b/fish/fish_data.gd @@ -15,6 +15,7 @@ const CatchDifficultyProfileType = preload( "res://fishing/catch_difficulty_profile.gd" ) const FishAvailabilityType = preload("res://fish/fish_availability.gd") +const CalendarSeasonType = preload("res://world/calendar_season.gd") enum Rarity { COMMON, @@ -46,6 +47,8 @@ enum LogbookSection { @export var collection_method: CollectionMethod = CollectionMethod.FISHING @export var logbook_section: LogbookSection = LogbookSection.AUTOMATIC @export var habitat_label: String = "" +@export_flags("Spring", "Summer", "Fall", "Winter") +var available_seasons: int = CalendarSeasonType.ALL_MASK @export_category("Fishing") @export_flags("Fresh Water", "Salt Water") var allowed_water_types: int = WaterType.ALL_FISHABLE_MASK @@ -83,6 +86,7 @@ func is_valid_catalog_entry() -> bool: and sell_value_min >= 0 and sell_value_max >= sell_value_min and sell_value_curve > 0.0 + and CalendarSeasonType.is_valid_mask(available_seasons) ) @@ -100,6 +104,14 @@ func is_allowed_in_water(type: WaterType.Type) -> bool: return (allowed_water_types & WaterType.mask_for(type)) != 0 +func is_available_in_season(season: int) -> bool: + return CalendarSeasonType.includes(available_seasons, season) + + +func get_season_text() -> String: + return CalendarSeasonType.format_mask(available_seasons) + + func get_primary_water_type() -> WaterType.Type: if allowed_water_types & WaterType.FRESH_WATER_MASK: return WaterType.Type.FRESH_WATER diff --git a/fish/fish_selector.gd b/fish/fish_selector.gd index de906f8..c2413bf 100644 --- a/fish/fish_selector.gd +++ b/fish/fish_selector.gd @@ -48,6 +48,8 @@ func select_fish( for fish: FishDataType in pool.candidates: if fish == null or not fish.is_fishable(): continue + if not fish.is_available_in_season(context.season): + continue if not fish.is_allowed_in_water(context.water_type): continue if fish.availability != null and not fish.availability.is_available(context): diff --git a/fish/pools/starter_pond_pool.tres b/fish/pools/starter_pond_pool.tres index de1a327..f7976fc 100644 --- a/fish/pools/starter_pond_pool.tres +++ b/fish/pools/starter_pond_pool.tres @@ -1,4 +1,4 @@ -[gd_resource type="Resource" load_steps=21 format=3] +[gd_resource type="Resource" load_steps=28 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"] @@ -20,7 +20,14 @@ [ext_resource type="Resource" path="res://fish/species/trout_rainbow/trout_rainbow.tres" id="18_trout_rainbow"] [ext_resource type="Resource" path="res://fish/species/trout_steelhead/trout_steelhead.tres" id="19_trout_steelhead"] [ext_resource type="Resource" path="res://fish/species/walleye/walleye.tres" id="20_walleye"] +[ext_resource type="Resource" path="res://fish/species/bowfin/bowfin.tres" id="21_bowfin"] +[ext_resource type="Resource" path="res://fish/species/sturgeon_lake/sturgeon_lake.tres" id="22_sturgeon_lake"] +[ext_resource type="Resource" path="res://fish/species/gar_longnose/gar_longnose.tres" id="23_gar_longnose"] +[ext_resource type="Resource" path="res://fish/species/paddlefish/paddlefish.tres" id="24_paddlefish"] +[ext_resource type="Resource" path="res://fish/species/sturgeon_shovelnose/sturgeon_shovelnose.tres" id="25_sturgeon_shovelnose"] +[ext_resource type="Resource" path="res://fish/species/gar_spotted/gar_spotted.tres" id="26_gar_spotted"] +[ext_resource type="Resource" path="res://fish/species/lungfish_west_african/lungfish_west_african.tres" id="27_lungfish_west_african"] [resource] script = ExtResource("1_pool") -candidates = [ExtResource("2_bluegill"), ExtResource("3_carp"), ExtResource("4_catfish_blue"), ExtResource("5_catfish_channel"), ExtResource("6_catfish_flathead"), ExtResource("7_catfish_white"), ExtResource("8_goby_round"), ExtResource("9_chub_european"), ExtResource("10_chub_flame"), ExtResource("11_chub_lake"), ExtResource("12_goldfish"), ExtResource("13_goldfish_bubbleeye"), ExtResource("14_sauger"), ExtResource("15_saugeye"), ExtResource("16_trout_cutthroat"), ExtResource("17_trout_golden"), ExtResource("18_trout_rainbow"), ExtResource("19_trout_steelhead"), ExtResource("20_walleye")] +candidates = [ExtResource("2_bluegill"), ExtResource("3_carp"), ExtResource("4_catfish_blue"), ExtResource("5_catfish_channel"), ExtResource("6_catfish_flathead"), ExtResource("7_catfish_white"), ExtResource("8_goby_round"), ExtResource("9_chub_european"), ExtResource("10_chub_flame"), ExtResource("11_chub_lake"), ExtResource("12_goldfish"), ExtResource("13_goldfish_bubbleeye"), ExtResource("14_sauger"), ExtResource("15_saugeye"), ExtResource("16_trout_cutthroat"), ExtResource("17_trout_golden"), ExtResource("18_trout_rainbow"), ExtResource("19_trout_steelhead"), ExtResource("20_walleye"), ExtResource("21_bowfin"), ExtResource("22_sturgeon_lake"), ExtResource("23_gar_longnose"), ExtResource("24_paddlefish"), ExtResource("25_sturgeon_shovelnose"), ExtResource("26_gar_spotted"), ExtResource("27_lungfish_west_african")] diff --git a/fish/species/abalone_red/abalone_red.tres b/fish/species/abalone_red/abalone_red.tres index 039c7e2..f454905 100644 --- a/fish/species/abalone_red/abalone_red.tres +++ b/fish/species/abalone_red/abalone_red.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 3 base_catch_weight = 0.09 diff --git a/fish/species/amberjack_greater/amberjack_greater.tres b/fish/species/amberjack_greater/amberjack_greater.tres index 53ea638..2a7c794 100644 --- a/fish/species/amberjack_greater/amberjack_greater.tres +++ b/fish/species/amberjack_greater/amberjack_greater.tres @@ -15,6 +15,7 @@ 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." +available_seasons = 6 allowed_water_types = 2 rarity = 2 base_catch_weight = 0.25 diff --git a/fish/species/amberjack_lesser/amberjack_lesser.tres b/fish/species/amberjack_lesser/amberjack_lesser.tres index 2fd0aec..0f82f2f 100644 --- a/fish/species/amberjack_lesser/amberjack_lesser.tres +++ b/fish/species/amberjack_lesser/amberjack_lesser.tres @@ -15,6 +15,7 @@ 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." +available_seasons = 6 allowed_water_types = 2 rarity = 1 base_catch_weight = 0.75 diff --git a/fish/species/anchovy_european/anchovy_european.tres b/fish/species/anchovy_european/anchovy_european.tres index 722fbaf..4e442e7 100644 --- a/fish/species/anchovy_european/anchovy_european.tres +++ b/fish/species/anchovy_european/anchovy_european.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 7 allowed_water_types = 2 base_catch_weight = 0.5 catch_profile = ExtResource("2_profile") diff --git a/fish/species/anchovy_european/fish_anchovy_european.png b/fish/species/anchovy_european/fish_anchovy_european.png index 44742f8..d691c72 100644 Binary files a/fish/species/anchovy_european/fish_anchovy_european.png and b/fish/species/anchovy_european/fish_anchovy_european.png differ diff --git a/fish/species/anchovy_northern/anchovy_northern.tres b/fish/species/anchovy_northern/anchovy_northern.tres index a1940d5..37c52f7 100644 --- a/fish/species/anchovy_northern/anchovy_northern.tres +++ b/fish/species/anchovy_northern/anchovy_northern.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 base_catch_weight = 0.5 catch_profile = ExtResource("2_profile") diff --git a/fish/species/anchovy_northern/fish_anchovy_northern.png b/fish/species/anchovy_northern/fish_anchovy_northern.png index 20bacd8..f8749fb 100644 Binary files a/fish/species/anchovy_northern/fish_anchovy_northern.png and b/fish/species/anchovy_northern/fish_anchovy_northern.png differ diff --git a/fish/species/angelfish_freshwater/angelfish_freshwater.tres b/fish/species/angelfish_freshwater/angelfish_freshwater.tres index 5d9bda2..63d818b 100644 --- a/fish/species/angelfish_freshwater/angelfish_freshwater.tres +++ b/fish/species/angelfish_freshwater/angelfish_freshwater.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 15 allowed_water_types = 1 rarity = 2 base_catch_weight = 0.3 diff --git a/fish/species/angelfish_queen/angelfish_queen.tres b/fish/species/angelfish_queen/angelfish_queen.tres index d45bbea..70706d8 100644 --- a/fish/species/angelfish_queen/angelfish_queen.tres +++ b/fish/species/angelfish_queen/angelfish_queen.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 2 base_catch_weight = 0.3 diff --git a/fish/species/anglerfish_black_seadevil/anglerfish_black_seadevil.tres b/fish/species/anglerfish_black_seadevil/anglerfish_black_seadevil.tres index 2888120..4ac947e 100644 --- a/fish/species/anglerfish_black_seadevil/anglerfish_black_seadevil.tres +++ b/fish/species/anglerfish_black_seadevil/anglerfish_black_seadevil.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 4 base_catch_weight = 0.05 diff --git a/fish/species/arapaima/arapaima.tres b/fish/species/arapaima/arapaima.tres index 2ee2c75..6561920 100644 --- a/fish/species/arapaima/arapaima.tres +++ b/fish/species/arapaima/arapaima.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 15 allowed_water_types = 1 rarity = 4 base_catch_weight = 0.04 diff --git a/fish/species/arowana_silver/arowana_silver.tres b/fish/species/arowana_silver/arowana_silver.tres index 413621c..054b94d 100644 --- a/fish/species/arowana_silver/arowana_silver.tres +++ b/fish/species/arowana_silver/arowana_silver.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 1 rarity = 3 base_catch_weight = 0.11 diff --git a/fish/species/axolotl/axolotl.tres b/fish/species/axolotl/axolotl.tres index 17ba5ad..f67de61 100644 --- a/fish/species/axolotl/axolotl.tres +++ b/fish/species/axolotl/axolotl.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 7 allowed_water_types = 1 rarity = 4 base_catch_weight = 0.04 diff --git a/fish/species/barbel_common/barbel_common.tres b/fish/species/barbel_common/barbel_common.tres index 4e1b93d..4e1711b 100644 --- a/fish/species/barbel_common/barbel_common.tres +++ b/fish/species/barbel_common/barbel_common.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 7 allowed_water_types = 1 rarity = 2 base_catch_weight = 0.28 diff --git a/fish/species/barracuda_great/barracuda_great.tres b/fish/species/barracuda_great/barracuda_great.tres index c2a105f..0039cef 100644 --- a/fish/species/barracuda_great/barracuda_great.tres +++ b/fish/species/barracuda_great/barracuda_great.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 3 base_catch_weight = 0.12 diff --git a/fish/species/barramundi/barramundi.tres b/fish/species/barramundi/barramundi.tres index afbd336..0b98fe4 100644 --- a/fish/species/barramundi/barramundi.tres +++ b/fish/species/barramundi/barramundi.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 3 rarity = 2 base_catch_weight = 0.24 diff --git a/fish/species/barreleye_pacific/barreleye_pacific.tres b/fish/species/barreleye_pacific/barreleye_pacific.tres index d784c35..d1d9fc8 100644 --- a/fish/species/barreleye_pacific/barreleye_pacific.tres +++ b/fish/species/barreleye_pacific/barreleye_pacific.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 4 base_catch_weight = 0.045 diff --git a/fish/species/bass/bass.tres b/fish/species/bass/bass.tres index b263c3f..eeb6df5 100644 --- a/fish/species/bass/bass.tres +++ b/fish/species/bass/bass.tres @@ -18,6 +18,7 @@ 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." +available_seasons = 5 allowed_water_types = 2 rarity = 1 base_catch_weight = 4.0 diff --git a/fish/species/bass/fish_bass_striped.png b/fish/species/bass/fish_bass_striped.png index efbf835..e39f48f 100644 Binary files a/fish/species/bass/fish_bass_striped.png and b/fish/species/bass/fish_bass_striped.png differ diff --git a/fish/species/beetle_stag_common/beetle_stag_common.tres b/fish/species/beetle_stag_common/beetle_stag_common.tres index 776bb22..f0f0e6d 100644 --- a/fish/species/beetle_stag_common/beetle_stag_common.tres +++ b/fish/species/beetle_stag_common/beetle_stag_common.tres @@ -14,6 +14,7 @@ collection_group = &"Beetles" logbook_fact = "common stag beetles use broad jaws to wrestle rivals and cling to tree bark. adults feed on sap and other sweet plant juices." collection_method = 1 habitat_label = "tree trunks" +available_seasons = 2 allowed_water_types = 0 rarity = 0 base_catch_weight = 1.0 diff --git a/fish/species/betta_siamese/betta_siamese.tres b/fish/species/betta_siamese/betta_siamese.tres index 06bbac6..276ecfb 100644 --- a/fish/species/betta_siamese/betta_siamese.tres +++ b/fish/species/betta_siamese/betta_siamese.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 1 rarity = 1 base_catch_weight = 1.0 diff --git a/fish/species/black_drum/black_drum.tres b/fish/species/black_drum/black_drum.tres index 88a4ee2..46d7db4 100644 --- a/fish/species/black_drum/black_drum.tres +++ b/fish/species/black_drum/black_drum.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 7 allowed_water_types = 2 rarity = 1 base_catch_weight = 0.7 diff --git a/fish/species/blobfish_smooth_head/blobfish_smooth_head.tres b/fish/species/blobfish_smooth_head/blobfish_smooth_head.tres index 0117988..41846aa 100644 --- a/fish/species/blobfish_smooth_head/blobfish_smooth_head.tres +++ b/fish/species/blobfish_smooth_head/blobfish_smooth_head.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 4 base_catch_weight = 0.04 diff --git a/fish/species/bluefish/bluefish.tres b/fish/species/bluefish/bluefish.tres index 70288f5..f36c898 100644 --- a/fish/species/bluefish/bluefish.tres +++ b/fish/species/bluefish/bluefish.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 7 allowed_water_types = 2 rarity = 1 base_catch_weight = 0.85 diff --git a/fish/species/bluegill/bluegill.tres b/fish/species/bluegill/bluegill.tres index 04c03d0..e32fdcb 100644 --- a/fish/species/bluegill/bluegill.tres +++ b/fish/species/bluegill/bluegill.tres @@ -13,6 +13,7 @@ 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." +available_seasons = 7 allowed_water_types = 1 rarity = 0 base_catch_weight = 10.0 diff --git a/fish/species/bluegill/fish_bluegill.png b/fish/species/bluegill/fish_bluegill.png index 013db04..9ad6e4f 100644 Binary files a/fish/species/bluegill/fish_bluegill.png and b/fish/species/bluegill/fish_bluegill.png differ diff --git a/fish/species/bonefish/bonefish.tres b/fish/species/bonefish/bonefish.tres index 0c0d6dd..fe4def7 100644 --- a/fish/species/bonefish/bonefish.tres +++ b/fish/species/bonefish/bonefish.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 2 base_catch_weight = 0.25 diff --git a/fish/species/bowfin/bowfin.png b/fish/species/bowfin/bowfin.png new file mode 100644 index 0000000..9d40491 Binary files /dev/null and b/fish/species/bowfin/bowfin.png differ diff --git a/fish/species/bowfin/bowfin.png.import b/fish/species/bowfin/bowfin.png.import new file mode 100644 index 0000000..b5f2a10 --- /dev/null +++ b/fish/species/bowfin/bowfin.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dgqegw70vkihk" +path="res://.godot/imported/bowfin.png-062edda1eb3529c0e6365e0ca93cf3ef.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://fish/species/bowfin/bowfin.png" +dest_files=["res://.godot/imported/bowfin.png-062edda1eb3529c0e6365e0ca93cf3ef.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 diff --git a/fish/species/bowfin/bowfin.tres b/fish/species/bowfin/bowfin.tres index 748197a..dc76fd9 100644 --- a/fish/species/bowfin/bowfin.tres +++ b/fish/species/bowfin/bowfin.tres @@ -1,8 +1,9 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 format=3] +[gd_resource type="Resource" script_class="FishData" load_steps=5 format=3] [ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"] [ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"] [ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"] +[ext_resource type="Texture2D" path="res://fish/species/bowfin/bowfin.png" id="4_texture"] [sub_resource type="Resource" id="Availability"] script = ExtResource("3_availability") @@ -13,10 +14,11 @@ require_fog = true script = ExtResource("1_fish_data") id = &"bowfin" display_name = "bowfin" -active = false +active = true 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." +available_seasons = 7 allowed_water_types = 1 rarity = 2 base_catch_weight = 0.28 @@ -27,3 +29,4 @@ weight_max_lb = 20.0 sell_value_min = 13 sell_value_max = 30 sell_value_curve = 0.85 +display_texture = ExtResource("4_texture") diff --git a/fish/species/boxfish_yellow/boxfish_yellow.tres b/fish/species/boxfish_yellow/boxfish_yellow.tres index d701ada..040e8fc 100644 --- a/fish/species/boxfish_yellow/boxfish_yellow.tres +++ b/fish/species/boxfish_yellow/boxfish_yellow.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 2 base_catch_weight = 0.32 diff --git a/fish/species/bream_common/bream_common.tres b/fish/species/bream_common/bream_common.tres index 54ecc57..38d9015 100644 --- a/fish/species/bream_common/bream_common.tres +++ b/fish/species/bream_common/bream_common.tres @@ -15,6 +15,7 @@ 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." +available_seasons = 13 allowed_water_types = 1 rarity = 0 base_catch_weight = 1.8 diff --git a/fish/species/buffalo_bigmouth/buffalo_bigmouth.tres b/fish/species/buffalo_bigmouth/buffalo_bigmouth.tres index 4053eb6..6292951 100644 --- a/fish/species/buffalo_bigmouth/buffalo_bigmouth.tres +++ b/fish/species/buffalo_bigmouth/buffalo_bigmouth.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 7 allowed_water_types = 1 rarity = 3 base_catch_weight = 0.12 diff --git a/fish/species/buffalo_smallmouth/buffalo_smallmouth.tres b/fish/species/buffalo_smallmouth/buffalo_smallmouth.tres index f0d2780..d590ec6 100644 --- a/fish/species/buffalo_smallmouth/buffalo_smallmouth.tres +++ b/fish/species/buffalo_smallmouth/buffalo_smallmouth.tres @@ -15,6 +15,7 @@ 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." +available_seasons = 7 allowed_water_types = 1 rarity = 2 base_catch_weight = 0.3 diff --git a/fish/species/bullhead_black/bullhead_black.tres b/fish/species/bullhead_black/bullhead_black.tres index 87f6155..f10fa87 100644 --- a/fish/species/bullhead_black/bullhead_black.tres +++ b/fish/species/bullhead_black/bullhead_black.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 7 allowed_water_types = 1 rarity = 1 base_catch_weight = 1.0 diff --git a/fish/species/bullhead_brown/bullhead_brown.tres b/fish/species/bullhead_brown/bullhead_brown.tres index c900d5f..a2c81f9 100644 --- a/fish/species/bullhead_brown/bullhead_brown.tres +++ b/fish/species/bullhead_brown/bullhead_brown.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 7 allowed_water_types = 1 rarity = 0 base_catch_weight = 2.3 diff --git a/fish/species/bullhead_yellow/bullhead_yellow.tres b/fish/species/bullhead_yellow/bullhead_yellow.tres index e2b5d63..b00df0d 100644 --- a/fish/species/bullhead_yellow/bullhead_yellow.tres +++ b/fish/species/bullhead_yellow/bullhead_yellow.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 7 allowed_water_types = 1 rarity = 0 base_catch_weight = 2.0 diff --git a/fish/species/burbot/burbot.tres b/fish/species/burbot/burbot.tres index 25e9277..189f076 100644 --- a/fish/species/burbot/burbot.tres +++ b/fish/species/burbot/burbot.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 13 allowed_water_types = 1 rarity = 2 base_catch_weight = 0.24 diff --git a/fish/species/butterflyfish_copperband/butterflyfish_copperband.tres b/fish/species/butterflyfish_copperband/butterflyfish_copperband.tres index e9a3385..8ef5d2e 100644 --- a/fish/species/butterflyfish_copperband/butterflyfish_copperband.tres +++ b/fish/species/butterflyfish_copperband/butterflyfish_copperband.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 2 base_catch_weight = 0.32 diff --git a/fish/species/capelin/capelin.tres b/fish/species/capelin/capelin.tres index 0e5f25b..7f1b9ba 100644 --- a/fish/species/capelin/capelin.tres +++ b/fish/species/capelin/capelin.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 13 allowed_water_types = 2 rarity = 1 base_catch_weight = 1.0 diff --git a/fish/species/carp/carp.tres b/fish/species/carp/carp.tres index 4bcdb6c..37cff52 100644 --- a/fish/species/carp/carp.tres +++ b/fish/species/carp/carp.tres @@ -18,6 +18,7 @@ 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." +available_seasons = 15 allowed_water_types = 1 rarity = 2 base_catch_weight = 1.5 diff --git a/fish/species/carp/fish_carp_common.png b/fish/species/carp/fish_carp_common.png index 709f4d4..3a98f8e 100644 Binary files a/fish/species/carp/fish_carp_common.png and b/fish/species/carp/fish_carp_common.png differ diff --git a/fish/species/catfish_blue/catfish_blue.tres b/fish/species/catfish_blue/catfish_blue.tres index 98fda16..e26c1e8 100644 --- a/fish/species/catfish_blue/catfish_blue.tres +++ b/fish/species/catfish_blue/catfish_blue.tres @@ -20,6 +20,7 @@ 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." +available_seasons = 7 allowed_water_types = 1 rarity = 1 base_catch_weight = 1.25 diff --git a/fish/species/catfish_blue/fish_catfish_blue.png b/fish/species/catfish_blue/fish_catfish_blue.png index 6482e15..73511b6 100644 Binary files a/fish/species/catfish_blue/fish_catfish_blue.png and b/fish/species/catfish_blue/fish_catfish_blue.png differ diff --git a/fish/species/catfish_channel/catfish_channel.tres b/fish/species/catfish_channel/catfish_channel.tres index 69aff97..b545b89 100644 --- a/fish/species/catfish_channel/catfish_channel.tres +++ b/fish/species/catfish_channel/catfish_channel.tres @@ -20,6 +20,7 @@ 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." +available_seasons = 7 allowed_water_types = 1 base_catch_weight = 2.0 catch_profile = ExtResource("2_profile") diff --git a/fish/species/catfish_channel/fish_catfish_channel.png b/fish/species/catfish_channel/fish_catfish_channel.png index b858806..566955a 100644 Binary files a/fish/species/catfish_channel/fish_catfish_channel.png and b/fish/species/catfish_channel/fish_catfish_channel.png differ diff --git a/fish/species/catfish_flathead/catfish_flathead.tres b/fish/species/catfish_flathead/catfish_flathead.tres index 84a6f01..68a9bfd 100644 --- a/fish/species/catfish_flathead/catfish_flathead.tres +++ b/fish/species/catfish_flathead/catfish_flathead.tres @@ -20,6 +20,7 @@ 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." +available_seasons = 7 allowed_water_types = 1 rarity = 1 catch_profile = ExtResource("2_profile") diff --git a/fish/species/catfish_flathead/fish_catfish_flathead.png b/fish/species/catfish_flathead/fish_catfish_flathead.png index e248c02..0122fda 100644 Binary files a/fish/species/catfish_flathead/fish_catfish_flathead.png and b/fish/species/catfish_flathead/fish_catfish_flathead.png differ diff --git a/fish/species/catfish_walking/catfish_walking.tres b/fish/species/catfish_walking/catfish_walking.tres index 7b8dbf4..c0de099 100644 --- a/fish/species/catfish_walking/catfish_walking.tres +++ b/fish/species/catfish_walking/catfish_walking.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 1 rarity = 2 base_catch_weight = 0.3 diff --git a/fish/species/catfish_white/catfish_white.tres b/fish/species/catfish_white/catfish_white.tres index e5cc545..aad1cb5 100644 --- a/fish/species/catfish_white/catfish_white.tres +++ b/fish/species/catfish_white/catfish_white.tres @@ -20,6 +20,7 @@ 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." +available_seasons = 7 allowed_water_types = 1 base_catch_weight = 2.0 catch_profile = ExtResource("2_profile") diff --git a/fish/species/catfish_white/fish_catfish_white.png b/fish/species/catfish_white/fish_catfish_white.png index 499be44..bdcb730 100644 Binary files a/fish/species/catfish_white/fish_catfish_white.png and b/fish/species/catfish_white/fish_catfish_white.png differ diff --git a/fish/species/char_arctic/char_arctic.tres b/fish/species/char_arctic/char_arctic.tres index cb47137..85bcac1 100644 --- a/fish/species/char_arctic/char_arctic.tres +++ b/fish/species/char_arctic/char_arctic.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 13 allowed_water_types = 3 rarity = 2 base_catch_weight = 0.3 diff --git a/fish/species/chromis_blue_green/chromis_blue_green.tres b/fish/species/chromis_blue_green/chromis_blue_green.tres index e02ded5..cec319e 100644 --- a/fish/species/chromis_blue_green/chromis_blue_green.tres +++ b/fish/species/chromis_blue_green/chromis_blue_green.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 0 base_catch_weight = 2.8 diff --git a/fish/species/chub_creek/chub_creek.tres b/fish/species/chub_creek/chub_creek.tres index e2bda01..acd5351 100644 --- a/fish/species/chub_creek/chub_creek.tres +++ b/fish/species/chub_creek/chub_creek.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 7 allowed_water_types = 1 rarity = 0 base_catch_weight = 3.2 diff --git a/fish/species/chub_european/chub_european.tres b/fish/species/chub_european/chub_european.tres index aeed2b7..61ccc87 100644 --- a/fish/species/chub_european/chub_european.tres +++ b/fish/species/chub_european/chub_european.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 1 base_catch_weight = 0.55 catch_profile = ExtResource("2_profile") diff --git a/fish/species/chub_european/fish_chub_european.png b/fish/species/chub_european/fish_chub_european.png index 03ed536..e850ada 100644 Binary files a/fish/species/chub_european/fish_chub_european.png and b/fish/species/chub_european/fish_chub_european.png differ diff --git a/fish/species/chub_flame/chub_flame.tres b/fish/species/chub_flame/chub_flame.tres index 4ca30fe..7a656cd 100644 --- a/fish/species/chub_flame/chub_flame.tres +++ b/fish/species/chub_flame/chub_flame.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 7 allowed_water_types = 1 rarity = 1 base_catch_weight = 0.4 diff --git a/fish/species/chub_flame/fish_chub_flame.png b/fish/species/chub_flame/fish_chub_flame.png index 98c67e3..a94fc71 100644 Binary files a/fish/species/chub_flame/fish_chub_flame.png and b/fish/species/chub_flame/fish_chub_flame.png differ diff --git a/fish/species/chub_lake/chub_lake.tres b/fish/species/chub_lake/chub_lake.tres index 8b8927f..26a8fe5 100644 --- a/fish/species/chub_lake/chub_lake.tres +++ b/fish/species/chub_lake/chub_lake.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 13 allowed_water_types = 1 base_catch_weight = 0.55 catch_profile = ExtResource("2_profile") diff --git a/fish/species/chub_lake/fish_chub_lake.png b/fish/species/chub_lake/fish_chub_lake.png index 73101f6..6aac214 100644 Binary files a/fish/species/chub_lake/fish_chub_lake.png and b/fish/species/chub_lake/fish_chub_lake.png differ diff --git a/fish/species/cisco/cisco.tres b/fish/species/cisco/cisco.tres index 694a9ec..2a91382 100644 --- a/fish/species/cisco/cisco.tres +++ b/fish/species/cisco/cisco.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 13 allowed_water_types = 1 rarity = 0 base_catch_weight = 2.2 diff --git a/fish/species/clam_geoduck/clam_geoduck.tres b/fish/species/clam_geoduck/clam_geoduck.tres index 82c8eac..5add347 100644 --- a/fish/species/clam_geoduck/clam_geoduck.tres +++ b/fish/species/clam_geoduck/clam_geoduck.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 2 base_catch_weight = 0.25 diff --git a/fish/species/clam_giant/clam_giant.tres b/fish/species/clam_giant/clam_giant.tres index d56f410..cf31a65 100644 --- a/fish/species/clam_giant/clam_giant.tres +++ b/fish/species/clam_giant/clam_giant.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 3 base_catch_weight = 0.1 diff --git a/fish/species/clam_manila/clam_manila.tres b/fish/species/clam_manila/clam_manila.tres index 761c0d1..20e3f8a 100644 --- a/fish/species/clam_manila/clam_manila.tres +++ b/fish/species/clam_manila/clam_manila.tres @@ -15,6 +15,7 @@ logbook_fact = "manila clams bury themselves in wet coastal sand and reveal thei collection_method = 2 logbook_section = 1 habitat_label = "wet beach sand" +available_seasons = 15 allowed_water_types = 2 rarity = 0 base_catch_weight = 1.0 diff --git a/fish/species/clownfish_ocellaris/clownfish_ocellaris.tres b/fish/species/clownfish_ocellaris/clownfish_ocellaris.tres index b09dbdb..ac9a95e 100644 --- a/fish/species/clownfish_ocellaris/clownfish_ocellaris.tres +++ b/fish/species/clownfish_ocellaris/clownfish_ocellaris.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 1 base_catch_weight = 1.0 diff --git a/fish/species/cobia/cobia.tres b/fish/species/cobia/cobia.tres index 885f55a..1cde907 100644 --- a/fish/species/cobia/cobia.tres +++ b/fish/species/cobia/cobia.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 6 allowed_water_types = 2 rarity = 2 base_catch_weight = 0.24 diff --git a/fish/species/cod_atlantic/cod_atlantic.tres b/fish/species/cod_atlantic/cod_atlantic.tres index 22ee1ca..e799724 100644 --- a/fish/species/cod_atlantic/cod_atlantic.tres +++ b/fish/species/cod_atlantic/cod_atlantic.tres @@ -15,6 +15,7 @@ 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." +available_seasons = 13 allowed_water_types = 2 rarity = 0 base_catch_weight = 1.8 diff --git a/fish/species/cod_pacific/cod_pacific.tres b/fish/species/cod_pacific/cod_pacific.tres index 7f0b8ce..89eb39f 100644 --- a/fish/species/cod_pacific/cod_pacific.tres +++ b/fish/species/cod_pacific/cod_pacific.tres @@ -15,6 +15,7 @@ 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." +available_seasons = 13 allowed_water_types = 2 rarity = 0 base_catch_weight = 1.8 diff --git a/fish/species/coelacanth_west_indian/coelacanth_west_indian.tres b/fish/species/coelacanth_west_indian/coelacanth_west_indian.tres index fafc161..3da9f04 100644 --- a/fish/species/coelacanth_west_indian/coelacanth_west_indian.tres +++ b/fish/species/coelacanth_west_indian/coelacanth_west_indian.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 4 base_catch_weight = 0.03 diff --git a/fish/species/conch_queen/conch_queen.tres b/fish/species/conch_queen/conch_queen.tres index 0868ddf..bac9eb6 100644 --- a/fish/species/conch_queen/conch_queen.tres +++ b/fish/species/conch_queen/conch_queen.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 2 base_catch_weight = 0.24 diff --git a/fish/species/cornetfish_red/cornetfish_red.tres b/fish/species/cornetfish_red/cornetfish_red.tres index fe4fbc9..600d189 100644 --- a/fish/species/cornetfish_red/cornetfish_red.tres +++ b/fish/species/cornetfish_red/cornetfish_red.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 3 base_catch_weight = 0.11 diff --git a/fish/species/cowfish_longhorn/cowfish_longhorn.tres b/fish/species/cowfish_longhorn/cowfish_longhorn.tres index 2f647cc..8d3e4b2 100644 --- a/fish/species/cowfish_longhorn/cowfish_longhorn.tres +++ b/fish/species/cowfish_longhorn/cowfish_longhorn.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 3 base_catch_weight = 0.13 diff --git a/fish/species/crab_blue/crab_blue.tres b/fish/species/crab_blue/crab_blue.tres index fd2ec5c..2ee3279 100644 --- a/fish/species/crab_blue/crab_blue.tres +++ b/fish/species/crab_blue/crab_blue.tres @@ -19,6 +19,7 @@ logbook_fact = "blue crabs swim with flattened rear legs shaped like paddles. br collection_method = 1 logbook_section = 1 habitat_label = "shallow coastal water" +available_seasons = 6 allowed_water_types = 2 rarity = 0 base_catch_weight = 1.15 diff --git a/fish/species/crab_brown/crab_brown.tres b/fish/species/crab_brown/crab_brown.tres index 14e30c8..8f31b9c 100644 --- a/fish/species/crab_brown/crab_brown.tres +++ b/fish/species/crab_brown/crab_brown.tres @@ -15,6 +15,7 @@ logbook_fact = "brown crabs hide among rocks and sand along sheltered coasts. br collection_method = 1 logbook_section = 1 habitat_label = "dry beach sand" +available_seasons = 15 allowed_water_types = 2 rarity = 0 base_catch_weight = 1.0 diff --git a/fish/species/crab_dungeness/crab_dungeness.tres b/fish/species/crab_dungeness/crab_dungeness.tres index ada612a..bb56819 100644 --- a/fish/species/crab_dungeness/crab_dungeness.tres +++ b/fish/species/crab_dungeness/crab_dungeness.tres @@ -20,6 +20,7 @@ logbook_fact = "dungeness crabs bury beneath sand with only their eyes and anten collection_method = 1 logbook_section = 1 habitat_label = "shallow coastal sand" +available_seasons = 13 allowed_water_types = 2 rarity = 1 base_catch_weight = 0.65 diff --git a/fish/species/crab_ghost/crab_ghost.tres b/fish/species/crab_ghost/crab_ghost.tres index dca2eff..db54293 100644 --- a/fish/species/crab_ghost/crab_ghost.tres +++ b/fish/species/crab_ghost/crab_ghost.tres @@ -20,6 +20,7 @@ logbook_fact = "atlantic ghost crabs dash across beaches on long pale legs and r collection_method = 1 logbook_section = 1 habitat_label = "dry beach sand" +available_seasons = 6 allowed_water_types = 2 rarity = 2 base_catch_weight = 0.28 diff --git a/fish/species/crab_japanese_spider/crab_japanese_spider.tres b/fish/species/crab_japanese_spider/crab_japanese_spider.tres index e045021..d09f4cd 100644 --- a/fish/species/crab_japanese_spider/crab_japanese_spider.tres +++ b/fish/species/crab_japanese_spider/crab_japanese_spider.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 13 allowed_water_types = 2 rarity = 4 base_catch_weight = 0.045 diff --git a/fish/species/crab_red_king/crab_red_king.tres b/fish/species/crab_red_king/crab_red_king.tres index d0b8a74..3a1a326 100644 --- a/fish/species/crab_red_king/crab_red_king.tres +++ b/fish/species/crab_red_king/crab_red_king.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 13 allowed_water_types = 2 rarity = 3 base_catch_weight = 0.11 diff --git a/fish/species/crappie_black/crappie_black.tres b/fish/species/crappie_black/crappie_black.tres index ba6956e..bfa949b 100644 --- a/fish/species/crappie_black/crappie_black.tres +++ b/fish/species/crappie_black/crappie_black.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 13 allowed_water_types = 1 rarity = 1 base_catch_weight = 1.0 diff --git a/fish/species/crappie_white/crappie_white.tres b/fish/species/crappie_white/crappie_white.tres index 85c22b0..021000b 100644 --- a/fish/species/crappie_white/crappie_white.tres +++ b/fish/species/crappie_white/crappie_white.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 13 allowed_water_types = 1 rarity = 0 base_catch_weight = 1.7 diff --git a/fish/species/crayfish_red_swamp/crayfish_red_swamp.tres b/fish/species/crayfish_red_swamp/crayfish_red_swamp.tres index cd9d6a0..c3bd2df 100644 --- a/fish/species/crayfish_red_swamp/crayfish_red_swamp.tres +++ b/fish/species/crayfish_red_swamp/crayfish_red_swamp.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 7 allowed_water_types = 1 rarity = 0 base_catch_weight = 1.1 diff --git a/fish/species/croaker_atlantic/croaker_atlantic.tres b/fish/species/croaker_atlantic/croaker_atlantic.tres index 2f4df70..b8ebf09 100644 --- a/fish/species/croaker_atlantic/croaker_atlantic.tres +++ b/fish/species/croaker_atlantic/croaker_atlantic.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 7 allowed_water_types = 2 rarity = 0 base_catch_weight = 2.1 diff --git a/fish/species/croaker_yellowfin/croaker_yellowfin.tres b/fish/species/croaker_yellowfin/croaker_yellowfin.tres index ed5410d..e2a6105 100644 --- a/fish/species/croaker_yellowfin/croaker_yellowfin.tres +++ b/fish/species/croaker_yellowfin/croaker_yellowfin.tres @@ -15,6 +15,7 @@ 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." +available_seasons = 7 allowed_water_types = 2 rarity = 0 base_catch_weight = 2.0 diff --git a/fish/species/cusk/cusk.tres b/fish/species/cusk/cusk.tres index c43b1b7..6e69dd6 100644 --- a/fish/species/cusk/cusk.tres +++ b/fish/species/cusk/cusk.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 13 allowed_water_types = 2 rarity = 1 base_catch_weight = 0.75 diff --git a/fish/species/cuttlefish_common/cuttlefish_common.tres b/fish/species/cuttlefish_common/cuttlefish_common.tres index 98ec8a0..f6b678a 100644 --- a/fish/species/cuttlefish_common/cuttlefish_common.tres +++ b/fish/species/cuttlefish_common/cuttlefish_common.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 1 base_catch_weight = 0.55 diff --git a/fish/species/cuttlefish_flamboyant/cuttlefish_flamboyant.tres b/fish/species/cuttlefish_flamboyant/cuttlefish_flamboyant.tres index 4c19554..1af0669 100644 --- a/fish/species/cuttlefish_flamboyant/cuttlefish_flamboyant.tres +++ b/fish/species/cuttlefish_flamboyant/cuttlefish_flamboyant.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 3 base_catch_weight = 0.1 diff --git a/fish/species/damselfish_sergeant_major/damselfish_sergeant_major.tres b/fish/species/damselfish_sergeant_major/damselfish_sergeant_major.tres index 24260cf..0e605c0 100644 --- a/fish/species/damselfish_sergeant_major/damselfish_sergeant_major.tres +++ b/fish/species/damselfish_sergeant_major/damselfish_sergeant_major.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 0 base_catch_weight = 2.5 diff --git a/fish/species/danio_zebra/danio_zebra.tres b/fish/species/danio_zebra/danio_zebra.tres index 72567d8..285687e 100644 --- a/fish/species/danio_zebra/danio_zebra.tres +++ b/fish/species/danio_zebra/danio_zebra.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 15 allowed_water_types = 1 rarity = 0 base_catch_weight = 1.35 diff --git a/fish/species/discus/discus.tres b/fish/species/discus/discus.tres index 4b84820..4fcd169 100644 --- a/fish/species/discus/discus.tres +++ b/fish/species/discus/discus.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 1 rarity = 3 base_catch_weight = 0.12 diff --git a/fish/species/dolphin_bottlenose/dolphin_bottlenose.tres b/fish/species/dolphin_bottlenose/dolphin_bottlenose.tres index 8d07e73..abbc37f 100644 --- a/fish/species/dolphin_bottlenose/dolphin_bottlenose.tres +++ b/fish/species/dolphin_bottlenose/dolphin_bottlenose.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 4 base_catch_weight = 0.012 diff --git a/fish/species/dorado_golden/dorado_golden.tres b/fish/species/dorado_golden/dorado_golden.tres index c5f7abf..4110ebe 100644 --- a/fish/species/dorado_golden/dorado_golden.tres +++ b/fish/species/dorado_golden/dorado_golden.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 1 rarity = 3 base_catch_weight = 0.1 diff --git a/fish/species/dugong/dugong.tres b/fish/species/dugong/dugong.tres index d6c756d..3225a52 100644 --- a/fish/species/dugong/dugong.tres +++ b/fish/species/dugong/dugong.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 4 base_catch_weight = 0.011 diff --git a/fish/species/eel_american/eel_american.tres b/fish/species/eel_american/eel_american.tres index 54a671b..b1f4b8e 100644 --- a/fish/species/eel_american/eel_american.tres +++ b/fish/species/eel_american/eel_american.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 12 allowed_water_types = 3 rarity = 2 base_catch_weight = 0.25 diff --git a/fish/species/eel_european/eel_european.tres b/fish/species/eel_european/eel_european.tres index 54a0c61..4ef5246 100644 --- a/fish/species/eel_european/eel_european.tres +++ b/fish/species/eel_european/eel_european.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 12 allowed_water_types = 3 rarity = 2 base_catch_weight = 0.2 diff --git a/fish/species/electric_eel/electric_eel.tres b/fish/species/electric_eel/electric_eel.tres index cc63eea..7792d81 100644 --- a/fish/species/electric_eel/electric_eel.tres +++ b/fish/species/electric_eel/electric_eel.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 1 rarity = 3 base_catch_weight = 0.1 diff --git a/fish/species/fallfish/fallfish.tres b/fish/species/fallfish/fallfish.tres index 72e3774..02c6bbe 100644 --- a/fish/species/fallfish/fallfish.tres +++ b/fish/species/fallfish/fallfish.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 7 allowed_water_types = 1 rarity = 1 base_catch_weight = 0.9 diff --git a/fish/species/fangtooth_common/fangtooth_common.tres b/fish/species/fangtooth_common/fangtooth_common.tres index e53e1ad..c7312b0 100644 --- a/fish/species/fangtooth_common/fangtooth_common.tres +++ b/fish/species/fangtooth_common/fangtooth_common.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 3 base_catch_weight = 0.1 diff --git a/fish/species/flounder_peacock/flounder_peacock.tres b/fish/species/flounder_peacock/flounder_peacock.tres index 54737a4..50bd7dc 100644 --- a/fish/species/flounder_peacock/flounder_peacock.tres +++ b/fish/species/flounder_peacock/flounder_peacock.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 2 base_catch_weight = 0.3 diff --git a/fish/species/flounder_summer/flounder_summer.tres b/fish/species/flounder_summer/flounder_summer.tres index 9d5892b..b5bb969 100644 --- a/fish/species/flounder_summer/flounder_summer.tres +++ b/fish/species/flounder_summer/flounder_summer.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 7 allowed_water_types = 2 rarity = 1 base_catch_weight = 0.9 diff --git a/fish/species/flounder_winter/flounder_winter.tres b/fish/species/flounder_winter/flounder_winter.tres index 6ad7a4b..1297bcb 100644 --- a/fish/species/flounder_winter/flounder_winter.tres +++ b/fish/species/flounder_winter/flounder_winter.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 13 allowed_water_types = 2 rarity = 0 base_catch_weight = 1.8 diff --git a/fish/species/flyingfish_tropical/flyingfish_tropical.tres b/fish/species/flyingfish_tropical/flyingfish_tropical.tres index 7f94269..6376ead 100644 --- a/fish/species/flyingfish_tropical/flyingfish_tropical.tres +++ b/fish/species/flyingfish_tropical/flyingfish_tropical.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 2 base_catch_weight = 0.35 diff --git a/fish/species/foureyes_largescale/foureyes_largescale.tres b/fish/species/foureyes_largescale/foureyes_largescale.tres index 23b1b6c..a2e5361 100644 --- a/fish/species/foureyes_largescale/foureyes_largescale.tres +++ b/fish/species/foureyes_largescale/foureyes_largescale.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 15 allowed_water_types = 3 rarity = 2 base_catch_weight = 0.32 diff --git a/fish/species/freshwater_drum/freshwater_drum.tres b/fish/species/freshwater_drum/freshwater_drum.tres index bd1389b..5d710f3 100644 --- a/fish/species/freshwater_drum/freshwater_drum.tres +++ b/fish/species/freshwater_drum/freshwater_drum.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 7 allowed_water_types = 1 rarity = 1 base_catch_weight = 0.7 diff --git a/fish/species/gar_alligator/gar_alligator.tres b/fish/species/gar_alligator/gar_alligator.tres index 48c02e2..5a00da6 100644 --- a/fish/species/gar_alligator/gar_alligator.tres +++ b/fish/species/gar_alligator/gar_alligator.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 7 allowed_water_types = 1 rarity = 4 base_catch_weight = 0.055 diff --git a/fish/species/gar_longnose/gar_longnose.png b/fish/species/gar_longnose/gar_longnose.png new file mode 100644 index 0000000..2cfa552 Binary files /dev/null and b/fish/species/gar_longnose/gar_longnose.png differ diff --git a/fish/species/gar_longnose/gar_longnose.png.import b/fish/species/gar_longnose/gar_longnose.png.import new file mode 100644 index 0000000..385d22c --- /dev/null +++ b/fish/species/gar_longnose/gar_longnose.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://brb46wv5v6htb" +path="res://.godot/imported/gar_longnose.png-91bf63255a3f7c479162d07d1e71edf8.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://fish/species/gar_longnose/gar_longnose.png" +dest_files=["res://.godot/imported/gar_longnose.png-91bf63255a3f7c479162d07d1e71edf8.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 diff --git a/fish/species/gar_longnose/gar_longnose.tres b/fish/species/gar_longnose/gar_longnose.tres index 29a8d68..ff1d808 100644 --- a/fish/species/gar_longnose/gar_longnose.tres +++ b/fish/species/gar_longnose/gar_longnose.tres @@ -1,8 +1,9 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 format=3] +[gd_resource type="Resource" script_class="FishData" load_steps=5 format=3] [ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"] [ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"] [ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"] +[ext_resource type="Texture2D" path="res://fish/species/gar_longnose/gar_longnose.png" id="4_texture"] [sub_resource type="Resource" id="Availability"] script = ExtResource("3_availability") @@ -12,10 +13,11 @@ allow_night = false script = ExtResource("1_fish_data") id = &"gar_longnose" display_name = "longnose gar" -active = false +active = true 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." +available_seasons = 7 allowed_water_types = 1 rarity = 2 base_catch_weight = 0.24 @@ -26,3 +28,4 @@ weight_max_lb = 35.0 sell_value_min = 14 sell_value_max = 34 sell_value_curve = 0.85 +display_texture = ExtResource("4_texture") diff --git a/fish/species/gar_spotted/gar_spotted.png b/fish/species/gar_spotted/gar_spotted.png new file mode 100644 index 0000000..80cdfdf Binary files /dev/null and b/fish/species/gar_spotted/gar_spotted.png differ diff --git a/fish/species/gar_spotted/gar_spotted.png.import b/fish/species/gar_spotted/gar_spotted.png.import new file mode 100644 index 0000000..95d737f --- /dev/null +++ b/fish/species/gar_spotted/gar_spotted.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b81tl0mmq7gxx" +path="res://.godot/imported/gar_spotted.png-0361bdcc323bb7449e240ef3835b7e18.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://fish/species/gar_spotted/gar_spotted.png" +dest_files=["res://.godot/imported/gar_spotted.png-0361bdcc323bb7449e240ef3835b7e18.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 diff --git a/fish/species/gar_spotted/gar_spotted.tres b/fish/species/gar_spotted/gar_spotted.tres index abb3d16..25f92cd 100644 --- a/fish/species/gar_spotted/gar_spotted.tres +++ b/fish/species/gar_spotted/gar_spotted.tres @@ -1,8 +1,9 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 format=3] +[gd_resource type="Resource" script_class="FishData" load_steps=5 format=3] [ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"] [ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"] [ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"] +[ext_resource type="Texture2D" path="res://fish/species/gar_spotted/gar_spotted.png" id="4_texture"] [sub_resource type="Resource" id="Availability"] script = ExtResource("3_availability") @@ -13,10 +14,11 @@ require_fog = true script = ExtResource("1_fish_data") id = &"gar_spotted" display_name = "spotted gar" -active = false +active = true 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." +available_seasons = 7 allowed_water_types = 1 rarity = 2 base_catch_weight = 0.2 @@ -27,3 +29,4 @@ weight_max_lb = 15.0 sell_value_min = 13 sell_value_max = 29 sell_value_curve = 0.88 +display_texture = ExtResource("4_texture") diff --git a/fish/species/goby_round/fish_goby_round.png b/fish/species/goby_round/fish_goby_round.png index 89e3f78..02a5855 100644 Binary files a/fish/species/goby_round/fish_goby_round.png and b/fish/species/goby_round/fish_goby_round.png differ diff --git a/fish/species/goby_round/goby_round.tres b/fish/species/goby_round/goby_round.tres index 20d76a4..af135e0 100644 --- a/fish/species/goby_round/goby_round.tres +++ b/fish/species/goby_round/goby_round.tres @@ -18,6 +18,7 @@ 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." +available_seasons = 15 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 index c623dc8..69b28a1 100644 --- a/fish/species/goldeye/goldeye.tres +++ b/fish/species/goldeye/goldeye.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 13 allowed_water_types = 1 rarity = 2 base_catch_weight = 0.3 diff --git a/fish/species/goldfish/fish_goldfish.png b/fish/species/goldfish/fish_goldfish.png index 7ca035b..7214195 100644 Binary files a/fish/species/goldfish/fish_goldfish.png and b/fish/species/goldfish/fish_goldfish.png differ diff --git a/fish/species/goldfish/goldfish.tres b/fish/species/goldfish/goldfish.tres index c70b2d3..a750280 100644 --- a/fish/species/goldfish/goldfish.tres +++ b/fish/species/goldfish/goldfish.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 1 base_catch_weight = 0.5 catch_profile = ExtResource("2_profile") diff --git a/fish/species/goldfish_bubbleeye/fish_goldfish_bubbleeye.png b/fish/species/goldfish_bubbleeye/fish_goldfish_bubbleeye.png index b621e16..c25b2f7 100644 Binary files a/fish/species/goldfish_bubbleeye/fish_goldfish_bubbleeye.png and b/fish/species/goldfish_bubbleeye/fish_goldfish_bubbleeye.png differ diff --git a/fish/species/goldfish_bubbleeye/goldfish_bubbleeye.tres b/fish/species/goldfish_bubbleeye/goldfish_bubbleeye.tres index aa75c08..56d0fac 100644 --- a/fish/species/goldfish_bubbleeye/goldfish_bubbleeye.tres +++ b/fish/species/goldfish_bubbleeye/goldfish_bubbleeye.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 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 index b7a9095..5cc9eee 100644 --- a/fish/species/gourami_giant/gourami_giant.tres +++ b/fish/species/gourami_giant/gourami_giant.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 15 allowed_water_types = 1 rarity = 2 base_catch_weight = 0.25 diff --git a/fish/species/grayling_arctic/grayling_arctic.tres b/fish/species/grayling_arctic/grayling_arctic.tres index fc1e09d..ee7902a 100644 --- a/fish/species/grayling_arctic/grayling_arctic.tres +++ b/fish/species/grayling_arctic/grayling_arctic.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 13 allowed_water_types = 1 rarity = 1 base_catch_weight = 0.75 diff --git a/fish/species/green_sunfish/green_sunfish.tres b/fish/species/green_sunfish/green_sunfish.tres index 92a6838..37db5fc 100644 --- a/fish/species/green_sunfish/green_sunfish.tres +++ b/fish/species/green_sunfish/green_sunfish.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 7 allowed_water_types = 1 rarity = 0 base_catch_weight = 3.2 diff --git a/fish/species/grouper_atlantic_goliath/grouper_atlantic_goliath.tres b/fish/species/grouper_atlantic_goliath/grouper_atlantic_goliath.tres index fae0ea5..7bb6179 100644 --- a/fish/species/grouper_atlantic_goliath/grouper_atlantic_goliath.tres +++ b/fish/species/grouper_atlantic_goliath/grouper_atlantic_goliath.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 4 base_catch_weight = 0.05 diff --git a/fish/species/grouper_giant/grouper_giant.tres b/fish/species/grouper_giant/grouper_giant.tres index bc4ecf1..7ca4c07 100644 --- a/fish/species/grouper_giant/grouper_giant.tres +++ b/fish/species/grouper_giant/grouper_giant.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 4 base_catch_weight = 0.045 diff --git a/fish/species/grouper_gulf/fish_grouper_gulf.png b/fish/species/grouper_gulf/fish_grouper_gulf.png index e74ea10..b1dd35a 100644 Binary files a/fish/species/grouper_gulf/fish_grouper_gulf.png and b/fish/species/grouper_gulf/fish_grouper_gulf.png differ diff --git a/fish/species/grouper_gulf/grouper_gulf.tres b/fish/species/grouper_gulf/grouper_gulf.tres index c3aaffa..f8aaca6 100644 --- a/fish/species/grouper_gulf/grouper_gulf.tres +++ b/fish/species/grouper_gulf/grouper_gulf.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 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 index 06bbcdf..fe6ad35 100644 --- a/fish/species/grouper_nassau/grouper_nassau.tres +++ b/fish/species/grouper_nassau/grouper_nassau.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 3 base_catch_weight = 0.12 diff --git a/fish/species/grouper_red/fish_grouper_red.png b/fish/species/grouper_red/fish_grouper_red.png index 33b5481..f0564b7 100644 Binary files a/fish/species/grouper_red/fish_grouper_red.png and b/fish/species/grouper_red/fish_grouper_red.png differ diff --git a/fish/species/grouper_red/grouper_red.tres b/fish/species/grouper_red/grouper_red.tres index b83fecb..55f8379 100644 --- a/fish/species/grouper_red/grouper_red.tres +++ b/fish/species/grouper_red/grouper_red.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 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 index ef78e38..91771a6 100644 --- a/fish/species/grunt_bluestriped/grunt_bluestriped.tres +++ b/fish/species/grunt_bluestriped/grunt_bluestriped.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 0 base_catch_weight = 2.0 diff --git a/fish/species/grunt_french/grunt_french.tres b/fish/species/grunt_french/grunt_french.tres index d695ecd..20b1a62 100644 --- a/fish/species/grunt_french/grunt_french.tres +++ b/fish/species/grunt_french/grunt_french.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 0 base_catch_weight = 2.0 diff --git a/fish/species/gulper_eel/gulper_eel.tres b/fish/species/gulper_eel/gulper_eel.tres index 328a595..d24bcb8 100644 --- a/fish/species/gulper_eel/gulper_eel.tres +++ b/fish/species/gulper_eel/gulper_eel.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 4 base_catch_weight = 0.04 diff --git a/fish/species/guppy/guppy.tres b/fish/species/guppy/guppy.tres index 911447f..fe4877c 100644 --- a/fish/species/guppy/guppy.tres +++ b/fish/species/guppy/guppy.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 15 allowed_water_types = 1 rarity = 0 base_catch_weight = 1.5 diff --git a/fish/species/haddock/haddock.tres b/fish/species/haddock/haddock.tres index 0f73e63..19c674b 100644 --- a/fish/species/haddock/haddock.tres +++ b/fish/species/haddock/haddock.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 13 allowed_water_types = 2 rarity = 0 base_catch_weight = 2.0 diff --git a/fish/species/hake_pacific/hake_pacific.tres b/fish/species/hake_pacific/hake_pacific.tres index 85b521b..24ddb93 100644 --- a/fish/species/hake_pacific/hake_pacific.tres +++ b/fish/species/hake_pacific/hake_pacific.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 13 allowed_water_types = 2 rarity = 0 base_catch_weight = 1.7 diff --git a/fish/species/hake_silver/hake_silver.tres b/fish/species/hake_silver/hake_silver.tres index 79d7ea0..cbce843 100644 --- a/fish/species/hake_silver/hake_silver.tres +++ b/fish/species/hake_silver/hake_silver.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 13 allowed_water_types = 2 rarity = 0 base_catch_weight = 1.7 diff --git a/fish/species/halfbeak_ballyhoo/halfbeak_ballyhoo.tres b/fish/species/halfbeak_ballyhoo/halfbeak_ballyhoo.tres index 7362805..88df91f 100644 --- a/fish/species/halfbeak_ballyhoo/halfbeak_ballyhoo.tres +++ b/fish/species/halfbeak_ballyhoo/halfbeak_ballyhoo.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 0 base_catch_weight = 2.5 diff --git a/fish/species/halibut_atlantic/halibut_atlantic.tres b/fish/species/halibut_atlantic/halibut_atlantic.tres index c8bf167..332c9ef 100644 --- a/fish/species/halibut_atlantic/halibut_atlantic.tres +++ b/fish/species/halibut_atlantic/halibut_atlantic.tres @@ -15,6 +15,7 @@ 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." +available_seasons = 13 allowed_water_types = 2 rarity = 3 base_catch_weight = 0.1 diff --git a/fish/species/halibut_pacific/halibut_pacific.tres b/fish/species/halibut_pacific/halibut_pacific.tres index 9980aef..5bdb5cb 100644 --- a/fish/species/halibut_pacific/halibut_pacific.tres +++ b/fish/species/halibut_pacific/halibut_pacific.tres @@ -15,6 +15,7 @@ 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." +available_seasons = 13 allowed_water_types = 2 rarity = 3 base_catch_weight = 0.1 diff --git a/fish/species/hellbender/hellbender.tres b/fish/species/hellbender/hellbender.tres index 8a9d228..44c050a 100644 --- a/fish/species/hellbender/hellbender.tres +++ b/fish/species/hellbender/hellbender.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 7 allowed_water_types = 1 rarity = 3 base_catch_weight = 0.1 diff --git a/fish/species/herring_atlantic/herring_atlantic.tres b/fish/species/herring_atlantic/herring_atlantic.tres index 00f1e36..6cea5a6 100644 --- a/fish/species/herring_atlantic/herring_atlantic.tres +++ b/fish/species/herring_atlantic/herring_atlantic.tres @@ -15,6 +15,7 @@ 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." +available_seasons = 13 allowed_water_types = 2 rarity = 0 base_catch_weight = 3.0 diff --git a/fish/species/herring_pacific/herring_pacific.tres b/fish/species/herring_pacific/herring_pacific.tres index 27dcff7..4b20d90 100644 --- a/fish/species/herring_pacific/herring_pacific.tres +++ b/fish/species/herring_pacific/herring_pacific.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 13 allowed_water_types = 2 rarity = 0 base_catch_weight = 2.8 diff --git a/fish/species/hogfish/hogfish.tres b/fish/species/hogfish/hogfish.tres index 8d7dd29..0bbd835 100644 --- a/fish/species/hogfish/hogfish.tres +++ b/fish/species/hogfish/hogfish.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 2 base_catch_weight = 0.3 diff --git a/fish/species/ide/ide.tres b/fish/species/ide/ide.tres index dcc9980..63be3b3 100644 --- a/fish/species/ide/ide.tres +++ b/fish/species/ide/ide.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 7 allowed_water_types = 1 rarity = 1 base_catch_weight = 0.8 diff --git a/fish/species/jack_crevalle/jack_crevalle.tres b/fish/species/jack_crevalle/jack_crevalle.tres index e20485e..e2e3dc8 100644 --- a/fish/species/jack_crevalle/jack_crevalle.tres +++ b/fish/species/jack_crevalle/jack_crevalle.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 6 allowed_water_types = 2 rarity = 1 base_catch_weight = 0.8 diff --git a/fish/species/jelly_crystal/jelly_crystal.tres b/fish/species/jelly_crystal/jelly_crystal.tres index fe2f34e..9abd34d 100644 --- a/fish/species/jelly_crystal/jelly_crystal.tres +++ b/fish/species/jelly_crystal/jelly_crystal.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 9 allowed_water_types = 2 rarity = 2 base_catch_weight = 0.24 diff --git a/fish/species/jelly_lions_mane/jelly_lions_mane.tres b/fish/species/jelly_lions_mane/jelly_lions_mane.tres index cedb3c8..4bfa8b3 100644 --- a/fish/species/jelly_lions_mane/jelly_lions_mane.tres +++ b/fish/species/jelly_lions_mane/jelly_lions_mane.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 13 allowed_water_types = 2 rarity = 3 base_catch_weight = 0.11 diff --git a/fish/species/jelly_moon/jelly_moon.tres b/fish/species/jelly_moon/jelly_moon.tres index ef7cbe1..2c72f03 100644 --- a/fish/species/jelly_moon/jelly_moon.tres +++ b/fish/species/jelly_moon/jelly_moon.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 1 base_catch_weight = 0.7 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 index e3697b3..9e559ec 100644 --- a/fish/species/jelly_pacific_sea_nettle/jelly_pacific_sea_nettle.tres +++ b/fish/species/jelly_pacific_sea_nettle/jelly_pacific_sea_nettle.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 6 allowed_water_types = 2 rarity = 2 base_catch_weight = 0.28 diff --git a/fish/species/jelly_sea_wasp/jelly_sea_wasp.tres b/fish/species/jelly_sea_wasp/jelly_sea_wasp.tres index 64c2288..a68cb4a 100644 --- a/fish/species/jelly_sea_wasp/jelly_sea_wasp.tres +++ b/fish/species/jelly_sea_wasp/jelly_sea_wasp.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 4 base_catch_weight = 0.035 diff --git a/fish/species/knifefish_clown/knifefish_clown.tres b/fish/species/knifefish_clown/knifefish_clown.tres index 23781ad..3ba5b63 100644 --- a/fish/species/knifefish_clown/knifefish_clown.tres +++ b/fish/species/knifefish_clown/knifefish_clown.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 1 rarity = 2 base_catch_weight = 0.25 diff --git a/fish/species/koi/koi.tres b/fish/species/koi/koi.tres index 7c110cc..91b465c 100644 --- a/fish/species/koi/koi.tres +++ b/fish/species/koi/koi.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 1 rarity = 2 base_catch_weight = 0.28 diff --git a/fish/species/krill_antarctic/krill_antarctic.tres b/fish/species/krill_antarctic/krill_antarctic.tres index 390487d..3651f23 100644 --- a/fish/species/krill_antarctic/krill_antarctic.tres +++ b/fish/species/krill_antarctic/krill_antarctic.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 2 base_catch_weight = 0.3 diff --git a/fish/species/ladyfish/ladyfish.tres b/fish/species/ladyfish/ladyfish.tres index 1cc8e7b..57029f5 100644 --- a/fish/species/ladyfish/ladyfish.tres +++ b/fish/species/ladyfish/ladyfish.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 0 base_catch_weight = 1.7 diff --git a/fish/species/lanternfish_spotted/lanternfish_spotted.tres b/fish/species/lanternfish_spotted/lanternfish_spotted.tres index 8d47916..c0725d1 100644 --- a/fish/species/lanternfish_spotted/lanternfish_spotted.tres +++ b/fish/species/lanternfish_spotted/lanternfish_spotted.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 2 base_catch_weight = 0.24 diff --git a/fish/species/largemouth_bass/largemouth_bass.tres b/fish/species/largemouth_bass/largemouth_bass.tres index e32cd20..04d157a 100644 --- a/fish/species/largemouth_bass/largemouth_bass.tres +++ b/fish/species/largemouth_bass/largemouth_bass.tres @@ -15,6 +15,7 @@ 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." +available_seasons = 7 allowed_water_types = 1 rarity = 0 base_catch_weight = 2.5 diff --git a/fish/species/lingcod/lingcod.tres b/fish/species/lingcod/lingcod.tres index 34c8c0b..92d4a81 100644 --- a/fish/species/lingcod/lingcod.tres +++ b/fish/species/lingcod/lingcod.tres @@ -15,6 +15,7 @@ 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." +available_seasons = 13 allowed_water_types = 2 rarity = 2 base_catch_weight = 0.25 diff --git a/fish/species/lionfish_red/lionfish_red.tres b/fish/species/lionfish_red/lionfish_red.tres index 9b46e72..564e243 100644 --- a/fish/species/lionfish_red/lionfish_red.tres +++ b/fish/species/lionfish_red/lionfish_red.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 2 base_catch_weight = 0.3 diff --git a/fish/species/loach_clown/loach_clown.tres b/fish/species/loach_clown/loach_clown.tres index afe5549..ba24335 100644 --- a/fish/species/loach_clown/loach_clown.tres +++ b/fish/species/loach_clown/loach_clown.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 1 rarity = 2 base_catch_weight = 0.32 diff --git a/fish/species/loach_weather/loach_weather.tres b/fish/species/loach_weather/loach_weather.tres index 8b23ea1..fa2ae34 100644 --- a/fish/species/loach_weather/loach_weather.tres +++ b/fish/species/loach_weather/loach_weather.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 15 allowed_water_types = 1 rarity = 1 base_catch_weight = 0.85 diff --git a/fish/species/lobster_american/lobster_american.tres b/fish/species/lobster_american/lobster_american.tres index 92bdb7f..b89e992 100644 --- a/fish/species/lobster_american/lobster_american.tres +++ b/fish/species/lobster_american/lobster_american.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 2 base_catch_weight = 0.28 diff --git a/fish/species/lobster_caribbean_spiny/lobster_caribbean_spiny.tres b/fish/species/lobster_caribbean_spiny/lobster_caribbean_spiny.tres index 94672a9..eb9fdde 100644 --- a/fish/species/lobster_caribbean_spiny/lobster_caribbean_spiny.tres +++ b/fish/species/lobster_caribbean_spiny/lobster_caribbean_spiny.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 2 base_catch_weight = 0.25 diff --git a/fish/species/lungfish_west_african/lungfish_west_african.png b/fish/species/lungfish_west_african/lungfish_west_african.png new file mode 100644 index 0000000..9960ab0 Binary files /dev/null and b/fish/species/lungfish_west_african/lungfish_west_african.png differ diff --git a/fish/species/lungfish_west_african/lungfish_west_african.png.import b/fish/species/lungfish_west_african/lungfish_west_african.png.import new file mode 100644 index 0000000..dfb1875 --- /dev/null +++ b/fish/species/lungfish_west_african/lungfish_west_african.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://i7uefoxij0xr" +path="res://.godot/imported/lungfish_west_african.png-39f7845a079da2da99841f01c797b183.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://fish/species/lungfish_west_african/lungfish_west_african.png" +dest_files=["res://.godot/imported/lungfish_west_african.png-39f7845a079da2da99841f01c797b183.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 diff --git a/fish/species/lungfish_west_african/lungfish_west_african.tres b/fish/species/lungfish_west_african/lungfish_west_african.tres index 4baad67..6ae8db6 100644 --- a/fish/species/lungfish_west_african/lungfish_west_african.tres +++ b/fish/species/lungfish_west_african/lungfish_west_african.tres @@ -1,8 +1,9 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 format=3] +[gd_resource type="Resource" script_class="FishData" load_steps=5 format=3] [ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"] [ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"] [ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"] +[ext_resource type="Texture2D" path="res://fish/species/lungfish_west_african/lungfish_west_african.png" id="4_texture"] [sub_resource type="Resource" id="Availability"] script = ExtResource("3_availability") @@ -13,10 +14,11 @@ require_rain = true script = ExtResource("1_fish_data") id = &"lungfish_west_african" display_name = "West African lungfish" -active = false +active = true 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." +available_seasons = 6 allowed_water_types = 1 rarity = 2 base_catch_weight = 0.3 @@ -27,3 +29,4 @@ weight_max_lb = 10.0 sell_value_min = 12 sell_value_max = 28 sell_value_curve = 0.86 +display_texture = ExtResource("4_texture") diff --git a/fish/species/mackerel_atlantic/fish_mackerel_atlantic.png b/fish/species/mackerel_atlantic/fish_mackerel_atlantic.png index 67a2410..e5fbd98 100644 Binary files a/fish/species/mackerel_atlantic/fish_mackerel_atlantic.png and b/fish/species/mackerel_atlantic/fish_mackerel_atlantic.png differ diff --git a/fish/species/mackerel_atlantic/mackerel_atlantic.tres b/fish/species/mackerel_atlantic/mackerel_atlantic.tres index edf6d38..f90a01b 100644 --- a/fish/species/mackerel_atlantic/mackerel_atlantic.tres +++ b/fish/species/mackerel_atlantic/mackerel_atlantic.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 7 allowed_water_types = 2 base_catch_weight = 0.5 catch_profile = ExtResource("2_profile") diff --git a/fish/species/mackerel_cero/fish_mackerel_cero.png b/fish/species/mackerel_cero/fish_mackerel_cero.png index 82cb340..610b99c 100644 Binary files a/fish/species/mackerel_cero/fish_mackerel_cero.png and b/fish/species/mackerel_cero/fish_mackerel_cero.png differ diff --git a/fish/species/mackerel_cero/mackerel_cero.tres b/fish/species/mackerel_cero/mackerel_cero.tres index 6dc9040..598f01b 100644 --- a/fish/species/mackerel_cero/mackerel_cero.tres +++ b/fish/species/mackerel_cero/mackerel_cero.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 1 base_catch_weight = 0.35 diff --git a/fish/species/mackerel_chub/fish_mackerel_chub.png b/fish/species/mackerel_chub/fish_mackerel_chub.png index c0687ff..2d668fd 100644 Binary files a/fish/species/mackerel_chub/fish_mackerel_chub.png and b/fish/species/mackerel_chub/fish_mackerel_chub.png differ diff --git a/fish/species/mackerel_chub/mackerel_chub.tres b/fish/species/mackerel_chub/mackerel_chub.tres index 189904e..7eeefb2 100644 --- a/fish/species/mackerel_chub/mackerel_chub.tres +++ b/fish/species/mackerel_chub/mackerel_chub.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 7 allowed_water_types = 2 base_catch_weight = 0.5 catch_profile = ExtResource("2_profile") diff --git a/fish/species/mackerel_king/fish_mackerel_king.png b/fish/species/mackerel_king/fish_mackerel_king.png index 01fd603..7ec6614 100644 Binary files a/fish/species/mackerel_king/fish_mackerel_king.png and b/fish/species/mackerel_king/fish_mackerel_king.png differ diff --git a/fish/species/mackerel_king/mackerel_king.tres b/fish/species/mackerel_king/mackerel_king.tres index 4e0a047..a167660 100644 --- a/fish/species/mackerel_king/mackerel_king.tres +++ b/fish/species/mackerel_king/mackerel_king.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 6 allowed_water_types = 2 rarity = 1 base_catch_weight = 0.3 diff --git a/fish/species/mackerel_spanish/fish_mackerel_spanish.png b/fish/species/mackerel_spanish/fish_mackerel_spanish.png index 2a97bed..5cbe847 100644 Binary files a/fish/species/mackerel_spanish/fish_mackerel_spanish.png and b/fish/species/mackerel_spanish/fish_mackerel_spanish.png differ diff --git a/fish/species/mackerel_spanish/mackerel_spanish.tres b/fish/species/mackerel_spanish/mackerel_spanish.tres index 0aee136..3dbc07c 100644 --- a/fish/species/mackerel_spanish/mackerel_spanish.tres +++ b/fish/species/mackerel_spanish/mackerel_spanish.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 6 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 index d43c1c5..3c50b22 100644 --- a/fish/species/madtom_tadpole/madtom_tadpole.tres +++ b/fish/species/madtom_tadpole/madtom_tadpole.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 7 allowed_water_types = 1 rarity = 2 base_catch_weight = 0.35 diff --git a/fish/species/mahi_mahi/mahi_mahi.tres b/fish/species/mahi_mahi/mahi_mahi.tres index ded9958..1d688a3 100644 --- a/fish/species/mahi_mahi/mahi_mahi.tres +++ b/fish/species/mahi_mahi/mahi_mahi.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 6 allowed_water_types = 2 rarity = 2 base_catch_weight = 0.28 diff --git a/fish/species/mahseer_golden/mahseer_golden.tres b/fish/species/mahseer_golden/mahseer_golden.tres index 4a51858..dd2bd95 100644 --- a/fish/species/mahseer_golden/mahseer_golden.tres +++ b/fish/species/mahseer_golden/mahseer_golden.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 1 rarity = 3 base_catch_weight = 0.09 diff --git a/fish/species/manatee_west_indian/manatee_west_indian.tres b/fish/species/manatee_west_indian/manatee_west_indian.tres index 65094d0..8c47efe 100644 --- a/fish/species/manatee_west_indian/manatee_west_indian.tres +++ b/fish/species/manatee_west_indian/manatee_west_indian.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 4 base_catch_weight = 0.012 diff --git a/fish/species/manta_ray_giant/manta_ray_giant.tres b/fish/species/manta_ray_giant/manta_ray_giant.tres index 29eeede..ad96bd2 100644 --- a/fish/species/manta_ray_giant/manta_ray_giant.tres +++ b/fish/species/manta_ray_giant/manta_ray_giant.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 4 base_catch_weight = 0.025 diff --git a/fish/species/marlin_black/fish_marlin_black.png b/fish/species/marlin_black/fish_marlin_black.png index 6cbcccd..ae4d9ab 100644 Binary files a/fish/species/marlin_black/fish_marlin_black.png and b/fish/species/marlin_black/fish_marlin_black.png differ diff --git a/fish/species/marlin_black/marlin_black.tres b/fish/species/marlin_black/marlin_black.tres index 93f0ba2..3c2f6f4 100644 --- a/fish/species/marlin_black/marlin_black.tres +++ b/fish/species/marlin_black/marlin_black.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 6 allowed_water_types = 2 rarity = 3 base_catch_weight = 0.08 diff --git a/fish/species/marlin_blue/fish_marlin_blue.png b/fish/species/marlin_blue/fish_marlin_blue.png index 7df059f..0f4c357 100644 Binary files a/fish/species/marlin_blue/fish_marlin_blue.png and b/fish/species/marlin_blue/fish_marlin_blue.png differ diff --git a/fish/species/marlin_blue/marlin_blue.tres b/fish/species/marlin_blue/marlin_blue.tres index 51cff14..92d76d7 100644 --- a/fish/species/marlin_blue/marlin_blue.tres +++ b/fish/species/marlin_blue/marlin_blue.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 6 allowed_water_types = 2 rarity = 4 base_catch_weight = 0.05 diff --git a/fish/species/marlin_white/fish_marlin_white.png b/fish/species/marlin_white/fish_marlin_white.png index 76fb780..327bd91 100644 Binary files a/fish/species/marlin_white/fish_marlin_white.png and b/fish/species/marlin_white/fish_marlin_white.png differ diff --git a/fish/species/marlin_white/marlin_white.tres b/fish/species/marlin_white/marlin_white.tres index bbbf34f..1039aa7 100644 --- a/fish/species/marlin_white/marlin_white.tres +++ b/fish/species/marlin_white/marlin_white.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 6 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 index ced8488..e19f95b 100644 --- a/fish/species/menhaden_atlantic/menhaden_atlantic.tres +++ b/fish/species/menhaden_atlantic/menhaden_atlantic.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 7 allowed_water_types = 2 rarity = 0 base_catch_weight = 3.0 diff --git a/fish/species/milkfish/milkfish.tres b/fish/species/milkfish/milkfish.tres index 08d5627..b7cbf82 100644 --- a/fish/species/milkfish/milkfish.tres +++ b/fish/species/milkfish/milkfish.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 0 base_catch_weight = 1.8 diff --git a/fish/species/minnow_fathead/minnow_fathead.tres b/fish/species/minnow_fathead/minnow_fathead.tres index be28197..630b8c5 100644 --- a/fish/species/minnow_fathead/minnow_fathead.tres +++ b/fish/species/minnow_fathead/minnow_fathead.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 7 allowed_water_types = 1 rarity = 0 base_catch_weight = 4.5 diff --git a/fish/species/monkfish/monkfish.tres b/fish/species/monkfish/monkfish.tres index a4374e1..82319f8 100644 --- a/fish/species/monkfish/monkfish.tres +++ b/fish/species/monkfish/monkfish.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 13 allowed_water_types = 2 rarity = 2 base_catch_weight = 0.25 diff --git a/fish/species/mooneye/mooneye.tres b/fish/species/mooneye/mooneye.tres index e663618..c04be25 100644 --- a/fish/species/mooneye/mooneye.tres +++ b/fish/species/mooneye/mooneye.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 13 allowed_water_types = 1 rarity = 1 base_catch_weight = 0.85 diff --git a/fish/species/moray_green/moray_green.tres b/fish/species/moray_green/moray_green.tres index 36aee31..48258b5 100644 --- a/fish/species/moray_green/moray_green.tres +++ b/fish/species/moray_green/moray_green.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 2 base_catch_weight = 0.28 diff --git a/fish/species/mudskipper_atlantic/mudskipper_atlantic.tres b/fish/species/mudskipper_atlantic/mudskipper_atlantic.tres index f548d93..477183a 100644 --- a/fish/species/mudskipper_atlantic/mudskipper_atlantic.tres +++ b/fish/species/mudskipper_atlantic/mudskipper_atlantic.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 1 base_catch_weight = 1.0 diff --git a/fish/species/mullet_red/mullet_red.tres b/fish/species/mullet_red/mullet_red.tres index 3b2a878..ed17234 100644 --- a/fish/species/mullet_red/mullet_red.tres +++ b/fish/species/mullet_red/mullet_red.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 7 allowed_water_types = 2 rarity = 1 base_catch_weight = 0.9 diff --git a/fish/species/mullet_striped/mullet_striped.tres b/fish/species/mullet_striped/mullet_striped.tres index 7d75d6b..2affb1b 100644 --- a/fish/species/mullet_striped/mullet_striped.tres +++ b/fish/species/mullet_striped/mullet_striped.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 7 allowed_water_types = 3 rarity = 0 base_catch_weight = 2.5 diff --git a/fish/species/muskellunge/muskellunge.tres b/fish/species/muskellunge/muskellunge.tres index 84c8513..6bb8997 100644 --- a/fish/species/muskellunge/muskellunge.tres +++ b/fish/species/muskellunge/muskellunge.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 13 allowed_water_types = 1 rarity = 3 base_catch_weight = 0.11 diff --git a/fish/species/nautilus_chambered/nautilus_chambered.tres b/fish/species/nautilus_chambered/nautilus_chambered.tres index fd6189c..b38815d 100644 --- a/fish/species/nautilus_chambered/nautilus_chambered.tres +++ b/fish/species/nautilus_chambered/nautilus_chambered.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 4 base_catch_weight = 0.05 diff --git a/fish/species/needlefish_hound/needlefish_hound.tres b/fish/species/needlefish_hound/needlefish_hound.tres index ecb8226..4eda89e 100644 --- a/fish/species/needlefish_hound/needlefish_hound.tres +++ b/fish/species/needlefish_hound/needlefish_hound.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 2 base_catch_weight = 0.3 diff --git a/fish/species/oarfish_giant/oarfish_giant.tres b/fish/species/oarfish_giant/oarfish_giant.tres index f34adcc..3687f0f 100644 --- a/fish/species/oarfish_giant/oarfish_giant.tres +++ b/fish/species/oarfish_giant/oarfish_giant.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 4 base_catch_weight = 0.035 diff --git a/fish/species/ocean_perch_pacific/ocean_perch_pacific.tres b/fish/species/ocean_perch_pacific/ocean_perch_pacific.tres index a7f9873..e02db9a 100644 --- a/fish/species/ocean_perch_pacific/ocean_perch_pacific.tres +++ b/fish/species/ocean_perch_pacific/ocean_perch_pacific.tres @@ -15,6 +15,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 1 base_catch_weight = 0.8 diff --git a/fish/species/octopus_common/octopus_common.tres b/fish/species/octopus_common/octopus_common.tres index b86950e..66278ee 100644 --- a/fish/species/octopus_common/octopus_common.tres +++ b/fish/species/octopus_common/octopus_common.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 1 base_catch_weight = 0.65 diff --git a/fish/species/octopus_day/octopus_day.tres b/fish/species/octopus_day/octopus_day.tres index aada4c1..6251fe8 100644 --- a/fish/species/octopus_day/octopus_day.tres +++ b/fish/species/octopus_day/octopus_day.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 2 base_catch_weight = 0.24 diff --git a/fish/species/octopus_giant_pacific/octopus_giant_pacific.tres b/fish/species/octopus_giant_pacific/octopus_giant_pacific.tres index 09aca6d..438eb60 100644 --- a/fish/species/octopus_giant_pacific/octopus_giant_pacific.tres +++ b/fish/species/octopus_giant_pacific/octopus_giant_pacific.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 3 base_catch_weight = 0.1 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 index a59bd06..9b538f2 100644 --- a/fish/species/octopus_greater_blue_ringed/octopus_greater_blue_ringed.tres +++ b/fish/species/octopus_greater_blue_ringed/octopus_greater_blue_ringed.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 4 base_catch_weight = 0.04 diff --git a/fish/species/opah/opah.tres b/fish/species/opah/opah.tres index 2bb4231..a7d3fd1 100644 --- a/fish/species/opah/opah.tres +++ b/fish/species/opah/opah.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 6 allowed_water_types = 2 rarity = 3 base_catch_weight = 0.09 diff --git a/fish/species/oscar/oscar.tres b/fish/species/oscar/oscar.tres index d3da024..bf44caa 100644 --- a/fish/species/oscar/oscar.tres +++ b/fish/species/oscar/oscar.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 15 allowed_water_types = 1 rarity = 1 base_catch_weight = 0.8 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 index cc95d74..74a99d7 100644 --- a/fish/species/oyster_black_lip_pearl/oyster_black_lip_pearl.tres +++ b/fish/species/oyster_black_lip_pearl/oyster_black_lip_pearl.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 2 base_catch_weight = 0.22 diff --git a/fish/species/paddlefish/paddlefish.png b/fish/species/paddlefish/paddlefish.png new file mode 100644 index 0000000..4a564d2 Binary files /dev/null and b/fish/species/paddlefish/paddlefish.png differ diff --git a/fish/species/paddlefish/paddlefish.png.import b/fish/species/paddlefish/paddlefish.png.import new file mode 100644 index 0000000..543fc80 --- /dev/null +++ b/fish/species/paddlefish/paddlefish.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://djnsidpdhgay5" +path="res://.godot/imported/paddlefish.png-396db174ea9cb0a42741f573e0ac5be3.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://fish/species/paddlefish/paddlefish.png" +dest_files=["res://.godot/imported/paddlefish.png-396db174ea9cb0a42741f573e0ac5be3.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 diff --git a/fish/species/paddlefish/paddlefish.tres b/fish/species/paddlefish/paddlefish.tres index c9d4925..27d1696 100644 --- a/fish/species/paddlefish/paddlefish.tres +++ b/fish/species/paddlefish/paddlefish.tres @@ -1,8 +1,9 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 format=3] +[gd_resource type="Resource" script_class="FishData" load_steps=5 format=3] [ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"] [ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"] [ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"] +[ext_resource type="Texture2D" path="res://fish/species/paddlefish/paddlefish.png" id="4_texture"] [sub_resource type="Resource" id="Availability"] script = ExtResource("3_availability") @@ -13,10 +14,11 @@ require_rain = true script = ExtResource("1_fish_data") id = &"paddlefish" display_name = "paddlefish" -active = false +active = true 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." +available_seasons = 3 allowed_water_types = 1 rarity = 3 base_catch_weight = 0.1 @@ -27,3 +29,4 @@ weight_max_lb = 120.0 sell_value_min = 34 sell_value_max = 76 sell_value_curve = 0.82 +display_texture = ExtResource("4_texture") diff --git a/fish/species/parrotfish_rainbow/parrotfish_rainbow.tres b/fish/species/parrotfish_rainbow/parrotfish_rainbow.tres index 3320b61..06df938 100644 --- a/fish/species/parrotfish_rainbow/parrotfish_rainbow.tres +++ b/fish/species/parrotfish_rainbow/parrotfish_rainbow.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 3 base_catch_weight = 0.12 diff --git a/fish/species/parrotfish_stoplight/parrotfish_stoplight.tres b/fish/species/parrotfish_stoplight/parrotfish_stoplight.tres index 2392e88..3cc5389 100644 --- a/fish/species/parrotfish_stoplight/parrotfish_stoplight.tres +++ b/fish/species/parrotfish_stoplight/parrotfish_stoplight.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 2 base_catch_weight = 0.28 diff --git a/fish/species/peacock_bass/peacock_bass.tres b/fish/species/peacock_bass/peacock_bass.tres index 39487fe..eaae159 100644 --- a/fish/species/peacock_bass/peacock_bass.tres +++ b/fish/species/peacock_bass/peacock_bass.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 15 allowed_water_types = 1 rarity = 2 base_catch_weight = 0.25 diff --git a/fish/species/permit/permit.tres b/fish/species/permit/permit.tres index bd36724..f9c0d95 100644 --- a/fish/species/permit/permit.tres +++ b/fish/species/permit/permit.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 3 base_catch_weight = 0.11 diff --git a/fish/species/pickerel_chain/pickerel_chain.tres b/fish/species/pickerel_chain/pickerel_chain.tres index f69ab5f..eec103a 100644 --- a/fish/species/pickerel_chain/pickerel_chain.tres +++ b/fish/species/pickerel_chain/pickerel_chain.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 13 allowed_water_types = 1 rarity = 1 base_catch_weight = 0.8 diff --git a/fish/species/pickerel_grass/pickerel_grass.tres b/fish/species/pickerel_grass/pickerel_grass.tres index ef59b58..1a25625 100644 --- a/fish/species/pickerel_grass/pickerel_grass.tres +++ b/fish/species/pickerel_grass/pickerel_grass.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 13 allowed_water_types = 1 rarity = 0 base_catch_weight = 2.1 diff --git a/fish/species/pike_northern/pike_northern.tres b/fish/species/pike_northern/pike_northern.tres index eb4dc5d..b7594d1 100644 --- a/fish/species/pike_northern/pike_northern.tres +++ b/fish/species/pike_northern/pike_northern.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 13 allowed_water_types = 1 rarity = 1 base_catch_weight = 0.75 diff --git a/fish/species/pipefish_bay/pipefish_bay.tres b/fish/species/pipefish_bay/pipefish_bay.tres index f5582c4..3bc3407 100644 --- a/fish/species/pipefish_bay/pipefish_bay.tres +++ b/fish/species/pipefish_bay/pipefish_bay.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 1 base_catch_weight = 0.9 diff --git a/fish/species/piranha_red_bellied/piranha_red_bellied.tres b/fish/species/piranha_red_bellied/piranha_red_bellied.tres index efca0b8..ea52350 100644 --- a/fish/species/piranha_red_bellied/piranha_red_bellied.tres +++ b/fish/species/piranha_red_bellied/piranha_red_bellied.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 15 allowed_water_types = 1 rarity = 2 base_catch_weight = 0.3 diff --git a/fish/species/plaice_european/plaice_european.tres b/fish/species/plaice_european/plaice_european.tres index 9e9be9a..17ea57f 100644 --- a/fish/species/plaice_european/plaice_european.tres +++ b/fish/species/plaice_european/plaice_european.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 13 allowed_water_types = 2 rarity = 0 base_catch_weight = 1.8 diff --git a/fish/species/pollock_alaska/pollock_alaska.tres b/fish/species/pollock_alaska/pollock_alaska.tres index 0e4af05..aebdcf4 100644 --- a/fish/species/pollock_alaska/pollock_alaska.tres +++ b/fish/species/pollock_alaska/pollock_alaska.tres @@ -15,6 +15,7 @@ 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." +available_seasons = 13 allowed_water_types = 2 rarity = 0 base_catch_weight = 2.5 diff --git a/fish/species/pollock_atlantic/pollock_atlantic.tres b/fish/species/pollock_atlantic/pollock_atlantic.tres index 7d50342..9e3c322 100644 --- a/fish/species/pollock_atlantic/pollock_atlantic.tres +++ b/fish/species/pollock_atlantic/pollock_atlantic.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 13 allowed_water_types = 2 rarity = 1 base_catch_weight = 0.9 diff --git a/fish/species/pomfret_black/fish_pomfret_black.png b/fish/species/pomfret_black/fish_pomfret_black.png index 14ae878..3fd52d8 100644 Binary files a/fish/species/pomfret_black/fish_pomfret_black.png and b/fish/species/pomfret_black/fish_pomfret_black.png differ diff --git a/fish/species/pomfret_black/pomfret_black.tres b/fish/species/pomfret_black/pomfret_black.tres index d3e73d6..517e5d5 100644 --- a/fish/species/pomfret_black/pomfret_black.tres +++ b/fish/species/pomfret_black/pomfret_black.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 1 base_catch_weight = 0.3 diff --git a/fish/species/pomfret_chinese/fish_pomfret_chinese.png b/fish/species/pomfret_chinese/fish_pomfret_chinese.png index a7bb55e..2280027 100644 Binary files a/fish/species/pomfret_chinese/fish_pomfret_chinese.png and b/fish/species/pomfret_chinese/fish_pomfret_chinese.png differ diff --git a/fish/species/pomfret_chinese/pomfret_chinese.tres b/fish/species/pomfret_chinese/pomfret_chinese.tres index 76d6943..313c0bf 100644 --- a/fish/species/pomfret_chinese/pomfret_chinese.tres +++ b/fish/species/pomfret_chinese/pomfret_chinese.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 1 base_catch_weight = 0.3 diff --git a/fish/species/pomfret_golden/fish_pomfret_golden.png b/fish/species/pomfret_golden/fish_pomfret_golden.png index a844b87..3929da6 100644 Binary files a/fish/species/pomfret_golden/fish_pomfret_golden.png and b/fish/species/pomfret_golden/fish_pomfret_golden.png differ diff --git a/fish/species/pomfret_golden/pomfret_golden.tres b/fish/species/pomfret_golden/pomfret_golden.tres index 8637db1..bcd2469 100644 --- a/fish/species/pomfret_golden/pomfret_golden.tres +++ b/fish/species/pomfret_golden/pomfret_golden.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 2 base_catch_weight = 0.18 diff --git a/fish/species/pomfret_white/fish_pomfret_white.png b/fish/species/pomfret_white/fish_pomfret_white.png index 0f2d426..cf020d5 100644 Binary files a/fish/species/pomfret_white/fish_pomfret_white.png and b/fish/species/pomfret_white/fish_pomfret_white.png differ diff --git a/fish/species/pomfret_white/pomfret_white.tres b/fish/species/pomfret_white/pomfret_white.tres index 7152086..c4114db 100644 --- a/fish/species/pomfret_white/pomfret_white.tres +++ b/fish/species/pomfret_white/pomfret_white.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 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 index 0b73340..d0f6559 100644 --- a/fish/species/pompano_african/pompano_african.tres +++ b/fish/species/pompano_african/pompano_african.tres @@ -15,6 +15,7 @@ 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." +available_seasons = 6 allowed_water_types = 2 rarity = 2 base_catch_weight = 0.26 diff --git a/fish/species/pompano_florida/pompano_florida.tres b/fish/species/pompano_florida/pompano_florida.tres index be7a10e..7ef5dd2 100644 --- a/fish/species/pompano_florida/pompano_florida.tres +++ b/fish/species/pompano_florida/pompano_florida.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 1 base_catch_weight = 0.85 diff --git a/fish/species/porcupinefish_spotted/porcupinefish_spotted.tres b/fish/species/porcupinefish_spotted/porcupinefish_spotted.tres index 1e51582..1e03d89 100644 --- a/fish/species/porcupinefish_spotted/porcupinefish_spotted.tres +++ b/fish/species/porcupinefish_spotted/porcupinefish_spotted.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 3 base_catch_weight = 0.12 diff --git a/fish/species/porgy_scup/porgy_scup.tres b/fish/species/porgy_scup/porgy_scup.tres index dec3c55..ebf9b50 100644 --- a/fish/species/porgy_scup/porgy_scup.tres +++ b/fish/species/porgy_scup/porgy_scup.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 13 allowed_water_types = 2 rarity = 0 base_catch_weight = 2.2 diff --git a/fish/species/pufferfish_guineafowl/pufferfish_guineafowl.tres b/fish/species/pufferfish_guineafowl/pufferfish_guineafowl.tres index 3771896..e75ee2d 100644 --- a/fish/species/pufferfish_guineafowl/pufferfish_guineafowl.tres +++ b/fish/species/pufferfish_guineafowl/pufferfish_guineafowl.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 2 base_catch_weight = 0.3 diff --git a/fish/species/pumpkinseed/pumpkinseed.tres b/fish/species/pumpkinseed/pumpkinseed.tres index 5a24e96..d0ddcd3 100644 --- a/fish/species/pumpkinseed/pumpkinseed.tres +++ b/fish/species/pumpkinseed/pumpkinseed.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 7 allowed_water_types = 1 rarity = 0 base_catch_weight = 3.0 diff --git a/fish/species/queenfish_talang/queenfish_talang.tres b/fish/species/queenfish_talang/queenfish_talang.tres index 6b3f91c..145d0de 100644 --- a/fish/species/queenfish_talang/queenfish_talang.tres +++ b/fish/species/queenfish_talang/queenfish_talang.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 1 base_catch_weight = 0.8 diff --git a/fish/species/quillback/quillback.tres b/fish/species/quillback/quillback.tres index 915fc08..6f59e17 100644 --- a/fish/species/quillback/quillback.tres +++ b/fish/species/quillback/quillback.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 7 allowed_water_types = 1 rarity = 1 base_catch_weight = 0.8 diff --git a/fish/species/red_drum/red_drum.tres b/fish/species/red_drum/red_drum.tres index 98c6bdd..7cbaecc 100644 --- a/fish/species/red_drum/red_drum.tres +++ b/fish/species/red_drum/red_drum.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 7 allowed_water_types = 2 rarity = 1 base_catch_weight = 0.75 diff --git a/fish/species/redear_sunfish/redear_sunfish.tres b/fish/species/redear_sunfish/redear_sunfish.tres index 55221d8..44a3729 100644 --- a/fish/species/redear_sunfish/redear_sunfish.tres +++ b/fish/species/redear_sunfish/redear_sunfish.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 7 allowed_water_types = 1 rarity = 1 base_catch_weight = 1.1 diff --git a/fish/species/redhorse_golden/redhorse_golden.tres b/fish/species/redhorse_golden/redhorse_golden.tres index 15296d5..44ae38f 100644 --- a/fish/species/redhorse_golden/redhorse_golden.tres +++ b/fish/species/redhorse_golden/redhorse_golden.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 7 allowed_water_types = 1 rarity = 1 base_catch_weight = 0.9 diff --git a/fish/species/roach_common/roach_common.tres b/fish/species/roach_common/roach_common.tres index a85b58f..ce38873 100644 --- a/fish/species/roach_common/roach_common.tres +++ b/fish/species/roach_common/roach_common.tres @@ -15,6 +15,7 @@ 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." +available_seasons = 15 allowed_water_types = 1 rarity = 0 base_catch_weight = 2.8 diff --git a/fish/species/rockfish_black/rockfish_black.tres b/fish/species/rockfish_black/rockfish_black.tres index 4bbcd5a..21cd186 100644 --- a/fish/species/rockfish_black/rockfish_black.tres +++ b/fish/species/rockfish_black/rockfish_black.tres @@ -15,6 +15,7 @@ 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." +available_seasons = 13 allowed_water_types = 2 rarity = 0 base_catch_weight = 1.7 diff --git a/fish/species/rockfish_canary/rockfish_canary.tres b/fish/species/rockfish_canary/rockfish_canary.tres index 2aeb290..e20e655 100644 --- a/fish/species/rockfish_canary/rockfish_canary.tres +++ b/fish/species/rockfish_canary/rockfish_canary.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 13 allowed_water_types = 2 rarity = 1 base_catch_weight = 0.7 diff --git a/fish/species/rockfish_yelloweye/rockfish_yelloweye.tres b/fish/species/rockfish_yelloweye/rockfish_yelloweye.tres index d06d1d3..79e8d75 100644 --- a/fish/species/rockfish_yelloweye/rockfish_yelloweye.tres +++ b/fish/species/rockfish_yelloweye/rockfish_yelloweye.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 13 allowed_water_types = 2 rarity = 3 base_catch_weight = 0.09 diff --git a/fish/species/roosterfish/roosterfish.tres b/fish/species/roosterfish/roosterfish.tres index fdb432a..19c009c 100644 --- a/fish/species/roosterfish/roosterfish.tres +++ b/fish/species/roosterfish/roosterfish.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 3 base_catch_weight = 0.11 diff --git a/fish/species/rudd/rudd.tres b/fish/species/rudd/rudd.tres index 317fa8c..6ef01aa 100644 --- a/fish/species/rudd/rudd.tres +++ b/fish/species/rudd/rudd.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 7 allowed_water_types = 1 rarity = 0 base_catch_weight = 2.4 diff --git a/fish/species/sablefish/sablefish.tres b/fish/species/sablefish/sablefish.tres index d180b9b..28daaf3 100644 --- a/fish/species/sablefish/sablefish.tres +++ b/fish/species/sablefish/sablefish.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 2 base_catch_weight = 0.22 diff --git a/fish/species/sailfish/fish_sailfish.png b/fish/species/sailfish/fish_sailfish.png index e359a3e..32b447e 100644 Binary files a/fish/species/sailfish/fish_sailfish.png and b/fish/species/sailfish/fish_sailfish.png differ diff --git a/fish/species/sailfish/sailfish.tres b/fish/species/sailfish/sailfish.tres index 398f62d..7826b0b 100644 --- a/fish/species/sailfish/sailfish.tres +++ b/fish/species/sailfish/sailfish.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 3 base_catch_weight = 0.1 diff --git a/fish/species/salmon_atlantic/fish_salmon_atlantic.png b/fish/species/salmon_atlantic/fish_salmon_atlantic.png index ea6164b..a28192e 100644 Binary files a/fish/species/salmon_atlantic/fish_salmon_atlantic.png and b/fish/species/salmon_atlantic/fish_salmon_atlantic.png differ diff --git a/fish/species/salmon_atlantic/salmon_atlantic.tres b/fish/species/salmon_atlantic/salmon_atlantic.tres index 906d86b..802c177 100644 --- a/fish/species/salmon_atlantic/salmon_atlantic.tres +++ b/fish/species/salmon_atlantic/salmon_atlantic.tres @@ -18,6 +18,7 @@ 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." +available_seasons = 5 allowed_water_types = 2 rarity = 3 base_catch_weight = 0.65 diff --git a/fish/species/salmon_chum/fish_salmon_chum.png b/fish/species/salmon_chum/fish_salmon_chum.png index 920b39d..25a94eb 100644 Binary files a/fish/species/salmon_chum/fish_salmon_chum.png and b/fish/species/salmon_chum/fish_salmon_chum.png differ diff --git a/fish/species/salmon_chum/salmon_chum.tres b/fish/species/salmon_chum/salmon_chum.tres index 67d3684..a41a410 100644 --- a/fish/species/salmon_chum/salmon_chum.tres +++ b/fish/species/salmon_chum/salmon_chum.tres @@ -18,6 +18,7 @@ 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." +available_seasons = 4 allowed_water_types = 2 rarity = 1 base_catch_weight = 2.5 diff --git a/fish/species/salmon_coho/fish_salmon_coho.png b/fish/species/salmon_coho/fish_salmon_coho.png index 2caf696..a7fe5f0 100644 Binary files a/fish/species/salmon_coho/fish_salmon_coho.png and b/fish/species/salmon_coho/fish_salmon_coho.png differ diff --git a/fish/species/salmon_coho/salmon_coho.tres b/fish/species/salmon_coho/salmon_coho.tres index ad51f7b..89d1ea5 100644 --- a/fish/species/salmon_coho/salmon_coho.tres +++ b/fish/species/salmon_coho/salmon_coho.tres @@ -18,6 +18,7 @@ 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." +available_seasons = 12 allowed_water_types = 2 rarity = 2 base_catch_weight = 1.4 diff --git a/fish/species/salmon_pink/fish_salmon_pink.png b/fish/species/salmon_pink/fish_salmon_pink.png index 85b1d88..1fe2554 100644 Binary files a/fish/species/salmon_pink/fish_salmon_pink.png and b/fish/species/salmon_pink/fish_salmon_pink.png differ diff --git a/fish/species/salmon_pink/salmon_pink.tres b/fish/species/salmon_pink/salmon_pink.tres index 7f76c62..94e2f32 100644 --- a/fish/species/salmon_pink/salmon_pink.tres +++ b/fish/species/salmon_pink/salmon_pink.tres @@ -18,6 +18,7 @@ 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." +available_seasons = 6 allowed_water_types = 2 rarity = 1 base_catch_weight = 3.0 diff --git a/fish/species/salmon_sockeye/fish_salmon_sockeye.png b/fish/species/salmon_sockeye/fish_salmon_sockeye.png index bb98433..0569084 100644 Binary files a/fish/species/salmon_sockeye/fish_salmon_sockeye.png and b/fish/species/salmon_sockeye/fish_salmon_sockeye.png differ diff --git a/fish/species/salmon_sockeye/salmon_sockeye.tres b/fish/species/salmon_sockeye/salmon_sockeye.tres index 04b75b3..dd440e1 100644 --- a/fish/species/salmon_sockeye/salmon_sockeye.tres +++ b/fish/species/salmon_sockeye/salmon_sockeye.tres @@ -18,6 +18,7 @@ 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." +available_seasons = 6 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 index fd3f73c..3d1b523 100644 --- a/fish/species/sand_dollar/sand_dollar.tres +++ b/fish/species/sand_dollar/sand_dollar.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 1 base_catch_weight = 0.8 diff --git a/fish/species/sand_lance_american/sand_lance_american.tres b/fish/species/sand_lance_american/sand_lance_american.tres index 4f53bbb..7080235 100644 --- a/fish/species/sand_lance_american/sand_lance_american.tres +++ b/fish/species/sand_lance_american/sand_lance_american.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 13 allowed_water_types = 2 rarity = 0 base_catch_weight = 3.0 diff --git a/fish/species/sardine_european/sardine_european.tres b/fish/species/sardine_european/sardine_european.tres index 3052323..87a64c2 100644 --- a/fish/species/sardine_european/sardine_european.tres +++ b/fish/species/sardine_european/sardine_european.tres @@ -15,6 +15,7 @@ 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." +available_seasons = 13 allowed_water_types = 2 rarity = 0 base_catch_weight = 3.5 diff --git a/fish/species/sardine_pacific/sardine_pacific.tres b/fish/species/sardine_pacific/sardine_pacific.tres index 3e4db3d..41c98a0 100644 --- a/fish/species/sardine_pacific/sardine_pacific.tres +++ b/fish/species/sardine_pacific/sardine_pacific.tres @@ -15,6 +15,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 0 base_catch_weight = 3.5 diff --git a/fish/species/sauger/fish_sauger.png b/fish/species/sauger/fish_sauger.png index c4e2763..188be07 100644 Binary files a/fish/species/sauger/fish_sauger.png and b/fish/species/sauger/fish_sauger.png differ diff --git a/fish/species/sauger/sauger.tres b/fish/species/sauger/sauger.tres index 0918236..1ccd2b8 100644 --- a/fish/species/sauger/sauger.tres +++ b/fish/species/sauger/sauger.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 13 allowed_water_types = 1 rarity = 1 base_catch_weight = 0.35 diff --git a/fish/species/saugeye/fish_saugeye.png b/fish/species/saugeye/fish_saugeye.png index 0674902..d106625 100644 Binary files a/fish/species/saugeye/fish_saugeye.png and b/fish/species/saugeye/fish_saugeye.png differ diff --git a/fish/species/saugeye/saugeye.tres b/fish/species/saugeye/saugeye.tres index ac82232..62baf45 100644 --- a/fish/species/saugeye/saugeye.tres +++ b/fish/species/saugeye/saugeye.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 13 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 index 699c8d6..ce5602d 100644 --- a/fish/species/sawfish_largetooth/sawfish_largetooth.tres +++ b/fish/species/sawfish_largetooth/sawfish_largetooth.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 4 base_catch_weight = 0.035 diff --git a/fish/species/scorpionfish_red/scorpionfish_red.tres b/fish/species/scorpionfish_red/scorpionfish_red.tres index eda1241..4848d54 100644 --- a/fish/species/scorpionfish_red/scorpionfish_red.tres +++ b/fish/species/scorpionfish_red/scorpionfish_red.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 2 base_catch_weight = 0.3 diff --git a/fish/species/sea_bass_black/sea_bass_black.tres b/fish/species/sea_bass_black/sea_bass_black.tres index 0f4fca3..54581d8 100644 --- a/fish/species/sea_bass_black/sea_bass_black.tres +++ b/fish/species/sea_bass_black/sea_bass_black.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 13 allowed_water_types = 2 rarity = 0 base_catch_weight = 1.7 diff --git a/fish/species/sea_bass_chilean/sea_bass_chilean.tres b/fish/species/sea_bass_chilean/sea_bass_chilean.tres index c52a88c..15cf997 100644 --- a/fish/species/sea_bass_chilean/sea_bass_chilean.tres +++ b/fish/species/sea_bass_chilean/sea_bass_chilean.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 3 base_catch_weight = 0.09 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 index 5670862..7118382 100644 --- a/fish/species/sea_cucumber_giant_california/sea_cucumber_giant_california.tres +++ b/fish/species/sea_cucumber_giant_california/sea_cucumber_giant_california.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 2 base_catch_weight = 0.24 diff --git a/fish/species/sea_otter/sea_otter.tres b/fish/species/sea_otter/sea_otter.tres index c7740a3..7cf9ebe 100644 --- a/fish/species/sea_otter/sea_otter.tres +++ b/fish/species/sea_otter/sea_otter.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 4 base_catch_weight = 0.02 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 index bfc9493..37ecb8d 100644 --- 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 @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 3 base_catch_weight = 0.1 diff --git a/fish/species/sea_star_sunflower/sea_star_sunflower.tres b/fish/species/sea_star_sunflower/sea_star_sunflower.tres index 7409a31..c1f60eb 100644 --- a/fish/species/sea_star_sunflower/sea_star_sunflower.tres +++ b/fish/species/sea_star_sunflower/sea_star_sunflower.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 2 base_catch_weight = 0.25 diff --git a/fish/species/seadragon_leafy/seadragon_leafy.tres b/fish/species/seadragon_leafy/seadragon_leafy.tres index b137a34..0033d9c 100644 --- a/fish/species/seadragon_leafy/seadragon_leafy.tres +++ b/fish/species/seadragon_leafy/seadragon_leafy.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 3 base_catch_weight = 0.1 diff --git a/fish/species/seadragon_weedy/seadragon_weedy.tres b/fish/species/seadragon_weedy/seadragon_weedy.tres index e388f50..1b99790 100644 --- a/fish/species/seadragon_weedy/seadragon_weedy.tres +++ b/fish/species/seadragon_weedy/seadragon_weedy.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 2 base_catch_weight = 0.22 diff --git a/fish/species/seahorse_lined/seahorse_lined.tres b/fish/species/seahorse_lined/seahorse_lined.tres index 42fe3e3..1f533a0 100644 --- a/fish/species/seahorse_lined/seahorse_lined.tres +++ b/fish/species/seahorse_lined/seahorse_lined.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 2 base_catch_weight = 0.28 diff --git a/fish/species/seal_harbor/seal_harbor.tres b/fish/species/seal_harbor/seal_harbor.tres index 59bdf2b..bdc0e46 100644 --- a/fish/species/seal_harbor/seal_harbor.tres +++ b/fish/species/seal_harbor/seal_harbor.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 4 base_catch_weight = 0.018 diff --git a/fish/species/shark_blacktip/shark_blacktip.tres b/fish/species/shark_blacktip/shark_blacktip.tres index 99bc169..b5d4ca9 100644 --- a/fish/species/shark_blacktip/shark_blacktip.tres +++ b/fish/species/shark_blacktip/shark_blacktip.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 6 allowed_water_types = 2 rarity = 3 base_catch_weight = 0.1 diff --git a/fish/species/shark_great_hammerhead/shark_great_hammerhead.tres b/fish/species/shark_great_hammerhead/shark_great_hammerhead.tres index 65b9d96..a2edcf0 100644 --- a/fish/species/shark_great_hammerhead/shark_great_hammerhead.tres +++ b/fish/species/shark_great_hammerhead/shark_great_hammerhead.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 6 allowed_water_types = 2 rarity = 4 base_catch_weight = 0.035 diff --git a/fish/species/shark_great_white/shark_great_white.tres b/fish/species/shark_great_white/shark_great_white.tres index 560b596..80688cd 100644 --- a/fish/species/shark_great_white/shark_great_white.tres +++ b/fish/species/shark_great_white/shark_great_white.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 4 base_catch_weight = 0.025 diff --git a/fish/species/shark_tiger/shark_tiger.tres b/fish/species/shark_tiger/shark_tiger.tres index a3f34f7..a7a9bcf 100644 --- a/fish/species/shark_tiger/shark_tiger.tres +++ b/fish/species/shark_tiger/shark_tiger.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 3 base_catch_weight = 0.06 diff --git a/fish/species/shark_whale/shark_whale.tres b/fish/species/shark_whale/shark_whale.tres index b0bbe19..7c78314 100644 --- a/fish/species/shark_whale/shark_whale.tres +++ b/fish/species/shark_whale/shark_whale.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 6 allowed_water_types = 2 rarity = 4 base_catch_weight = 0.025 diff --git a/fish/species/sheepshead/sheepshead.tres b/fish/species/sheepshead/sheepshead.tres index df76f08..d323533 100644 --- a/fish/species/sheepshead/sheepshead.tres +++ b/fish/species/sheepshead/sheepshead.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 13 allowed_water_types = 2 rarity = 1 base_catch_weight = 0.75 diff --git a/fish/species/shiner_common/shiner_common.tres b/fish/species/shiner_common/shiner_common.tres index 505bb24..303a4b3 100644 --- a/fish/species/shiner_common/shiner_common.tres +++ b/fish/species/shiner_common/shiner_common.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 7 allowed_water_types = 1 rarity = 0 base_catch_weight = 4.0 diff --git a/fish/species/shiner_emerald/shiner_emerald.tres b/fish/species/shiner_emerald/shiner_emerald.tres index 7497ae6..5d654a4 100644 --- a/fish/species/shiner_emerald/shiner_emerald.tres +++ b/fish/species/shiner_emerald/shiner_emerald.tres @@ -15,6 +15,7 @@ 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." +available_seasons = 7 allowed_water_types = 1 rarity = 0 base_catch_weight = 3.5 diff --git a/fish/species/shiner_golden/shiner_golden.tres b/fish/species/shiner_golden/shiner_golden.tres index 755bffb..8eb64bb 100644 --- a/fish/species/shiner_golden/shiner_golden.tres +++ b/fish/species/shiner_golden/shiner_golden.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 7 allowed_water_types = 1 rarity = 0 base_catch_weight = 3.8 diff --git a/fish/species/shrimp_peacock_mantis/shrimp_peacock_mantis.tres b/fish/species/shrimp_peacock_mantis/shrimp_peacock_mantis.tres index 4a12b76..d7be4a6 100644 --- a/fish/species/shrimp_peacock_mantis/shrimp_peacock_mantis.tres +++ b/fish/species/shrimp_peacock_mantis/shrimp_peacock_mantis.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 3 base_catch_weight = 0.1 diff --git a/fish/species/shrimp_skunk_cleaner/shrimp_skunk_cleaner.tres b/fish/species/shrimp_skunk_cleaner/shrimp_skunk_cleaner.tres index 9ab3908..fe9de65 100644 --- a/fish/species/shrimp_skunk_cleaner/shrimp_skunk_cleaner.tres +++ b/fish/species/shrimp_skunk_cleaner/shrimp_skunk_cleaner.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 1 base_catch_weight = 0.75 diff --git a/fish/species/skate_barndoor/skate_barndoor.tres b/fish/species/skate_barndoor/skate_barndoor.tres index 013fc2f..b9c8a5d 100644 --- a/fish/species/skate_barndoor/skate_barndoor.tres +++ b/fish/species/skate_barndoor/skate_barndoor.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 13 allowed_water_types = 2 rarity = 3 base_catch_weight = 0.1 diff --git a/fish/species/smallmouth_bass/smallmouth_bass.tres b/fish/species/smallmouth_bass/smallmouth_bass.tres index 11e876f..e198b2a 100644 --- a/fish/species/smallmouth_bass/smallmouth_bass.tres +++ b/fish/species/smallmouth_bass/smallmouth_bass.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 7 allowed_water_types = 1 rarity = 1 base_catch_weight = 1.2 diff --git a/fish/species/smelt_eulachon/smelt_eulachon.tres b/fish/species/smelt_eulachon/smelt_eulachon.tres index b6d7b16..923d467 100644 --- a/fish/species/smelt_eulachon/smelt_eulachon.tres +++ b/fish/species/smelt_eulachon/smelt_eulachon.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 1 allowed_water_types = 3 rarity = 1 base_catch_weight = 0.9 diff --git a/fish/species/smelt_rainbow/smelt_rainbow.tres b/fish/species/smelt_rainbow/smelt_rainbow.tres index 19f1b1d..6275187 100644 --- a/fish/species/smelt_rainbow/smelt_rainbow.tres +++ b/fish/species/smelt_rainbow/smelt_rainbow.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 9 allowed_water_types = 3 rarity = 0 base_catch_weight = 2.5 diff --git a/fish/species/snakehead_giant/snakehead_giant.tres b/fish/species/snakehead_giant/snakehead_giant.tres index 44b10e3..8efb4d3 100644 --- a/fish/species/snakehead_giant/snakehead_giant.tres +++ b/fish/species/snakehead_giant/snakehead_giant.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 1 rarity = 3 base_catch_weight = 0.1 diff --git a/fish/species/snapper_lane/fish_snapper_lane.png b/fish/species/snapper_lane/fish_snapper_lane.png index afedbc3..a9c3270 100644 Binary files a/fish/species/snapper_lane/fish_snapper_lane.png and b/fish/species/snapper_lane/fish_snapper_lane.png differ diff --git a/fish/species/snapper_lane/snapper_lane.tres b/fish/species/snapper_lane/snapper_lane.tres index f72ab38..441107c 100644 --- a/fish/species/snapper_lane/snapper_lane.tres +++ b/fish/species/snapper_lane/snapper_lane.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 base_catch_weight = 0.45 catch_profile = ExtResource("2_profile") diff --git a/fish/species/snapper_mangrove/fish_snapper_mangrove.png b/fish/species/snapper_mangrove/fish_snapper_mangrove.png index 758ee16..37f2850 100644 Binary files a/fish/species/snapper_mangrove/fish_snapper_mangrove.png and b/fish/species/snapper_mangrove/fish_snapper_mangrove.png differ diff --git a/fish/species/snapper_mangrove/snapper_mangrove.tres b/fish/species/snapper_mangrove/snapper_mangrove.tres index f400800..8767a3f 100644 --- a/fish/species/snapper_mangrove/snapper_mangrove.tres +++ b/fish/species/snapper_mangrove/snapper_mangrove.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 1 base_catch_weight = 0.35 diff --git a/fish/species/snapper_mutton/fish_snapper_mutton.png b/fish/species/snapper_mutton/fish_snapper_mutton.png index f8de3ff..7c99847 100644 Binary files a/fish/species/snapper_mutton/fish_snapper_mutton.png and b/fish/species/snapper_mutton/fish_snapper_mutton.png differ diff --git a/fish/species/snapper_mutton/snapper_mutton.tres b/fish/species/snapper_mutton/snapper_mutton.tres index 37b4b24..4f343c3 100644 --- a/fish/species/snapper_mutton/snapper_mutton.tres +++ b/fish/species/snapper_mutton/snapper_mutton.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 2 base_catch_weight = 0.2 diff --git a/fish/species/snapper_red/fish_snapper_red.png b/fish/species/snapper_red/fish_snapper_red.png index 435a95e..20285eb 100644 Binary files a/fish/species/snapper_red/fish_snapper_red.png and b/fish/species/snapper_red/fish_snapper_red.png differ diff --git a/fish/species/snapper_red/snapper_red.tres b/fish/species/snapper_red/snapper_red.tres index fabf736..7c26926 100644 --- a/fish/species/snapper_red/snapper_red.tres +++ b/fish/species/snapper_red/snapper_red.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 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 index e810953..676e3f4 100644 --- a/fish/species/snook_common/snook_common.tres +++ b/fish/species/snook_common/snook_common.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 2 base_catch_weight = 0.3 diff --git a/fish/species/sole_dover/sole_dover.tres b/fish/species/sole_dover/sole_dover.tres index 88daf9a..6083d96 100644 --- a/fish/species/sole_dover/sole_dover.tres +++ b/fish/species/sole_dover/sole_dover.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 13 allowed_water_types = 2 rarity = 1 base_catch_weight = 0.8 diff --git a/fish/species/sprat_european/sprat_european.tres b/fish/species/sprat_european/sprat_european.tres index 20f313c..61daa00 100644 --- a/fish/species/sprat_european/sprat_european.tres +++ b/fish/species/sprat_european/sprat_european.tres @@ -15,6 +15,7 @@ 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." +available_seasons = 13 allowed_water_types = 2 rarity = 0 base_catch_weight = 3.2 diff --git a/fish/species/squid_bigfin_reef/squid_bigfin_reef.tres b/fish/species/squid_bigfin_reef/squid_bigfin_reef.tres index 838a6ef..d6b1201 100644 --- a/fish/species/squid_bigfin_reef/squid_bigfin_reef.tres +++ b/fish/species/squid_bigfin_reef/squid_bigfin_reef.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 2 base_catch_weight = 0.3 diff --git a/fish/species/squid_colossal/squid_colossal.tres b/fish/species/squid_colossal/squid_colossal.tres index 8ade0a5..115ab10 100644 --- a/fish/species/squid_colossal/squid_colossal.tres +++ b/fish/species/squid_colossal/squid_colossal.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 4 base_catch_weight = 0.015 diff --git a/fish/species/squid_giant/squid_giant.tres b/fish/species/squid_giant/squid_giant.tres index e67af33..b95efe9 100644 --- a/fish/species/squid_giant/squid_giant.tres +++ b/fish/species/squid_giant/squid_giant.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 4 base_catch_weight = 0.02 diff --git a/fish/species/squid_humboldt/squid_humboldt.tres b/fish/species/squid_humboldt/squid_humboldt.tres index 038bcf8..e9a7d2f 100644 --- a/fish/species/squid_humboldt/squid_humboldt.tres +++ b/fish/species/squid_humboldt/squid_humboldt.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 3 base_catch_weight = 0.09 diff --git a/fish/species/stingray_ocellate_river/stingray_ocellate_river.tres b/fish/species/stingray_ocellate_river/stingray_ocellate_river.tres index 5ee7b41..fce4905 100644 --- a/fish/species/stingray_ocellate_river/stingray_ocellate_river.tres +++ b/fish/species/stingray_ocellate_river/stingray_ocellate_river.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 1 rarity = 3 base_catch_weight = 0.09 diff --git a/fish/species/stingray_southern/stingray_southern.tres b/fish/species/stingray_southern/stingray_southern.tres index ed24d11..947cf4d 100644 --- a/fish/species/stingray_southern/stingray_southern.tres +++ b/fish/species/stingray_southern/stingray_southern.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 2 base_catch_weight = 0.23 diff --git a/fish/species/sturgeon_lake/sturgeon_lake.png b/fish/species/sturgeon_lake/sturgeon_lake.png new file mode 100644 index 0000000..68c9a74 Binary files /dev/null and b/fish/species/sturgeon_lake/sturgeon_lake.png differ diff --git a/fish/species/sturgeon_lake/sturgeon_lake.png.import b/fish/species/sturgeon_lake/sturgeon_lake.png.import new file mode 100644 index 0000000..505b308 --- /dev/null +++ b/fish/species/sturgeon_lake/sturgeon_lake.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://515k3s5wc3ct" +path="res://.godot/imported/sturgeon_lake.png-ab8bbee2fea49b2a23bc376500df6ae1.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://fish/species/sturgeon_lake/sturgeon_lake.png" +dest_files=["res://.godot/imported/sturgeon_lake.png-ab8bbee2fea49b2a23bc376500df6ae1.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 diff --git a/fish/species/sturgeon_lake/sturgeon_lake.tres b/fish/species/sturgeon_lake/sturgeon_lake.tres index b69a743..e4e69a6 100644 --- a/fish/species/sturgeon_lake/sturgeon_lake.tres +++ b/fish/species/sturgeon_lake/sturgeon_lake.tres @@ -1,8 +1,9 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 format=3] +[gd_resource type="Resource" script_class="FishData" load_steps=5 format=3] [ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"] [ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"] [ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"] +[ext_resource type="Texture2D" path="res://fish/species/sturgeon_lake/sturgeon_lake.png" id="4_texture"] [sub_resource type="Resource" id="Availability"] script = ExtResource("3_availability") @@ -12,10 +13,11 @@ allow_day = false script = ExtResource("1_fish_data") id = &"sturgeon_lake" display_name = "lake sturgeon" -active = false +active = true 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." +available_seasons = 15 allowed_water_types = 1 rarity = 3 base_catch_weight = 0.09 @@ -26,3 +28,4 @@ weight_max_lb = 180.0 sell_value_min = 36 sell_value_max = 82 sell_value_curve = 0.8 +display_texture = ExtResource("4_texture") diff --git a/fish/species/sturgeon_shovelnose/sturgeon_shovelnose.png b/fish/species/sturgeon_shovelnose/sturgeon_shovelnose.png new file mode 100644 index 0000000..197c90a Binary files /dev/null and b/fish/species/sturgeon_shovelnose/sturgeon_shovelnose.png differ diff --git a/fish/species/sturgeon_shovelnose/sturgeon_shovelnose.png.import b/fish/species/sturgeon_shovelnose/sturgeon_shovelnose.png.import new file mode 100644 index 0000000..c66c0ec --- /dev/null +++ b/fish/species/sturgeon_shovelnose/sturgeon_shovelnose.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d3jk1u2bkisil" +path="res://.godot/imported/sturgeon_shovelnose.png-abfc7dc07c08b02b361c4ea424ee5ece.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://fish/species/sturgeon_shovelnose/sturgeon_shovelnose.png" +dest_files=["res://.godot/imported/sturgeon_shovelnose.png-abfc7dc07c08b02b361c4ea424ee5ece.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 diff --git a/fish/species/sturgeon_shovelnose/sturgeon_shovelnose.tres b/fish/species/sturgeon_shovelnose/sturgeon_shovelnose.tres index f62d908..4e078d0 100644 --- a/fish/species/sturgeon_shovelnose/sturgeon_shovelnose.tres +++ b/fish/species/sturgeon_shovelnose/sturgeon_shovelnose.tres @@ -1,8 +1,9 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 format=3] +[gd_resource type="Resource" script_class="FishData" load_steps=5 format=3] [ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"] [ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"] [ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"] +[ext_resource type="Texture2D" path="res://fish/species/sturgeon_shovelnose/sturgeon_shovelnose.png" id="4_texture"] [sub_resource type="Resource" id="Availability"] script = ExtResource("3_availability") @@ -12,10 +13,11 @@ allow_day = false script = ExtResource("1_fish_data") id = &"sturgeon_shovelnose" display_name = "shovelnose sturgeon" -active = false +active = true 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." +available_seasons = 15 allowed_water_types = 1 rarity = 2 base_catch_weight = 0.22 @@ -26,3 +28,4 @@ weight_max_lb = 8.0 sell_value_min = 12 sell_value_max = 25 sell_value_curve = 0.9 +display_texture = ExtResource("4_texture") diff --git a/fish/species/sturgeon_white/sturgeon_white.tres b/fish/species/sturgeon_white/sturgeon_white.tres index 9b4892c..91cab98 100644 --- a/fish/species/sturgeon_white/sturgeon_white.tres +++ b/fish/species/sturgeon_white/sturgeon_white.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 5 allowed_water_types = 3 rarity = 4 base_catch_weight = 0.045 diff --git a/fish/species/sucker_white/sucker_white.tres b/fish/species/sucker_white/sucker_white.tres index 1e2c2b3..25e09c2 100644 --- a/fish/species/sucker_white/sucker_white.tres +++ b/fish/species/sucker_white/sucker_white.tres @@ -15,6 +15,7 @@ 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." +available_seasons = 7 allowed_water_types = 1 rarity = 0 base_catch_weight = 2.0 diff --git a/fish/species/sunfish/fish_sunfish.png b/fish/species/sunfish/fish_sunfish.png index 4b7b084..ca8a340 100644 Binary files a/fish/species/sunfish/fish_sunfish.png and b/fish/species/sunfish/fish_sunfish.png differ diff --git a/fish/species/sunfish/sunfish.tres b/fish/species/sunfish/sunfish.tres index 9b9401d..f0ced78 100644 --- a/fish/species/sunfish/sunfish.tres +++ b/fish/species/sunfish/sunfish.tres @@ -13,6 +13,7 @@ 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." +available_seasons = 7 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 index 9a21da4..3708547 100644 --- a/fish/species/surgeonfish_blue/surgeonfish_blue.tres +++ b/fish/species/surgeonfish_blue/surgeonfish_blue.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 1 base_catch_weight = 0.9 diff --git a/fish/species/swordfish/fish_swordfish.png b/fish/species/swordfish/fish_swordfish.png index a43d703..3b1917b 100644 Binary files a/fish/species/swordfish/fish_swordfish.png and b/fish/species/swordfish/fish_swordfish.png differ diff --git a/fish/species/swordfish/swordfish.tres b/fish/species/swordfish/swordfish.tres index 5f776ca..ea765a3 100644 --- a/fish/species/swordfish/swordfish.tres +++ b/fish/species/swordfish/swordfish.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 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 index 981d643..fd8d92f 100644 --- a/fish/species/tambaqui/tambaqui.tres +++ b/fish/species/tambaqui/tambaqui.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 1 rarity = 3 base_catch_weight = 0.1 diff --git a/fish/species/tang_yellow/tang_yellow.tres b/fish/species/tang_yellow/tang_yellow.tres index c4facd7..92ee455 100644 --- a/fish/species/tang_yellow/tang_yellow.tres +++ b/fish/species/tang_yellow/tang_yellow.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 2 base_catch_weight = 0.35 diff --git a/fish/species/tarpon_atlantic/tarpon_atlantic.tres b/fish/species/tarpon_atlantic/tarpon_atlantic.tres index c2fbff0..1aeda05 100644 --- a/fish/species/tarpon_atlantic/tarpon_atlantic.tres +++ b/fish/species/tarpon_atlantic/tarpon_atlantic.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 15 allowed_water_types = 3 rarity = 3 base_catch_weight = 0.09 diff --git a/fish/species/tautog/tautog.tres b/fish/species/tautog/tautog.tres index cbd926f..57bbe3c 100644 --- a/fish/species/tautog/tautog.tres +++ b/fish/species/tautog/tautog.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 13 allowed_water_types = 2 rarity = 1 base_catch_weight = 0.8 diff --git a/fish/species/tench/tench.tres b/fish/species/tench/tench.tres index 300a922..377db0f 100644 --- a/fish/species/tench/tench.tres +++ b/fish/species/tench/tench.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 7 allowed_water_types = 1 rarity = 1 base_catch_weight = 0.75 diff --git a/fish/species/tetra_neon/tetra_neon.tres b/fish/species/tetra_neon/tetra_neon.tres index 487ef9b..265cb39 100644 --- a/fish/species/tetra_neon/tetra_neon.tres +++ b/fish/species/tetra_neon/tetra_neon.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 15 allowed_water_types = 1 rarity = 1 base_catch_weight = 0.9 diff --git a/fish/species/tigerfish_goliath/tigerfish_goliath.tres b/fish/species/tigerfish_goliath/tigerfish_goliath.tres index dec9d49..89e2525 100644 --- a/fish/species/tigerfish_goliath/tigerfish_goliath.tres +++ b/fish/species/tigerfish_goliath/tigerfish_goliath.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 15 allowed_water_types = 1 rarity = 4 base_catch_weight = 0.035 diff --git a/fish/species/tilapia_nile/tilapia_nile.tres b/fish/species/tilapia_nile/tilapia_nile.tres index 3db4fb6..5d4ccac 100644 --- a/fish/species/tilapia_nile/tilapia_nile.tres +++ b/fish/species/tilapia_nile/tilapia_nile.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 15 allowed_water_types = 1 rarity = 0 base_catch_weight = 2.2 diff --git a/fish/species/tilefish_blueline/tilefish_blueline.tres b/fish/species/tilefish_blueline/tilefish_blueline.tres index 53598bd..13ea387 100644 --- a/fish/species/tilefish_blueline/tilefish_blueline.tres +++ b/fish/species/tilefish_blueline/tilefish_blueline.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 1 base_catch_weight = 0.7 diff --git a/fish/species/tilefish_golden/tilefish_golden.tres b/fish/species/tilefish_golden/tilefish_golden.tres index 26e9543..1875b08 100644 --- a/fish/species/tilefish_golden/tilefish_golden.tres +++ b/fish/species/tilefish_golden/tilefish_golden.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 2 base_catch_weight = 0.22 diff --git a/fish/species/trevally_bluefin/trevally_bluefin.tres b/fish/species/trevally_bluefin/trevally_bluefin.tres index 9c06970..46971e6 100644 --- a/fish/species/trevally_bluefin/trevally_bluefin.tres +++ b/fish/species/trevally_bluefin/trevally_bluefin.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 2 base_catch_weight = 0.3 diff --git a/fish/species/trevally_giant/trevally_giant.tres b/fish/species/trevally_giant/trevally_giant.tres index f1acce2..43453d5 100644 --- a/fish/species/trevally_giant/trevally_giant.tres +++ b/fish/species/trevally_giant/trevally_giant.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 6 allowed_water_types = 2 rarity = 3 base_catch_weight = 0.1 diff --git a/fish/species/triggerfish_gray/triggerfish_gray.tres b/fish/species/triggerfish_gray/triggerfish_gray.tres index 9eb4a35..90f96b8 100644 --- a/fish/species/triggerfish_gray/triggerfish_gray.tres +++ b/fish/species/triggerfish_gray/triggerfish_gray.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 1 base_catch_weight = 0.8 diff --git a/fish/species/triggerfish_queen/triggerfish_queen.tres b/fish/species/triggerfish_queen/triggerfish_queen.tres index e2de868..d57ede3 100644 --- a/fish/species/triggerfish_queen/triggerfish_queen.tres +++ b/fish/species/triggerfish_queen/triggerfish_queen.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 2 base_catch_weight = 0.25 diff --git a/fish/species/tripletail/tripletail.tres b/fish/species/tripletail/tripletail.tres index e973888..552e15b 100644 --- a/fish/species/tripletail/tripletail.tres +++ b/fish/species/tripletail/tripletail.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 6 allowed_water_types = 2 rarity = 2 base_catch_weight = 0.28 diff --git a/fish/species/trout_brown/trout_brown.tres b/fish/species/trout_brown/trout_brown.tres index 0e6cefd..01a28d5 100644 --- a/fish/species/trout_brown/trout_brown.tres +++ b/fish/species/trout_brown/trout_brown.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 15 allowed_water_types = 1 rarity = 1 base_catch_weight = 0.8 diff --git a/fish/species/trout_cutthroat/fish_trout_cutthroat.png b/fish/species/trout_cutthroat/fish_trout_cutthroat.png index 9e45417..9287c2f 100644 Binary files a/fish/species/trout_cutthroat/fish_trout_cutthroat.png and b/fish/species/trout_cutthroat/fish_trout_cutthroat.png differ diff --git a/fish/species/trout_cutthroat/trout_cutthroat.tres b/fish/species/trout_cutthroat/trout_cutthroat.tres index 61dc080..b2a958d 100644 --- a/fish/species/trout_cutthroat/trout_cutthroat.tres +++ b/fish/species/trout_cutthroat/trout_cutthroat.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 13 allowed_water_types = 1 rarity = 1 base_catch_weight = 0.4 diff --git a/fish/species/trout_golden/fish_trout_golden.png b/fish/species/trout_golden/fish_trout_golden.png index 209b82d..8b64101 100644 Binary files a/fish/species/trout_golden/fish_trout_golden.png and b/fish/species/trout_golden/fish_trout_golden.png differ diff --git a/fish/species/trout_golden/trout_golden.tres b/fish/species/trout_golden/trout_golden.tres index 5c3d87e..21a16ef 100644 --- a/fish/species/trout_golden/trout_golden.tres +++ b/fish/species/trout_golden/trout_golden.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 7 allowed_water_types = 1 rarity = 2 base_catch_weight = 0.2 diff --git a/fish/species/trout_rainbow/fish_trout_rainbow.png b/fish/species/trout_rainbow/fish_trout_rainbow.png index ff6fd06..3f4dfe4 100644 Binary files a/fish/species/trout_rainbow/fish_trout_rainbow.png and b/fish/species/trout_rainbow/fish_trout_rainbow.png differ diff --git a/fish/species/trout_rainbow/trout_rainbow.tres b/fish/species/trout_rainbow/trout_rainbow.tres index fbcdb42..227bb3a 100644 --- a/fish/species/trout_rainbow/trout_rainbow.tres +++ b/fish/species/trout_rainbow/trout_rainbow.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 1 rarity = 1 base_catch_weight = 0.45 diff --git a/fish/species/trout_steelhead/fish_trout_steelhead.png b/fish/species/trout_steelhead/fish_trout_steelhead.png index b2600e0..45cc1b1 100644 Binary files a/fish/species/trout_steelhead/fish_trout_steelhead.png and b/fish/species/trout_steelhead/fish_trout_steelhead.png differ diff --git a/fish/species/trout_steelhead/trout_steelhead.tres b/fish/species/trout_steelhead/trout_steelhead.tres index 92f6985..11e19a7 100644 --- a/fish/species/trout_steelhead/trout_steelhead.tres +++ b/fish/species/trout_steelhead/trout_steelhead.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 13 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 index 0a99228..eb58032 100644 --- a/fish/species/trumpetfish_atlantic/trumpetfish_atlantic.tres +++ b/fish/species/trumpetfish_atlantic/trumpetfish_atlantic.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 2 base_catch_weight = 0.3 diff --git a/fish/species/tuna_albacore/fish_tuna_albacore.png b/fish/species/tuna_albacore/fish_tuna_albacore.png index 3769c08..3fde5de 100644 Binary files a/fish/species/tuna_albacore/fish_tuna_albacore.png and b/fish/species/tuna_albacore/fish_tuna_albacore.png differ diff --git a/fish/species/tuna_albacore/tuna_albacore.tres b/fish/species/tuna_albacore/tuna_albacore.tres index d0b841b..69ad32d 100644 --- a/fish/species/tuna_albacore/tuna_albacore.tres +++ b/fish/species/tuna_albacore/tuna_albacore.tres @@ -18,6 +18,7 @@ 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." +available_seasons = 7 allowed_water_types = 2 rarity = 2 base_catch_weight = 1.5 diff --git a/fish/species/tuna_bigeye/fish_tuna_bigeye.png b/fish/species/tuna_bigeye/fish_tuna_bigeye.png index b4a36c3..ac52961 100644 Binary files a/fish/species/tuna_bigeye/fish_tuna_bigeye.png and b/fish/species/tuna_bigeye/fish_tuna_bigeye.png differ diff --git a/fish/species/tuna_bigeye/tuna_bigeye.tres b/fish/species/tuna_bigeye/tuna_bigeye.tres index 8c6c867..6794a75 100644 --- a/fish/species/tuna_bigeye/tuna_bigeye.tres +++ b/fish/species/tuna_bigeye/tuna_bigeye.tres @@ -18,6 +18,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 3 base_catch_weight = 0.55 diff --git a/fish/species/tuna_bluefin/fish_tuna_bluefin.png b/fish/species/tuna_bluefin/fish_tuna_bluefin.png index a2b3cad..9f44ad8 100644 Binary files a/fish/species/tuna_bluefin/fish_tuna_bluefin.png and b/fish/species/tuna_bluefin/fish_tuna_bluefin.png differ diff --git a/fish/species/tuna_bluefin/tuna_bluefin.tres b/fish/species/tuna_bluefin/tuna_bluefin.tres index 13e8bc2..7d6f810 100644 --- a/fish/species/tuna_bluefin/tuna_bluefin.tres +++ b/fish/species/tuna_bluefin/tuna_bluefin.tres @@ -18,6 +18,7 @@ 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." +available_seasons = 5 allowed_water_types = 2 rarity = 4 base_catch_weight = 0.18 diff --git a/fish/species/tuna_skipjack/fish_tuna_skipjack.png b/fish/species/tuna_skipjack/fish_tuna_skipjack.png index 5a7f74d..3d0be56 100644 Binary files a/fish/species/tuna_skipjack/fish_tuna_skipjack.png and b/fish/species/tuna_skipjack/fish_tuna_skipjack.png differ diff --git a/fish/species/tuna_skipjack/tuna_skipjack.tres b/fish/species/tuna_skipjack/tuna_skipjack.tres index 4541393..cb16b70 100644 --- a/fish/species/tuna_skipjack/tuna_skipjack.tres +++ b/fish/species/tuna_skipjack/tuna_skipjack.tres @@ -18,6 +18,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 1 base_catch_weight = 3.0 diff --git a/fish/species/tuna_yellowfin/fish_tuna_yellowfin.png b/fish/species/tuna_yellowfin/fish_tuna_yellowfin.png index a1afc81..ad47a68 100644 Binary files a/fish/species/tuna_yellowfin/fish_tuna_yellowfin.png and b/fish/species/tuna_yellowfin/fish_tuna_yellowfin.png differ diff --git a/fish/species/tuna_yellowfin/tuna_yellowfin.tres b/fish/species/tuna_yellowfin/tuna_yellowfin.tres index 5c5acc3..90f9017 100644 --- a/fish/species/tuna_yellowfin/tuna_yellowfin.tres +++ b/fish/species/tuna_yellowfin/tuna_yellowfin.tres @@ -18,6 +18,7 @@ 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." +available_seasons = 15 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 index 6b46871..9e3e6f3 100644 --- a/fish/species/turbot/turbot.tres +++ b/fish/species/turbot/turbot.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 13 allowed_water_types = 2 rarity = 2 base_catch_weight = 0.24 diff --git a/fish/species/turtle_green/turtle_green.tres b/fish/species/turtle_green/turtle_green.tres index 91f40cd..b473dad 100644 --- a/fish/species/turtle_green/turtle_green.tres +++ b/fish/species/turtle_green/turtle_green.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 6 allowed_water_types = 2 rarity = 4 base_catch_weight = 0.018 diff --git a/fish/species/turtle_hawksbill/turtle_hawksbill.tres b/fish/species/turtle_hawksbill/turtle_hawksbill.tres index 5e07f77..a13910f 100644 --- a/fish/species/turtle_hawksbill/turtle_hawksbill.tres +++ b/fish/species/turtle_hawksbill/turtle_hawksbill.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 6 allowed_water_types = 2 rarity = 4 base_catch_weight = 0.014 diff --git a/fish/species/turtle_leatherback/turtle_leatherback.tres b/fish/species/turtle_leatherback/turtle_leatherback.tres index 1e89bee..a19b310 100644 --- a/fish/species/turtle_leatherback/turtle_leatherback.tres +++ b/fish/species/turtle_leatherback/turtle_leatherback.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 4 base_catch_weight = 0.012 diff --git a/fish/species/turtle_loggerhead/turtle_loggerhead.tres b/fish/species/turtle_loggerhead/turtle_loggerhead.tres index 5b64995..0317591 100644 --- a/fish/species/turtle_loggerhead/turtle_loggerhead.tres +++ b/fish/species/turtle_loggerhead/turtle_loggerhead.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 6 allowed_water_types = 2 rarity = 4 base_catch_weight = 0.016 diff --git a/fish/species/urchin_purple/urchin_purple.tres b/fish/species/urchin_purple/urchin_purple.tres index 7725d3d..884055b 100644 --- a/fish/species/urchin_purple/urchin_purple.tres +++ b/fish/species/urchin_purple/urchin_purple.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 1 base_catch_weight = 0.75 diff --git a/fish/species/wahoo/wahoo.tres b/fish/species/wahoo/wahoo.tres index 4753b9d..cc8488d 100644 --- a/fish/species/wahoo/wahoo.tres +++ b/fish/species/wahoo/wahoo.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 6 allowed_water_types = 2 rarity = 3 base_catch_weight = 0.11 diff --git a/fish/species/walleye/fish_walleye.png b/fish/species/walleye/fish_walleye.png index ed3eb96..f4fd40a 100644 Binary files a/fish/species/walleye/fish_walleye.png and b/fish/species/walleye/fish_walleye.png differ diff --git a/fish/species/walleye/walleye.tres b/fish/species/walleye/walleye.tres index 97dea01..e4f483d 100644 --- a/fish/species/walleye/walleye.tres +++ b/fish/species/walleye/walleye.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 13 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 index 41682d5..180fe27 100644 --- a/fish/species/walrus/walrus.tres +++ b/fish/species/walrus/walrus.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 9 allowed_water_types = 2 rarity = 4 base_catch_weight = 0.012 diff --git a/fish/species/warmouth/warmouth.tres b/fish/species/warmouth/warmouth.tres index af0214f..d93c506 100644 --- a/fish/species/warmouth/warmouth.tres +++ b/fish/species/warmouth/warmouth.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 7 allowed_water_types = 1 rarity = 1 base_catch_weight = 0.8 diff --git a/fish/species/weakfish/weakfish.tres b/fish/species/weakfish/weakfish.tres index b0072e3..6f94da3 100644 --- a/fish/species/weakfish/weakfish.tres +++ b/fish/species/weakfish/weakfish.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 7 allowed_water_types = 2 rarity = 2 base_catch_weight = 0.32 diff --git a/fish/species/whale_blue/whale_blue.tres b/fish/species/whale_blue/whale_blue.tres index 9fab3ed..50f2c53 100644 --- a/fish/species/whale_blue/whale_blue.tres +++ b/fish/species/whale_blue/whale_blue.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 4 base_catch_weight = 0.005 diff --git a/fish/species/whale_humpback/whale_humpback.tres b/fish/species/whale_humpback/whale_humpback.tres index e20e736..7c99516 100644 --- a/fish/species/whale_humpback/whale_humpback.tres +++ b/fish/species/whale_humpback/whale_humpback.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 13 allowed_water_types = 2 rarity = 4 base_catch_weight = 0.008 diff --git a/fish/species/whale_killer/whale_killer.tres b/fish/species/whale_killer/whale_killer.tres index b3ea92a..a1197cd 100644 --- a/fish/species/whale_killer/whale_killer.tres +++ b/fish/species/whale_killer/whale_killer.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 13 allowed_water_types = 2 rarity = 4 base_catch_weight = 0.008 diff --git a/fish/species/whale_sperm/whale_sperm.tres b/fish/species/whale_sperm/whale_sperm.tres index a10b923..019088b 100644 --- a/fish/species/whale_sperm/whale_sperm.tres +++ b/fish/species/whale_sperm/whale_sperm.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 4 base_catch_weight = 0.006 diff --git a/fish/species/white_perch/white_perch.tres b/fish/species/white_perch/white_perch.tres index ee06ee4..2b45610 100644 --- a/fish/species/white_perch/white_perch.tres +++ b/fish/species/white_perch/white_perch.tres @@ -15,6 +15,7 @@ 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." +available_seasons = 7 allowed_water_types = 3 rarity = 1 base_catch_weight = 1.1 diff --git a/fish/species/whitefish_lake/whitefish_lake.tres b/fish/species/whitefish_lake/whitefish_lake.tres index 4ad0281..f50e27b 100644 --- a/fish/species/whitefish_lake/whitefish_lake.tres +++ b/fish/species/whitefish_lake/whitefish_lake.tres @@ -15,6 +15,7 @@ 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." +available_seasons = 13 allowed_water_types = 1 rarity = 0 base_catch_weight = 1.5 diff --git a/fish/species/wolffish_atlantic/wolffish_atlantic.tres b/fish/species/wolffish_atlantic/wolffish_atlantic.tres index a305cc7..a4c29c1 100644 --- a/fish/species/wolffish_atlantic/wolffish_atlantic.tres +++ b/fish/species/wolffish_atlantic/wolffish_atlantic.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 13 allowed_water_types = 2 rarity = 2 base_catch_weight = 0.25 diff --git a/fish/species/wolffish_spotted/wolffish_spotted.tres b/fish/species/wolffish_spotted/wolffish_spotted.tres index 52a1de3..aa498e6 100644 --- a/fish/species/wolffish_spotted/wolffish_spotted.tres +++ b/fish/species/wolffish_spotted/wolffish_spotted.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 13 allowed_water_types = 2 rarity = 3 base_catch_weight = 0.11 diff --git a/fish/species/wrasse_ballan/wrasse_ballan.tres b/fish/species/wrasse_ballan/wrasse_ballan.tres index 63cb0b6..b25f40d 100644 --- a/fish/species/wrasse_ballan/wrasse_ballan.tres +++ b/fish/species/wrasse_ballan/wrasse_ballan.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 1 base_catch_weight = 0.8 diff --git a/fish/species/wrasse_cleaner/wrasse_cleaner.tres b/fish/species/wrasse_cleaner/wrasse_cleaner.tres index e22c1f0..3f21ff7 100644 --- a/fish/species/wrasse_cleaner/wrasse_cleaner.tres +++ b/fish/species/wrasse_cleaner/wrasse_cleaner.tres @@ -17,6 +17,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 2 base_catch_weight = 0.35 diff --git a/fish/species/wreckfish/wreckfish.tres b/fish/species/wreckfish/wreckfish.tres index a2121ef..0c258a9 100644 --- a/fish/species/wreckfish/wreckfish.tres +++ b/fish/species/wreckfish/wreckfish.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 15 allowed_water_types = 2 rarity = 3 base_catch_weight = 0.1 diff --git a/fish/species/yellow_perch/yellow_perch.tres b/fish/species/yellow_perch/yellow_perch.tres index 3147fdd..311280e 100644 --- a/fish/species/yellow_perch/yellow_perch.tres +++ b/fish/species/yellow_perch/yellow_perch.tres @@ -16,6 +16,7 @@ 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." +available_seasons = 13 allowed_water_types = 1 rarity = 0 base_catch_weight = 2.2 diff --git a/fishing/fishing_context.gd b/fishing/fishing_context.gd index b3f1acd..d9fcdb5 100644 --- a/fishing/fishing_context.gd +++ b/fishing/fishing_context.gd @@ -1,6 +1,8 @@ class_name FishingContext extends RefCounted +const CalendarSeasonType = preload("res://world/calendar_season.gd") + var location_tags: Array[StringName] = [] var water_type: WaterType.Type = WaterType.Type.FRESH_WATER var active_event_tags: Array[StringName] = [] @@ -9,3 +11,4 @@ var is_night: bool = false var is_day_night_transition: bool = false var is_raining: bool = false var is_foggy: bool = false +var season: int = CalendarSeasonType.UNKNOWN diff --git a/fishing/fishing_spot.gd b/fishing/fishing_spot.gd index 3267f88..e2fdef0 100644 --- a/fishing/fishing_spot.gd +++ b/fishing/fishing_spot.gd @@ -527,7 +527,7 @@ func _unhandled_input(event: InputEvent) -> void: if ( state == FishingState.READY and selected_item != null - and selected_item.item_id == FishingShopStockType.CRAB_NET_ID + and FishingShopStockType.is_gathering_tool(selected_item.item_id) ): return if event.is_pressed(): @@ -1572,6 +1572,7 @@ func _build_fishing_context( if _world_time != null: context.is_night = _world_time.is_night_period() context.is_day_night_transition = _world_time.is_transition() + context.season = _world_time.get_season() if _world_weather != null: context.is_raining = _world_weather.is_raining() context.is_foggy = _world_weather.is_foggy() diff --git a/gathering/gatherable_catalog.gd b/gathering/gatherable_catalog.gd index d71b65f..3fbb06a 100644 --- a/gathering/gatherable_catalog.gd +++ b/gathering/gatherable_catalog.gd @@ -2,6 +2,7 @@ class_name GatherableCatalog extends Resource const GatherableDataType = preload("res://gathering/gatherable_data.gd") +const CalendarSeasonType = preload("res://world/calendar_season.gd") @export var entries: Array[GatherableDataType] = [] @@ -15,9 +16,11 @@ func get_entry(type_id: StringName) -> GatherableDataType: return null -func get_available_entries() -> Array[GatherableDataType]: +func get_available_entries( + season: int = CalendarSeasonType.UNKNOWN, +) -> Array[GatherableDataType]: var available: Array[GatherableDataType] = [] for entry: GatherableDataType in entries: - if entry != null and entry.is_available(): + if entry != null and entry.is_available(season): available.append(entry) return available diff --git a/gathering/gatherable_data.gd b/gathering/gatherable_data.gd index 8f8e54e..9f984cf 100644 --- a/gathering/gatherable_data.gd +++ b/gathering/gatherable_data.gd @@ -3,6 +3,7 @@ extends Resource const FishDataType = preload("res://fish/fish_data.gd") const FishQualityType = preload("res://fish/fish_quality.gd") +const CalendarSeasonType = preload("res://world/calendar_season.gd") enum PresentationMode { VISIBLE_CREATURE, @@ -130,8 +131,13 @@ func get_respawn_delay(reason: StringName, rng: RandomNumberGenerator) -> float: return rng.randf_range(minimum_seconds, maximum_seconds) -func is_available() -> bool: - return catch_data != null and catch_data.active and is_valid() +func is_available(season: int = CalendarSeasonType.UNKNOWN) -> bool: + return ( + catch_data != null + and catch_data.active + and catch_data.is_available_in_season(season) + and is_valid() + ) func _quality_multiplier(values: Array[float], quality: int) -> float: diff --git a/main/main.gd b/main/main.gd index 75aff1a..1e68247 100644 --- a/main/main.gd +++ b/main/main.gd @@ -671,6 +671,7 @@ func _initialize_application(dedicated: bool) -> void: _player.experience, _save_manager, _network_item_use, + _world_time, ) _gathering_controller.setup( _player, diff --git a/network/network_protocol.gd b/network/network_protocol.gd index f70edd1..352fcc5 100644 --- a/network/network_protocol.gd +++ b/network/network_protocol.gd @@ -1,7 +1,7 @@ class_name NetworkProtocol extends RefCounted -const PROTOCOL_VERSION: int = 7 +const PROTOCOL_VERSION: int = 8 const GAME_BUILD: String = "prealpha" const MAX_GAME_VERSION_LENGTH: int = 64 const MAX_DISPLAY_NAME_LENGTH: int = 24 @@ -22,7 +22,7 @@ const ENET_CHANNEL_COUNT: int = 10 const SURFACE_DRAWING_CAPABILITY: String = "surface_drawing_v2" const ART_SHOP_CAPABILITY: String = "art_shop_v1" const BACKPACK_SHOP_CAPABILITY: String = "backpack_shop_v1" -const WORLD_TIME_CAPABILITY: String = "world_time_v1" +const WORLD_TIME_CAPABILITY: String = "world_time_v2" const WORLD_WEATHER_CAPABILITY: String = "world_weather_v1" const FISH_QUALITY_CAPABILITY: String = "fish_quality_v1" const JOBS_CAPABILITY: String = "jobs_v1" diff --git a/network/network_world_spawn_service.gd b/network/network_world_spawn_service.gd index 2f1deb6..db4afad 100644 --- a/network/network_world_spawn_service.gd +++ b/network/network_world_spawn_service.gd @@ -11,6 +11,7 @@ const GatherableCatalogType = preload("res://gathering/gatherable_catalog.gd") const GatherableDataType = preload("res://gathering/gatherable_data.gd") const WorldGatherableType = preload("res://gathering/world_gatherable.gd") const TestWorldType = preload("res://world/test_world.gd") +const CalendarSeasonType = preload("res://world/calendar_season.gd") signal local_capture_received(fish_catch: FishCatch) signal local_interaction_finished(accepted: bool, message: String) @@ -24,6 +25,7 @@ var _session: NetworkSession var _spawn_service: PlayerSpawnService var _world: TestWorldType var _world_root: Node3D +var _world_time: WorldTimeService var _catalog: GatherableCatalogType var _fish_catalog: FishPoolType var _local_inventory: FishInventory @@ -65,6 +67,7 @@ func setup( local_experience: PlayerExperience, save_manager: PlayerSaveManager, item_use: NetworkItemUseService, + world_time: WorldTimeService = null, ) -> void: _session = session _spawn_service = spawn_service @@ -78,10 +81,18 @@ func setup( _local_experience = local_experience _save_manager = save_manager _item_use = item_use + _world_time = world_time _rng.randomize() _session.peer_authenticated.connect(_on_peer_authenticated) _session.peer_removed.connect(_on_peer_removed) _session.state_changed.connect(_on_session_state_changed) + if ( + _world_time != null + and not _world_time.calendar_date_changed.is_connected( + _on_calendar_date_changed + ) + ): + _world_time.calendar_date_changed.connect(_on_calendar_date_changed) set_physics_process(true) _begin_population_if_ready.call_deferred() @@ -193,7 +204,9 @@ func get_charge_duration_for_tool(tool_id: StringName) -> float: var duration: float = 0.0 if _catalog == null or tool_id.is_empty(): return duration - for entry: GatherableDataType in _catalog.get_available_entries(): + for entry: GatherableDataType in _catalog.get_available_entries( + _current_season() + ): if entry.required_tool_id == tool_id: duration = maxf(duration, entry.charge_duration) return duration @@ -240,7 +253,9 @@ func _begin_population_if_ready() -> void: return _clear_world() _population_session_id = session_id - for entry: GatherableDataType in _catalog.get_available_entries(): + for entry: GatherableDataType in _catalog.get_available_entries( + _current_season() + ): _cache_spawn_surface(entry) for _spawn_index: int in entry.population: _spawn_entity(entry) @@ -557,7 +572,7 @@ func _update_respawns() -> void: var entry: GatherableDataType = _catalog.get_entry( type_id ) - if entry != null and entry.is_available(): + if entry != null and entry.is_available(_current_season()): _spawn_entity(entry) _next_respawn_by_type[type_id] = ( now + entry.minimum_respawn_spacing_seconds @@ -1193,6 +1208,61 @@ func _on_session_state_changed(_state: NetworkSession.State) -> void: _population_session_id = "" +func _on_calendar_date_changed(_date_id: String) -> void: + if ( + _session == null + or not _session.is_host() + or not _session.is_gameplay_session_active() + or _population_session_id.is_empty() + ): + return + _reconcile_seasonal_population() + + +func _reconcile_seasonal_population() -> void: + if _catalog == null: + return + var season: int = _current_season() + for entity_id: String in _entities.keys(): + var state: Dictionary = _entities.get(entity_id, {}) + var entry := state.get("data") as GatherableDataType + if entry != null and not entry.is_available(season): + _despawn_entity(entity_id, &"season_changed", false, false) + var retained_respawns: Array[Dictionary] = [] + for respawn: Dictionary in _respawns: + var entry: GatherableDataType = _catalog.get_entry( + StringName(str(respawn.get("type_id", ""))) + ) + if entry != null and entry.is_available(season): + retained_respawns.append(respawn) + _respawns = retained_respawns + for entry: GatherableDataType in _catalog.get_available_entries(season): + _cache_spawn_surface(entry) + var current_population: int = _population_for_type(entry.type_id) + while current_population < entry.population: + _spawn_entity(entry) + current_population += 1 + + +func _population_for_type(type_id: StringName) -> int: + var count: int = 0 + for state: Dictionary in _entities.values(): + if StringName(str(state.get("type_id", ""))) == type_id: + count += 1 + for respawn: Dictionary in _respawns: + if StringName(str(respawn.get("type_id", ""))) == type_id: + count += 1 + return count + + +func _current_season() -> int: + return ( + _world_time.get_season() + if _world_time != null + else CalendarSeasonType.UNKNOWN + ) + + func _clear_world() -> void: for presentation: WorldGatherableType in _presentations.values(): if presentation != null and is_instance_valid(presentation): diff --git a/network/network_world_time_service.gd b/network/network_world_time_service.gd index c5504b3..9cbd990 100644 --- a/network/network_world_time_service.gd +++ b/network/network_world_time_service.gd @@ -23,6 +23,12 @@ func setup(session: NetworkSession, world_time: WorldTimeService) -> void: _world_time.authoritative_time_set.connect( _on_authoritative_time_set ) + if not _world_time.calendar_date_changed.is_connected( + _on_authoritative_calendar_date_changed + ): + _world_time.calendar_date_changed.connect( + _on_authoritative_calendar_date_changed + ) set_process(true) @@ -90,6 +96,13 @@ func _on_authoritative_time_set(_time_hours: float) -> void: _broadcast_snapshot() +func _on_authoritative_calendar_date_changed(_date_id: String) -> void: + if _session == null or not _session.is_host(): + return + _sync_elapsed = 0.0 + _broadcast_snapshot() + + func _broadcast_snapshot() -> void: if _session == null or not _session.is_host(): return @@ -107,6 +120,7 @@ func _send_snapshot(peer_id: int) -> void: receive_world_time_snapshot.rpc_id(peer_id, { "session_id": _session.get_session_id(), "time_hours": _world_time.get_time_hours(), + "calendar_date_id": _world_time.get_calendar_date_id(), "sequence": _sequence, }) @@ -128,7 +142,10 @@ func receive_world_time_snapshot(data: Dictionary) -> void: if sequence <= _last_received_sequence: return _last_received_sequence = sequence - _world_time.synchronize_time(float(data["time_hours"])) + _world_time.synchronize_calendar_time( + float(data["time_hours"]), + str(data["calendar_date_id"]), + ) static func validate_snapshot(data: Variant) -> bool: @@ -143,6 +160,10 @@ static func validate_snapshot(data: Variant) -> bool: and is_finite(float(value["time_hours"])) and float(value["time_hours"]) >= 0.0 and float(value["time_hours"]) < WorldTimeService.HOURS_PER_DAY + and typeof(value.get("calendar_date_id")) == TYPE_STRING + and WorldTimeService.is_valid_calendar_date_id( + str(value["calendar_date_id"]) + ) and typeof(value.get("sequence")) == TYPE_INT and int(value["sequence"]) >= 0 ) diff --git a/player/player.gd b/player/player.gd index 75d3233..7f3e7d2 100644 --- a/player/player.gd +++ b/player/player.gd @@ -82,6 +82,9 @@ const CHARACTER_FIGHTING_ANIMATION: StringName = &"fighting" const CHARACTER_FIGHTING_SIT_ANIMATION: StringName = &"fighting_sit" const CHARACTER_NET_DRAW_ANIMATION: StringName = &"draw" const CHARACTER_NET_STRIKE_ANIMATION: StringName = &"strike" +const CATCH_PRESENTATION_REFERENCE_LONG_SIDE_PX: float = 1280.0 +const CATCH_PRESENTATION_MIN_TEXTURE_SCALE: float = 0.1 +const CATCH_PRESENTATION_MAX_TEXTURE_SCALE: float = 20.0 # 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. @@ -2744,10 +2747,9 @@ func set_held_fish( ) _held_fish_visible = true _pending_held_fish_texture = fish.display_texture - _pending_held_fish_scale = ( - Vector3.ONE - * maxf(display_scale, 0.01) - * catch_presentation_base_scale + _pending_held_fish_scale = _get_catch_presentation_scale( + fish, + display_scale, ) if not previous_show_pose: _held_fish_display.visible = false @@ -3006,10 +3008,9 @@ func _begin_catch_showcase_now( if _shovel != null: _shovel.visible = false _catch_sprite.texture = fish_catch.fish.display_texture - _catch_display.scale = ( - Vector3.ONE - * fish_catch.display_scale - * catch_presentation_base_scale + _catch_display.scale = _get_catch_presentation_scale( + fish_catch.fish, + fish_catch.display_scale, ) _catch_display.visible = _catch_sprite.texture != null _update_character_animation() @@ -3043,15 +3044,41 @@ func _begin_remote_catch_showcase_now(fish_catch: FishCatchType) -> void: if _shovel != null: _shovel.visible = false _catch_sprite.texture = fish_catch.fish.display_texture - _catch_display.scale = ( - Vector3.ONE - * fish_catch.display_scale - * catch_presentation_base_scale + _catch_display.scale = _get_catch_presentation_scale( + fish_catch.fish, + fish_catch.display_scale, ) _catch_display.visible = _catch_sprite.texture != null _update_character_animation() +func _get_catch_presentation_scale( + fish: FishDataType, + display_scale: float, +) -> Vector3: + var texture: Texture2D = fish.display_texture if fish != null else null + return ( + Vector3.ONE + * maxf(display_scale, 0.01) + * catch_presentation_base_scale + * get_catch_texture_resolution_scale(texture) + ) + + +static func get_catch_texture_resolution_scale(texture: Texture2D) -> float: + if texture == null: + return 1.0 + var texture_size: Vector2 = texture.get_size() + var longest_side: float = maxf(texture_size.x, texture_size.y) + if not is_finite(longest_side) or longest_side <= 0.0: + return 1.0 + return clampf( + CATCH_PRESENTATION_REFERENCE_LONG_SIDE_PX / longest_side, + CATCH_PRESENTATION_MIN_TEXTURE_SCALE, + CATCH_PRESENTATION_MAX_TEXTURE_SCALE, + ) + + func _is_net_strike_visual_active() -> bool: return ( _animation_action_id == CHARACTER_NET_STRIKE_ANIMATION diff --git a/tests/economy_regression_validation.gd b/tests/economy_regression_validation.gd index a4f5440..e866213 100644 --- a/tests/economy_regression_validation.gd +++ b/tests/economy_regression_validation.gd @@ -49,7 +49,7 @@ func _run() -> void: ) assert(player != null) assert(catalog != null and catalog.candidates.size() == 316) - assert(LogbookCatalog.ordered_species(catalog.candidates).size() == 56) + assert(LogbookCatalog.ordered_species(catalog.candidates).size() == 63) assert(sale_service != null) assert(shop_service != null) assert(session != null and session.is_host()) diff --git a/tests/equipment_catalog_validation.gd b/tests/equipment_catalog_validation.gd index cbbbedc..a09221a 100644 --- a/tests/equipment_catalog_validation.gd +++ b/tests/equipment_catalog_validation.gd @@ -66,6 +66,9 @@ func _initialize() -> void: assert(FishingShopStockType.get_price(&"standard_shovel") == 75) assert(FishingShopStockType.get_stock_item_ids().has(&"standard_shovel")) assert(FishingShopStockType.is_permanent_unlock(&"standard_shovel", shovel)) + assert(FishingShopStockType.is_gathering_tool(&"crab_net")) + assert(FishingShopStockType.is_gathering_tool(&"standard_shovel")) + assert(not FishingShopStockType.is_gathering_tool(&"basic_fishing_rod")) var wallet := PlayerWalletType.new() wallet.current_balance = 250 diff --git a/tests/fish_catalog_content_validation.gd b/tests/fish_catalog_content_validation.gd index 6fe3ec8..2afb18c 100644 --- a/tests/fish_catalog_content_validation.gd +++ b/tests/fish_catalog_content_validation.gd @@ -15,6 +15,7 @@ const NetworkFishingServiceType = preload( "res://network/network_fishing_service.gd" ) const FishingSpotType = preload("res://fishing/fishing_spot.gd") +const CalendarSeasonType = preload("res://world/calendar_season.gd") const Catalog: FishPoolType = preload("res://fish/pools/fish_catalog.tres") const PondPool: FishPoolType = preload( @@ -69,6 +70,8 @@ const NEW_FRESH_WATER_IDS: Array[StringName] = [ &"chub_european", &"chub_flame", &"chub_lake", &"goldfish", &"goldfish_bubbleeye", &"sauger", &"saugeye", &"trout_cutthroat", &"trout_golden", &"trout_rainbow", &"trout_steelhead", &"walleye", + &"bowfin", &"sturgeon_lake", &"gar_longnose", &"paddlefish", + &"sturgeon_shovelnose", &"gar_spotted", &"lungfish_west_african", ] @@ -122,7 +125,7 @@ func _validate_weight_based_display_scale() -> void: func _validate_catalog_and_pools() -> void: assert(Catalog.candidates.size() == 316) - assert(PondPool.candidates.size() == 19) + assert(PondPool.candidates.size() == 26) assert(OceanPool.candidates.size() == 34) var active_count: int = 0 var inactive_count: int = 0 @@ -134,6 +137,8 @@ func _validate_catalog_and_pools() -> void: assert(not catalog_numbers.has(fish.catalog_number)) catalog_numbers[fish.catalog_number] = true assert(not fish.logbook_fact.strip_edges().is_empty()) + assert(CalendarSeasonType.is_valid_mask(fish.available_seasons)) + assert(not fish.get_season_text().is_empty()) if fish.active: active_count += 1 assert(fish.is_selectable()) @@ -142,9 +147,46 @@ func _validate_catalog_and_pools() -> void: inactive_count += 1 assert(not fish.is_selectable()) assert(fish.display_texture == null) - assert(active_count == 56) - assert(inactive_count == 260) - var inactive_fish: FishDataType = Catalog.get_fish_by_id(&"bowfin") + assert(active_count == 63) + assert(inactive_count == 253) + var chum: FishDataType = Catalog.get_fish_by_id(&"salmon_chum") + assert(chum != null) + assert(chum.get_season_text() == "fall") + assert( + chum.is_available_in_season(CalendarSeasonType.Season.FALL) + ) + assert( + not chum.is_available_in_season(CalendarSeasonType.Season.SUMMER) + ) + var chum_pool := FishPoolType.new() + chum_pool.candidates = [chum] + var seasonal_collection := CollectionLogType.new() + var seasonal_selector := FishSelectorType.new() + seasonal_selector.use_deterministic_test_seed = true + var summer_context := FishingContextType.new() + summer_context.water_type = WaterType.Type.SALT_WATER + summer_context.season = CalendarSeasonType.Season.SUMMER + seasonal_selector.begin_roll() + assert( + seasonal_selector.select_fish( + chum_pool, + summer_context, + seasonal_collection, + ) == null + ) + var fall_context := FishingContextType.new() + fall_context.water_type = WaterType.Type.SALT_WATER + fall_context.season = CalendarSeasonType.Season.FALL + seasonal_selector.begin_roll() + assert( + seasonal_selector.select_fish( + chum_pool, + fall_context, + seasonal_collection, + ) == chum + ) + seasonal_collection.free() + var inactive_fish: FishDataType = Catalog.get_fish_by_id(&"mudskipper_atlantic") assert(inactive_fish != null and not inactive_fish.active) var inactive_pool := FishPoolType.new() inactive_pool.candidates = [inactive_fish] diff --git a/tests/fish_hotbar_showcase_validation.gd b/tests/fish_hotbar_showcase_validation.gd index 356791d..fb1cbe6 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 == 7) + assert(NetworkProtocol.PROTOCOL_VERSION == 8) 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 6d90042..da9f4be 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 == 7) + assert(NetworkProtocol.PROTOCOL_VERSION == 8) assert(NetworkProtocol.ENET_CHANNEL_COUNT == 10) assert(NetworkProtocol.FISH_QUALITY_CAPABILITY == "fish_quality_v1") print("Fish quality validation: PASS") diff --git a/tests/logbook_runtime_validation.gd b/tests/logbook_runtime_validation.gd index a57311a..e411fef 100644 --- a/tests/logbook_runtime_validation.gd +++ b/tests/logbook_runtime_validation.gd @@ -49,20 +49,20 @@ func _run() -> void: assert(not hotbar.visible) var entry_buttons: Dictionary = logbook.get("_entry_buttons") - assert(entry_buttons.size() == 19) + assert(entry_buttons.size() == 26) await _capture_if_requested("-unknown") logbook.call( "_select_category", WaterType.Type.FRESH_WATER ) await create_timer(0.25).timeout - assert((logbook.get("_entry_buttons") as Dictionary).size() == 19) + assert((logbook.get("_entry_buttons") as Dictionary).size() == 26) await _capture_if_requested("-fresh") logbook.call("_select_category", WaterType.Type.SALT_WATER) await create_timer(0.25).timeout assert((logbook.get("_entry_buttons") as Dictionary).size() == 34) logbook.call("_select_category", WaterType.Type.FRESH_WATER) await create_timer(0.25).timeout - assert((logbook.get("_entry_buttons") as Dictionary).size() == 19) + assert((logbook.get("_entry_buttons") as Dictionary).size() == 26) player.collection_log.mark_discovered(&"bluegill") await process_frame logbook.call("_select_entry", &"bluegill", &"bluegill") @@ -110,7 +110,21 @@ func _validate_save_round_trip( assert(catalog != null) assert(catalog.candidates.size() == 316) var active_species := LogbookCatalog.ordered_species(catalog.candidates) - assert(active_species.size() == 56) + assert(active_species.size() == 63) + # This test intentionally round-trips one catch for every active species. + # Give the fixture enough combined capacity, then bypass per-catch carried + # inventory admission while constructing it. The inventory layout still + # reconciles and persists the resulting placements. + player.inventory_layout.restore_backpack_level( + PlayerInventoryLayout.MAX_BACKPACK_LEVEL + ) + player.cooler_capacity.restore_level(PlayerCoolerCapacity.MAX_LEVEL) + assert( + player.inventory_layout.get_backpack_level() + == PlayerInventoryLayout.MAX_BACKPACK_LEVEL + ) + assert(player.cooler_capacity.get_level() == PlayerCoolerCapacity.MAX_LEVEL) + player.inventory.set_inventory_layout(null) for index: int in 4: _add_test_catch(player, active_species[index]) assert(save_manager.save_now()) @@ -131,7 +145,7 @@ func _validate_save_round_trip( assert(player.inventory.replace_all_catches(no_catches, 1)) assert(player.collection_log.replace_discovered_ids(no_discoveries)) assert(save_manager.load_player_data()) - assert(player.inventory.get_all_catches().size() == 56) + assert(player.inventory.get_all_catches().size() == 63) for fish: FishData in active_species: assert(player.inventory.get_count(fish.id) == 1) assert(player.collection_log.has_discovered(fish.id)) @@ -151,6 +165,7 @@ func _validate_save_round_trip( assert(catch_sprite != null) assert(catch_sprite.texture == fish_catch.fish.display_texture) player.end_catch_showcase(Callable(), true) + player.inventory.set_inventory_layout(player.inventory_layout) func _add_test_catch(player: Player, fish: FishData) -> void: diff --git a/tests/logbook_validation.gd b/tests/logbook_validation.gd index bf1e468..036fad2 100644 --- a/tests/logbook_validation.gd +++ b/tests/logbook_validation.gd @@ -42,7 +42,7 @@ func _run() -> void: func _validate_catalog() -> void: assert(CatalogResource.candidates.size() == 316) var ordered := LogbookCatalog.ordered_species(CatalogResource.candidates) - assert(ordered.size() == 56) + assert(ordered.size() == 63) var previous_number: int = 0 var catalog_numbers: Dictionary[int, bool] = {} for fish: FishDataType in CatalogResource.candidates: @@ -152,7 +152,7 @@ func _validate_page() -> void: var entries: Dictionary = page.get("_entry_buttons") assert( entries.size() - == (19 if category == LogbookCatalog.Category.FRESH_WATER else 34) + == (26 if category == LogbookCatalog.Category.FRESH_WATER else 34) ) for fish: FishDataType in LogbookCatalog.ordered_species( CatalogResource.candidates @@ -203,7 +203,7 @@ func _validate_page() -> void: candidate.display_name ) ) - assert(silhouette_count == 53) + assert(silhouette_count == 60) page.call("_select_category", LogbookCatalog.Category.SHELLFISH) await create_timer(0.25).timeout diff --git a/tests/player_gathering_animation_validation.gd b/tests/player_gathering_animation_validation.gd index 52b95b2..16e52c3 100644 --- a/tests/player_gathering_animation_validation.gd +++ b/tests/player_gathering_animation_validation.gd @@ -5,6 +5,12 @@ const PlayerScene: PackedScene = preload("res://player/player.tscn") const CrabBrown: FishData = preload( "res://fish/species/crab_brown/crab_brown.tres" ) +const ClamManila: FishData = preload( + "res://fish/species/clam_manila/clam_manila.tres" +) +const BeetleStagCommon: FishData = preload( + "res://fish/species/beetle_stag_common/beetle_stag_common.tres" +) func _initialize() -> void: @@ -15,6 +21,18 @@ func _run() -> void: var player := PlayerScene.instantiate() as Player root.add_child(player) await process_frame + assert(is_equal_approx( + Player.get_catch_texture_resolution_scale(CrabBrown.display_texture), + 1.0, + )) + assert(is_equal_approx( + Player.get_catch_texture_resolution_scale(ClamManila.display_texture), + 20.0, + )) + assert(is_equal_approx( + Player.get_catch_texture_resolution_scale(BeetleStagCommon.display_texture), + 20.0, + )) player.set_process(false) player.set_physics_process(false) var animation_player := player.get_node( diff --git a/tests/ui_scaling_runtime_validation.gd b/tests/ui_scaling_runtime_validation.gd index f9ddcae..53675fe 100644 --- a/tests/ui_scaling_runtime_validation.gd +++ b/tests/ui_scaling_runtime_validation.gd @@ -157,12 +157,16 @@ func _run() -> void: assert(presenter.size.is_equal_approx(Vector2(expected_viewport_size))) var chat_panel := chat_ui.get_node("ChatPanel") as Control var clock_panel := chat_ui.get_node("WorldClockPanel") as Control + var calendar_panel := chat_ui.get_node( + "WorldCalendarPanel" + ) as Control var status_effect_column := chat_ui.get_node( "StatusEffectColumn" ) as Control var weather_icon := chat_ui.get_node("WorldWeatherIcon") as Control assert(chat_panel != null) assert(clock_panel != null) + assert(calendar_panel != null) assert(status_effect_column != null) assert(weather_icon != null) assert(chat_panel.visible) @@ -175,15 +179,25 @@ func _run() -> void: ChatUI.CLOCK_EDGE_MARGIN, ChatUI.CLOCK_EDGE_MARGIN, ))) + assert(calendar_panel.position.is_equal_approx(Vector2( + ChatUI.CLOCK_EDGE_MARGIN, + ChatUI.CLOCK_EDGE_MARGIN + + ChatUI.CLOCK_SIZE.y + + ChatUI.CALENDAR_TOP_GAP, + ))) + assert(calendar_panel.size.is_equal_approx(ChatUI.CALENDAR_SIZE)) assert(is_equal_approx( status_effect_column.position.x, - clock_panel.position.x - + (ChatUI.CLOCK_SIZE.x - ChatUI.STATUS_EFFECT_ICON_SIZE.x) * 0.5, + calendar_panel.position.x + + ( + ChatUI.CALENDAR_SIZE.x + - ChatUI.STATUS_EFFECT_ICON_SIZE.x + ) * 0.5, )) assert(is_equal_approx( status_effect_column.position.y, - clock_panel.position.y - + ChatUI.CLOCK_SIZE.y + calendar_panel.position.y + + ChatUI.CALENDAR_SIZE.y + ChatUI.STATUS_EFFECT_TOP_GAP, )) assert(is_equal_approx( diff --git a/tests/world_spawn_multiplayer_validation.gd b/tests/world_spawn_multiplayer_validation.gd index 5c9b51c..c2b4101 100644 --- a/tests/world_spawn_multiplayer_validation.gd +++ b/tests/world_spawn_multiplayer_validation.gd @@ -8,6 +8,13 @@ const EXPECTED_BY_TYPE: Dictionary = { &"clam_manila": 3, &"beetle_stag_common": 3, } +const WINTER_POPULATION: int = 5 +const WINTER_BY_TYPE: Dictionary = { + &"crab_brown": 2, + &"clam_manila": 3, +} +const SUMMER_DATE_ID: String = "2026-08-18" +const WINTER_DATE_ID: String = "2026-12-18" func _initialize() -> void: @@ -30,9 +37,12 @@ func _run_host() -> void: var main: Node = await _create_initialized_main() var session := main.get_node("%NetworkSession") as NetworkSession var service: Node = main.get_node("%NetworkWorldSpawnService") + var world_time := main.get_node("%WorldTimeService") as WorldTimeService assert(session.start_dedicated_host(TEST_PORT, 8, "127.0.0.1")) + assert(world_time.synchronize_calendar_time(12.0, SUMMER_DATE_ID)) + assert(world_time.set_authoritative_time(12.0)) assert(session.set_host_open(true)) - await _wait_for_population(service) + await _wait_for_population(service, EXPECTED_POPULATION) _freeze_timed_entries(service) _validate_population(service, true) @@ -49,6 +59,14 @@ func _run_host() -> void: remote_peer_id, NetworkProtocol.WORLD_SPAWN_CAPABILITY, )) + await create_timer(0.75).timeout + assert(world_time.synchronize_calendar_time(12.0, WINTER_DATE_ID)) + await _wait_for_population(service, WINTER_POPULATION) + _validate_population(service, true, WINTER_BY_TYPE) + await create_timer(0.75).timeout + assert(world_time.synchronize_calendar_time(12.0, SUMMER_DATE_ID)) + await _wait_for_population(service, EXPECTED_POPULATION) + _validate_population(service, true) var disconnect_deadline: int = Time.get_ticks_msec() + 12000 while ( @@ -76,6 +94,7 @@ func _run_client() -> void: ) var session := main.get_node("%NetworkSession") as NetworkSession var service: Node = main.get_node("%NetworkWorldSpawnService") + var world_time := main.get_node("%WorldTimeService") as WorldTimeService var join_deadline: int = Time.get_ticks_msec() + 20000 while Time.get_ticks_msec() < join_deadline: await process_frame @@ -87,11 +106,14 @@ func _run_client() -> void: assert(session.supports_server_capability( NetworkProtocol.WORLD_SPAWN_CAPABILITY )) - await _wait_for_population(service) + await _wait_for_population(service, EXPECTED_POPULATION) _validate_population(service, false) - # Give the host process time to observe the authenticated peer before this - # deliberately short client validation disconnects. - await create_timer(0.75).timeout + await _wait_for_population(service, WINTER_POPULATION) + _validate_population(service, false, WINTER_BY_TYPE) + assert(world_time.get_calendar_date_id() == WINTER_DATE_ID) + await _wait_for_population(service, EXPECTED_POPULATION) + _validate_population(service, false) + assert(world_time.get_calendar_date_id() == SUMMER_DATE_ID) print("World spawn multiplayer client validation: PASS") session.disconnect_session("") main.queue_free() @@ -101,20 +123,27 @@ func _run_client() -> void: quit() -func _wait_for_population(service: Node) -> void: +func _wait_for_population(service: Node, expected_population: int) -> void: var deadline: int = Time.get_ticks_msec() + 12000 while Time.get_ticks_msec() < deadline: await process_frame - if (service.get("_entities") as Dictionary).size() == EXPECTED_POPULATION: + if (service.get("_entities") as Dictionary).size() == expected_population: return assert(false, "Timed out waiting for the world spawn population.") -func _validate_population(service: Node, expect_authoritative_state: bool) -> void: +func _validate_population( + service: Node, + expect_authoritative_state: bool, + expected_by_type: Dictionary = EXPECTED_BY_TYPE, +) -> void: var entities: Dictionary = service.get("_entities") var presentations: Dictionary = service.get("_presentations") - assert(entities.size() == EXPECTED_POPULATION) - assert(presentations.size() == EXPECTED_POPULATION) + var expected_population: int = 0 + for amount: int in expected_by_type.values(): + expected_population += amount + assert(entities.size() == expected_population) + assert(presentations.size() == expected_population) var counts: Dictionary = {} for state: Dictionary in entities.values(): var type_id := state.get("type_id") as StringName @@ -137,7 +166,7 @@ func _validate_population(service: Node, expect_authoritative_state: bool) -> vo else: assert(entry.get_movement_speed_for_quality(quality) > 0.0) assert(entry.get_scare_radius_for_quality(quality) > 0.0) - assert(counts == EXPECTED_BY_TYPE) + assert(counts == expected_by_type) func _freeze_timed_entries(service: Node) -> void: diff --git a/tests/world_spawn_protocol_validation.gd b/tests/world_spawn_protocol_validation.gd index 9afded4..11d2ac7 100644 --- a/tests/world_spawn_protocol_validation.gd +++ b/tests/world_spawn_protocol_validation.gd @@ -12,10 +12,11 @@ const WorldGatherableType = preload("res://gathering/world_gatherable.gd") const CRAB_PIXEL_SIZE: float = 0.0005 const REDUCED_CATCH_RING_RADIUS: float = 0.175 const NET_STRIKE_MARKER_DISTANCE: float = 0.85 +const CalendarSeasonType = preload("res://world/calendar_season.gd") func _initialize() -> void: - assert(NetworkProtocol.PROTOCOL_VERSION == 7) + assert(NetworkProtocol.PROTOCOL_VERSION == 8) assert( NetworkWorldSpawnProtocol.CAPABILITY == NetworkProtocol.WORLD_SPAWN_CAPABILITY @@ -67,6 +68,8 @@ func _validate_catalog_statuses() -> void: assert(not clam.catch_data.is_fishable()) var beetle: GatherableData = Gatherables.get_entry(&"beetle_stag_common") assert(beetle != null and beetle.is_available()) + assert(beetle.is_available(CalendarSeasonType.Season.SUMMER)) + assert(not beetle.is_available(CalendarSeasonType.Season.WINTER)) assert(beetle.catch_data.collection_method == FishData.CollectionMethod.NET) assert(beetle.required_tool_id == &"crab_net") assert(beetle.spawn_anchor_set_id == &"starter_reachable_tree_trunks") @@ -104,6 +107,12 @@ func _validate_catalog_statuses() -> void: assert(available.has(brown)) assert(available.has(clam)) assert(available.has(beetle)) + var winter_available: Array[GatherableData] = ( + Gatherables.get_available_entries(CalendarSeasonType.Season.WINTER) + ) + assert(winter_available.has(brown)) + assert(winter_available.has(clam)) + assert(not winter_available.has(beetle)) var rng := RandomNumberGenerator.new() rng.seed = 24680 var captured_delay: float = brown.get_respawn_delay(&"captured", rng) diff --git a/tests/world_time_multiplayer_validation.gd b/tests/world_time_multiplayer_validation.gd index 73659a7..114a15b 100644 --- a/tests/world_time_multiplayer_validation.gd +++ b/tests/world_time_multiplayer_validation.gd @@ -53,6 +53,9 @@ func _run_host() -> void: remote_peer_id, NetworkProtocol.WORLD_WEATHER_CAPABILITY )) assert(world_time.get_phase() == WorldTimeService.Phase.DUSK) + assert(WorldTimeService.is_valid_calendar_date_id( + world_time.get_calendar_date_id() + )) await create_timer(1.0).timeout assert(world_time.set_authoritative_time(UPDATED_HOST_TIME)) assert(world_weather.set_authoritative_weather( @@ -111,6 +114,10 @@ func _run_client() -> void: world_time.get_time_hours(), INITIAL_HOST_TIME ) <= TIME_TOLERANCE_HOURS) assert(world_time.get_phase() == WorldTimeService.Phase.DUSK) + var expected_date_id: String = WorldTimeService.date_id_from_datetime( + Time.get_datetime_dict_from_system(false) + ) + assert(world_time.get_calendar_date_id() == expected_date_id) var weather_deadline: int = Time.get_ticks_msec() + 8000 while ( Time.get_ticks_msec() < weather_deadline @@ -122,15 +129,31 @@ func _run_client() -> void: var chat_ui := game_ui.get_node("%ChatUI") as Control var clock_panel := chat_ui.get_node("WorldClockPanel") as PanelContainer var clock_label := clock_panel.get_node("WorldClockLabel") as Label + var calendar_panel := ( + chat_ui.get_node("WorldCalendarPanel") as PanelContainer + ) + var calendar_label := ( + calendar_panel.get_node("WorldCalendarLabel") as Label + ) var weather_icon := chat_ui.get_node("WorldWeatherIcon") as WeatherIcon var chat_panel := chat_ui.get_node("ChatPanel") as PanelContainer assert(clock_panel.visible) assert(clock_label.text == world_time.get_clock_text()) assert(clock_label.text.ends_with(" pm")) + assert(calendar_panel.visible) + assert(calendar_label.text == world_time.get_calendar_text()) + assert(not calendar_label.text.is_empty()) assert(weather_icon.visible) assert(weather_icon.get_weather() == WorldWeatherService.Weather.RAINY) assert(is_equal_approx(clock_panel.position.y, 10.0)) assert(is_equal_approx(weather_icon.position.y, 10.0)) + assert(is_equal_approx( + calendar_panel.position.y, + clock_panel.position.y + + clock_panel.size.y + + ChatUI.CALENDAR_TOP_GAP, + )) + assert(calendar_panel.size.is_equal_approx(ChatUI.CALENDAR_SIZE)) assert(clock_panel.position.y + clock_panel.size.y < chat_panel.position.y) assert(not chat_ui.has_method("_handle_chat_command")) @@ -159,11 +182,17 @@ func _run_client() -> void: await process_frame assert(clock_panel.position.x > 1000.0) assert(weather_icon.position.x < clock_panel.position.x) + assert(is_equal_approx( + calendar_panel.position.x, weather_icon.position.x + )) assert(is_equal_approx(clock_panel.position.y, 10.0)) chat_ui.call("set_dock_right", false) await process_frame assert(clock_panel.position.x < 20.0) assert(weather_icon.position.x > clock_panel.position.x) + assert(is_equal_approx( + calendar_panel.position.x, clock_panel.position.x + )) assert(is_equal_approx(clock_panel.position.y, 10.0)) print("World time multiplayer client validation: PASS") session.disconnect_session("") diff --git a/tests/world_time_validation.gd b/tests/world_time_validation.gd index 6b91301..a8f4106 100644 --- a/tests/world_time_validation.gd +++ b/tests/world_time_validation.gd @@ -15,6 +15,7 @@ const FishableWaterRegionType = preload( "res://world/fishable_water_region.gd" ) const WeatherIconType = preload("res://ui/weather_icon.gd") +const CalendarSeasonType = preload("res://world/calendar_season.gd") const Catalog: FishPoolType = preload("res://fish/pools/fish_catalog.tres") const SaltWaterMaterial: ShaderMaterial = preload( @@ -57,6 +58,35 @@ func _validate_clock_boundaries_and_duration() -> void: "year": 2026, "month": 8, "day": 18, }) == "2026-08-18" ) + assert(WorldTimeServiceType.is_valid_calendar_date_id("2026-08-18")) + assert(WorldTimeServiceType.is_valid_calendar_date_id("2028-02-29")) + assert(not WorldTimeServiceType.is_valid_calendar_date_id("2026-02-29")) + assert(not WorldTimeServiceType.is_valid_calendar_date_id("2026-13-01")) + assert(not WorldTimeServiceType.is_valid_calendar_date_id("2026-8-18")) + assert( + WorldTimeServiceType.format_calendar_date("2026-08-18") + == "tuesday, august 18" + ) + assert( + CalendarSeasonType.from_date_id("2026-03-01") + == CalendarSeasonType.Season.SPRING + ) + assert( + CalendarSeasonType.from_date_id("2026-06-01") + == CalendarSeasonType.Season.SUMMER + ) + assert( + CalendarSeasonType.from_date_id("2026-09-01") + == CalendarSeasonType.Season.FALL + ) + assert( + CalendarSeasonType.from_date_id("2026-12-01") + == CalendarSeasonType.Season.WINTER + ) + assert( + CalendarSeasonType.from_date_id("invalid") + == CalendarSeasonType.UNKNOWN + ) assert( WorldTimeServiceType.calendar_cycle_id_from_datetime({ "year": 2026, "month": 8, "day": 18, @@ -99,7 +129,11 @@ func _validate_clock_boundaries_and_duration() -> void: var clock := WorldTimeServiceType.new() root.add_child(clock) - clock.begin_test_session(8.0) + clock.begin_test_session(8.0, "2026-08-18") + assert(clock.get_calendar_date_id() == "2026-08-18") + assert(clock.get_calendar_text() == "tuesday, august 18") + assert(clock.get_season() == CalendarSeasonType.Season.SUMMER) + assert(clock.get_season_text() == "summer") clock.advance_time(12.0 * 60.0 * 60.0) assert(is_equal_approx(clock.get_time_hours(), 20.0)) assert(clock.is_night_period()) @@ -214,7 +248,7 @@ func _validate_fishing_availability() -> void: func _validate_fishing_spot_context() -> void: var clock := WorldTimeServiceType.new() - clock.begin_test_session(20.25) + clock.begin_test_session(20.25, "2026-12-18") var fishing_spot := FishingSpotType.new() fishing_spot.set("_world_time", clock) var region := FishableWaterRegionType.new() @@ -223,6 +257,7 @@ func _validate_fishing_spot_context() -> void: var dusk_context: FishingContext = fishing_spot.build_network_context(region) assert(dusk_context.is_night) assert(dusk_context.is_day_night_transition) + assert(dusk_context.season == CalendarSeasonType.Season.WINTER) clock.synchronize_time(14.0) var day_context: FishingContext = fishing_spot.build_network_context(region) assert(not day_context.is_night) @@ -236,16 +271,25 @@ func _validate_network_snapshot_bounds() -> void: assert(NetworkWorldTimeServiceType.validate_snapshot({ "session_id": "session", "time_hours": 8.25, + "calendar_date_id": "2026-08-18", "sequence": 1, })) assert(not NetworkWorldTimeServiceType.validate_snapshot({ "session_id": "session", "time_hours": 24.0, + "calendar_date_id": "2026-08-18", "sequence": 1, })) assert(not NetworkWorldTimeServiceType.validate_snapshot({ "session_id": "", "time_hours": 8.0, + "calendar_date_id": "2026-08-18", + "sequence": 1, + })) + assert(not NetworkWorldTimeServiceType.validate_snapshot({ + "session_id": "session", + "time_hours": 8.0, + "calendar_date_id": "2026-02-29", "sequence": 1, })) diff --git a/ui/chat_ui.gd b/ui/chat_ui.gd index 54f8a75..5f84601 100644 --- a/ui/chat_ui.gd +++ b/ui/chat_ui.gd @@ -39,6 +39,12 @@ const CLOCK_FONT_SIZE: int = 27 const CLOCK_EDGE_MARGIN: float = 10.0 const WEATHER_ICON_SIZE := Vector2(51.0, 51.0) const WEATHER_ICON_GAP: float = 6.0 +const CALENDAR_SIZE := Vector2( + CLOCK_SIZE.x + WEATHER_ICON_GAP + WEATHER_ICON_SIZE.x, + 28.0, +) +const CALENDAR_FONT_SIZE: int = 16 +const CALENDAR_TOP_GAP: float = 4.0 const STATUS_EFFECT_ICON_SIZE := Vector2(40.0, 40.0) const STATUS_EFFECT_TOP_GAP: float = 6.0 const STATUS_EFFECT_ICON_GAP: int = 4 @@ -98,6 +104,8 @@ var _speech_layer: Control var _animalese_voice: AnimaleseVoiceType var _clock_panel: PanelContainer var _clock_label: Label +var _calendar_panel: PanelContainer +var _calendar_label: Label var _weather_icon: WeatherIconType var _status_effect_column: VBoxContainer var _status_effect_icons: Dictionary[StringName, TextureRect] = {} @@ -176,6 +184,18 @@ func setup( _on_world_time_changed( _world_time.get_time_hours(), _world_time.get_phase() ) + if ( + _world_time != null + and not _world_time.calendar_date_changed.is_connected( + _on_world_calendar_date_changed + ) + ): + _world_time.calendar_date_changed.connect( + _on_world_calendar_date_changed + ) + _on_world_calendar_date_changed( + _world_time.get_calendar_date_id() + ) if ( _world_weather != null and not _world_weather.weather_changed.is_connected( @@ -474,6 +494,30 @@ func _build_ui() -> void: "font_color", UtilityPageStyle.OCEAN_TEXT_PRIMARY ) _clock_panel.add_child(_clock_label) + _calendar_panel = PanelContainer.new() + _calendar_panel.name = "WorldCalendarPanel" + _calendar_panel.size = CALENDAR_SIZE + _calendar_panel.mouse_filter = Control.MOUSE_FILTER_IGNORE + _calendar_panel.add_theme_stylebox_override( + "panel", _calendar_panel_style() + ) + add_child(_calendar_panel) + _calendar_label = Label.new() + _calendar_label.name = "WorldCalendarLabel" + _calendar_label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER + _calendar_label.vertical_alignment = VERTICAL_ALIGNMENT_CENTER + _calendar_label.mouse_filter = Control.MOUSE_FILTER_IGNORE + _calendar_label.add_theme_font_override( + "font", UtilityPageStyle.TuffyFont + ) + _calendar_label.add_theme_font_size_override( + "font_size", CALENDAR_FONT_SIZE + ) + _calendar_label.add_theme_color_override( + "font_color", UtilityPageStyle.OCEAN_TEXT_PRIMARY + ) + _calendar_label.text_overrun_behavior = TextServer.OVERRUN_TRIM_ELLIPSIS + _calendar_panel.add_child(_calendar_label) _status_effect_column = VBoxContainer.new() _status_effect_column.name = "StatusEffectColumn" _status_effect_column.mouse_filter = Control.MOUSE_FILTER_IGNORE @@ -652,6 +696,7 @@ func _build_ui() -> void: add_child(_draft_save_timer) _panel.hide() _clock_panel.hide() + _calendar_panel.hide() _weather_icon.hide() _collapse_button.hide() _height_button.hide() @@ -717,6 +762,16 @@ func _clock_panel_style() -> StyleBoxFlat: return style +func _calendar_panel_style() -> StyleBoxFlat: + var style := _borderless_style(CHAT_SURFACE_COLOR) + style.set_corner_radius_all(10) + style.content_margin_left = 8 + style.content_margin_right = 8 + style.content_margin_top = 2 + style.content_margin_bottom = 2 + return style + + func _borderless_style(color: Color) -> StyleBoxFlat: var style := StyleBoxFlat.new() style.bg_color = color @@ -1032,6 +1087,7 @@ func _refresh_visibility() -> void: if not _available: _panel.hide() _clock_panel.hide() + _calendar_panel.hide() _weather_icon.hide() _status_effect_column.hide() _collapse_button.hide() @@ -1042,6 +1098,7 @@ func _refresh_visibility() -> void: if _hud_hidden and not _opened: _panel.hide() _clock_panel.hide() + _calendar_panel.hide() _weather_icon.hide() _status_effect_column.hide() _collapse_button.hide() @@ -1050,6 +1107,7 @@ func _refresh_visibility() -> void: _hint.hide() return _clock_panel.show() + _calendar_panel.visible = not _calendar_label.text.is_empty() _weather_icon.show() _collapse_button.show() var collapsed := _presentation_state == PresentationState.COLLAPSED @@ -1439,6 +1497,17 @@ func _layout_presentation(animate: bool) -> void: var weather_icon_position := Vector2( weather_icon_x, clock_position.y ) + var calendar_position := Vector2( + minf(clock_position.x, weather_icon_position.x), + clock_position.y + CLOCK_SIZE.y + CALENDAR_TOP_GAP, + ) + status_effect_column_position = Vector2( + calendar_position.x + + (CALENDAR_SIZE.x - STATUS_EFFECT_ICON_SIZE.x) * 0.5, + calendar_position.y + + CALENDAR_SIZE.y + + STATUS_EFFECT_TOP_GAP, + ) var hint_position := Vector2( ( viewport_width - _hint.size.x - HINT_EDGE_MARGIN @@ -1454,6 +1523,8 @@ func _layout_presentation(animate: bool) -> void: _panel.size = target_size _clock_panel.position = clock_position _clock_panel.size = CLOCK_SIZE + _calendar_panel.position = calendar_position + _calendar_panel.size = CALENDAR_SIZE _status_effect_column.position = status_effect_column_position _weather_icon.position = weather_icon_position _weather_icon.size = WEATHER_ICON_SIZE @@ -1476,6 +1547,12 @@ func _layout_presentation(animate: bool) -> void: clock_position, UIMotion.CHAT_RESIZE_DURATION, ).set_trans(Tween.TRANS_QUAD).set_ease(Tween.EASE_OUT) + _height_tween.tween_property( + _calendar_panel, + "position", + calendar_position, + UIMotion.CHAT_RESIZE_DURATION, + ).set_trans(Tween.TRANS_QUAD).set_ease(Tween.EASE_OUT) _height_tween.tween_property( _status_effect_column, "position", @@ -1617,6 +1694,17 @@ func _on_world_time_changed( _weather_icon.set_nighttime(_world_time.is_night_period()) +func _on_world_calendar_date_changed(_date_id: String) -> void: + if _calendar_label == null or _world_time == null: + return + _calendar_label.text = _world_time.get_calendar_text() + _calendar_panel.visible = ( + _available + and (not _hud_hidden or _opened) + and not _calendar_label.text.is_empty() + ) + + func _on_world_weather_changed( weather: WorldWeatherService.Weather, _seconds_remaining: float, diff --git a/ui/logbook_page.gd b/ui/logbook_page.gd index 7817209..ed95e2d 100644 --- a/ui/logbook_page.gd +++ b/ui/logbook_page.gd @@ -911,6 +911,7 @@ func _build_known_details(fish: FishDataType) -> void: _add_detail_row(left_stats, "number caught", "unknown") _add_detail_row(right_stats, "rarity", fish.get_rarity_name().to_lower()) _add_detail_row(right_stats, "time of day", _availability_text(fish)) + _add_detail_row(right_stats, "seasons", fish.get_season_text()) _add_currency_detail_row( right_stats, "value range", @@ -1083,6 +1084,7 @@ func _stats_overlay_text(fish: FishDataType, catalog_number: int) -> String: ], "rarity: %s" % fish.get_rarity_name().to_lower(), "time of day: %s" % _availability_text(fish), + "seasons: %s" % fish.get_season_text(), "value range: %d–%d" % [ FishQualityType.apply_sale_value( fish.sell_value_min, diff --git a/world/calendar_season.gd b/world/calendar_season.gd new file mode 100644 index 0000000..bf13920 --- /dev/null +++ b/world/calendar_season.gd @@ -0,0 +1,82 @@ +class_name CalendarSeason +extends RefCounted + +enum Season { + SPRING, + SUMMER, + FALL, + WINTER, +} + +const UNKNOWN: int = -1 +const SPRING_MASK: int = 1 << Season.SPRING +const SUMMER_MASK: int = 1 << Season.SUMMER +const FALL_MASK: int = 1 << Season.FALL +const WINTER_MASK: int = 1 << Season.WINTER +const ALL_MASK: int = ( + SPRING_MASK | SUMMER_MASK | FALL_MASK | WINTER_MASK +) +const NAMES: Array[String] = [ + "spring", + "summer", + "fall", + "winter", +] + + +static func from_date_id(date_id: String) -> int: + if ( + date_id.length() != 10 + or date_id[4] != "-" + or date_id[7] != "-" + ): + return UNKNOWN + var month_text: String = date_id.substr(5, 2) + if not month_text.is_valid_int(): + return UNKNOWN + return from_month(int(month_text)) + + +static func from_month(month: int) -> int: + match month: + 3, 4, 5: + return Season.SPRING + 6, 7, 8: + return Season.SUMMER + 9, 10, 11: + return Season.FALL + 12, 1, 2: + return Season.WINTER + _: + return UNKNOWN + + +static func mask_for(season: int) -> int: + if season < 0 or season >= Season.size(): + return 0 + return 1 << season + + +static func is_valid_mask(mask: int) -> bool: + return mask > 0 and (mask & ~ALL_MASK) == 0 + + +static func includes(mask: int, season: int) -> bool: + if season == UNKNOWN: + return true + return is_valid_mask(mask) and (mask & mask_for(season)) != 0 + + +static func names_for_mask(mask: int) -> Array[String]: + var names: Array[String] = [] + for season: int in Season.size(): + if includes(mask, season): + names.append(NAMES[season]) + return names + + +static func format_mask(mask: int) -> String: + if mask == ALL_MASK: + return "year-round" + var names: Array[String] = names_for_mask(mask) + return ", ".join(names) if not names.is_empty() else "unavailable" diff --git a/world/calendar_season.gd.uid b/world/calendar_season.gd.uid new file mode 100644 index 0000000..ad2b2f2 --- /dev/null +++ b/world/calendar_season.gd.uid @@ -0,0 +1 @@ +uid://bbxw8iht54hir diff --git a/world/world_time_service.gd b/world/world_time_service.gd index a710c1d..b521c7f 100644 --- a/world/world_time_service.gd +++ b/world/world_time_service.gd @@ -1,8 +1,11 @@ class_name WorldTimeService extends Node +const CalendarSeasonType = preload("res://world/calendar_season.gd") + signal time_changed(time_hours: float, phase: Phase) signal phase_changed(phase: Phase) +signal calendar_date_changed(date_id: String) signal authoritative_time_set(time_hours: float) signal natural_time_advanced(hours: float) @@ -25,6 +28,32 @@ const DAWN_END_HOUR: float = DAY_START_HOUR + TRANSITION_HALF_HOURS const DUSK_START_HOUR: float = NIGHT_START_HOUR - TRANSITION_HALF_HOURS const DUSK_END_HOUR: float = NIGHT_START_HOUR + TRANSITION_HALF_HOURS const DEFAULT_START_HOUR: float = DAY_START_HOUR +const MONTH_NAMES: Array[String] = [ + "january", + "february", + "march", + "april", + "may", + "june", + "july", + "august", + "september", + "october", + "november", + "december", +] +const WEEKDAY_NAMES: Array[String] = [ + "sunday", + "monday", + "tuesday", + "wednesday", + "thursday", + "friday", + "saturday", +] +const WEEKDAY_MONTH_OFFSETS: Array[int] = [ + 0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4, +] var _time_hours: float = DEFAULT_START_HOUR var _persistent_time_hours: float = DEFAULT_START_HOUR @@ -71,16 +100,26 @@ func begin_remote_session() -> void: _editor_time_override = false _system_clock_sample_elapsed = 0.0 _last_system_unix_seconds = -1.0 + _set_calendar_date_id("") + _local_datetime = {} set_process(true) -func begin_test_session(start_hour: float = DEFAULT_START_HOUR) -> void: +func begin_test_session( + start_hour: float = DEFAULT_START_HOUR, + date_id: String = "", +) -> void: _running = true _system_clock_authority = false _editor_time_override = false _system_clock_sample_elapsed = 0.0 _last_system_unix_seconds = -1.0 set_process(false) + if is_valid_calendar_date_id(date_id): + _set_remote_datetime(start_hour, date_id) + else: + _set_calendar_date_id("") + _local_datetime = {} _set_time_hours(start_hour, true) @@ -90,7 +129,7 @@ func end_session() -> void: _editor_time_override = false _system_clock_sample_elapsed = 0.0 _last_system_unix_seconds = -1.0 - _calendar_date_id = "" + _set_calendar_date_id("") _local_datetime = {} set_process(false) _set_time_hours(DEFAULT_START_HOUR, true) @@ -110,6 +149,20 @@ func synchronize_time(authoritative_time_hours: float) -> void: _set_time_hours(authoritative_time_hours, true) +func synchronize_calendar_time( + authoritative_time_hours: float, + date_id: String, +) -> bool: + if ( + not is_finite(authoritative_time_hours) + or not is_valid_calendar_date_id(date_id) + ): + return false + _set_remote_datetime(authoritative_time_hours, date_id) + _set_time_hours(authoritative_time_hours, true) + return true + + func set_authoritative_time(time_hours: float) -> bool: # This hook intentionally exists only in the Godot editor/test runtime. # Exported clients and dedicated servers always follow their authoritative @@ -191,6 +244,23 @@ func get_clock_text() -> String: return format_clock_time(_time_hours) +func get_calendar_text() -> String: + return format_calendar_date(_calendar_date_id) + + +func get_season() -> int: + return CalendarSeasonType.from_date_id(_calendar_date_id) + + +func get_season_text() -> String: + var season: int = get_season() + return ( + CalendarSeasonType.NAMES[season] + if season != CalendarSeasonType.UNKNOWN + else "" + ) + + static func time_hours_from_datetime(datetime: Dictionary) -> float: var hour: int = clampi(int(datetime.get("hour", 0)), 0, 23) var minute: int = clampi(int(datetime.get("minute", 0)), 0, 59) @@ -210,6 +280,44 @@ static func date_id_from_datetime(datetime: Dictionary) -> String: ] +static func is_valid_calendar_date_id(date_id: String) -> bool: + if ( + date_id.length() != 10 + or date_id[4] != "-" + or date_id[7] != "-" + ): + return false + var year_text: String = date_id.substr(0, 4) + var month_text: String = date_id.substr(5, 2) + var day_text: String = date_id.substr(8, 2) + if ( + not year_text.is_valid_int() + or not month_text.is_valid_int() + or not day_text.is_valid_int() + ): + return false + var year: int = int(year_text) + var month: int = int(month_text) + var day: int = int(day_text) + if year < 1 or month < 1 or month > 12: + return false + return day >= 1 and day <= _days_in_month(year, month) + + +static func format_calendar_date(date_id: String) -> String: + if not is_valid_calendar_date_id(date_id): + return "" + var year: int = int(date_id.substr(0, 4)) + var month: int = int(date_id.substr(5, 2)) + var day: int = int(date_id.substr(8, 2)) + var weekday: int = _weekday_for_date(year, month, day) + return "%s, %s %d" % [ + WEEKDAY_NAMES[weekday], + MONTH_NAMES[month - 1], + day, + ] + + static func calendar_cycle_id_from_datetime( datetime: Dictionary, rollover_hour: float, @@ -257,8 +365,8 @@ func _sample_system_clock(force_emit: bool) -> void: var previous_unix_seconds: float = _last_system_unix_seconds _last_system_unix_seconds = unix_seconds _local_datetime = datetime.duplicate(true) - _calendar_date_id = date_id_from_datetime(datetime) _set_time_hours(time_hours_from_datetime(datetime), force_emit) + _set_calendar_date_id(date_id_from_datetime(datetime)) if previous_unix_seconds < 0.0: return var advanced_seconds: float = unix_seconds - previous_unix_seconds @@ -266,6 +374,27 @@ func _sample_system_clock(force_emit: bool) -> void: natural_time_advanced.emit(advanced_seconds / 3600.0) +func _set_remote_datetime(time_hours: float, date_id: String) -> void: + var normalized: float = _normalized_hour(time_hours) + var total_seconds: int = floori(normalized * 60.0 * 60.0) + _local_datetime = { + "year": int(date_id.substr(0, 4)), + "month": int(date_id.substr(5, 2)), + "day": int(date_id.substr(8, 2)), + "hour": total_seconds / 3600, + "minute": (total_seconds / 60) % 60, + "second": total_seconds % 60, + } + _set_calendar_date_id(date_id) + + +func _set_calendar_date_id(date_id: String) -> void: + if date_id == _calendar_date_id: + return + _calendar_date_id = date_id + calendar_date_changed.emit(_calendar_date_id) + + func _set_time_hours(time_hours: float, force_emit: bool) -> void: var normalized: float = _normalized_hour(time_hours) var next_phase: Phase = phase_for_hour(normalized) @@ -285,3 +414,30 @@ func _set_time_hours(time_hours: float, force_emit: bool) -> void: static func _normalized_hour(time_hours: float) -> float: return fposmod(time_hours, HOURS_PER_DAY) + + +static func _days_in_month(year: int, month: int) -> int: + match month: + 2: + return 29 if _is_leap_year(year) else 28 + 4, 6, 9, 11: + return 30 + _: + return 31 + + +static func _is_leap_year(year: int) -> bool: + return year % 400 == 0 or (year % 4 == 0 and year % 100 != 0) + + +static func _weekday_for_date(year: int, month: int, day: int) -> int: + var adjusted_year: int = year - 1 if month < 3 else year + return posmod( + adjusted_year + + adjusted_year / 4 + - adjusted_year / 100 + + adjusted_year / 400 + + WEEKDAY_MONTH_OFFSETS[month - 1] + + day, + 7, + )