Compare commits

...

38 commits

Author SHA1 Message Date
f55663c105 Expand fish and equipment catalogs 2026-08-14 16:31:28 -04:00
63e50e285d Document expanded fish catalog 2026-08-14 16:30:34 -04:00
65967816f5 fix multiplayer commands and disconnect recovery 2026-08-13 23:57:15 -04:00
5d7c3d7459 Prepare v0.7.1-alpha release 2026-08-13 22:25:55 -04:00
e54ad1332b Fix rain coverage and in-game session switching 2026-08-13 22:20:43 -04:00
2045d8e288 Fix multiplayer presentation and Fishnet synchronization 2026-08-13 21:58:43 -04:00
31d459b3a7 Prepare v0.6.8-alpha release 2026-08-13 18:59:19 -04:00
dbe0a7b313 Increase Cooler notepad action text sizes 2026-08-13 16:26:05 -04:00
8bc800de36 Refresh character channel masks and add round fox support 2026-08-13 16:25:59 -04:00
552af7a58c Tint the Art Kit marker icon from its selected color 2026-08-13 16:25:49 -04:00
405bdaa2d2 Unify foggy water presentation and remove shoreline ribbons 2026-08-13 16:25:43 -04:00
3576daba16 Refresh fox head and arm channel masks 2026-08-13 15:33:48 -04:00
0076996d39 Update fox pointy-head channel mask 2026-08-13 15:26:02 -04:00
c06d5714c0 Revise Art Kit workflow and refresh fox patterns 2026-08-13 15:24:23 -04:00
117fdbfdaa Polish world, shop, and artwork presentation 2026-08-13 14:53:39 -04:00
7d38bc962b Refine sprint and landing dust effects 2026-08-13 14:23:11 -04:00
c239ca6bd5 Correct foggy ocean horizon blending 2026-08-13 11:13:09 -04:00
5ec62b8465 Refine Bengal pattern and fog blending 2026-08-13 10:46:57 -04:00
2159798d1a Update character model UV maps 2026-08-13 10:21:01 -04:00
51fa6535b6 Add weather presentation and gameplay UI improvements 2026-08-13 01:31:05 -04:00
db6074ddfa Consolidate project documentation and attribution
Add public-alias credits and a tested in-game credits page, centralize project guidance and asset provenance, import the complete authored fur channel maps, and keep starter-island collision synchronized with imported props.
2026-08-12 22:12:11 -04:00
1940ae13e5 Add customizable fur patterns 2026-08-12 16:29:58 -04:00
9729c278dc Merge remote-tracking branch 'origin/main'
# Conflicts:
#	export_presets.cfg
#	scripts/build_playtest.sh
2026-08-12 11:22:50 -04:00
40b8fe0278 License NETfishing code and define asset terms 2026-08-12 10:11:20 -04:00
24b9570463 Honor authored barrier health bands 2026-08-11 22:58:46 -04:00
41192e4ef5 Add identity-backed server moderation 2026-08-11 22:58:33 -04:00
d944367301 Prepare v0.6.7-alpha release 2026-08-11 20:31:02 -04:00
b044d35021 Prepare v0.6.6-alpha release 2026-08-11 20:02:54 -04:00
96df168851 Fix release validation coverage 2026-08-11 17:57:09 -04:00
e791f15e87 Add ambient character blinking 2026-08-11 16:39:20 -04:00
c038eeadea Refine shop, online sessions, and player feedback 2026-08-11 16:35:33 -04:00
2ffcbf51ac Improve public room connection resilience 2026-08-11 10:37:03 -04:00
15551030f5 Prepare v0.6.5-alpha release 2026-08-10 22:07:32 -04:00
d690d74268 Fix multiplayer gameplay and UI interaction edge cases 2026-08-10 21:40:55 -04:00
e589ca9133 feat: add public host NAT traversal 2026-08-10 19:49:06 -04:00
74c82696fe Add dedicated server runtime 2026-08-10 13:56:03 -04:00
e204279b09 Add public room discovery 2026-08-10 10:04:05 -04:00
59ef173ea7 Player model refinements 2026-08-10 07:46:34 -04:00
634 changed files with 23033 additions and 2738 deletions

135
ASSET-LICENSE.md Normal file
View file

@ -0,0 +1,135 @@
# NETfishing Asset License 1.0
Copyright © 2026 Woofmeow. All rights reserved except for the permissions
expressly granted below.
## 1. Scope
This license applies to original NETfishing artwork, graphics, textures,
models, animations, music, sound recordings, narrative content, visual
designs, characters, and other creative assets owned by the NETfishing owners,
publishing as Woofmeow (the **“NETfishing Assets”**).
It does not apply to:
- software source code identified as GPL-3.0-or-later;
- third-party material identified in the source repository's
`docs/ATTRIBUTION.md` or the packaged `ATTRIBUTION.md` notice;
- material accompanied by a different license; or
- the NETfishing and Woofmeow names and logos, which are addressed in
`TRADEMARKS.md`.
Repository location alone does not change third-party ownership or licensing.
## 2. Definitions
**Official NETfishing Software** means:
- an unmodified binary release published by the NETfishing owners through an
official NETfishing distribution channel; or
- a build made from an unmodified official NETfishing source release or tagged
revision.
**Mod** means a non-standalone add-on created to operate with Official
NETfishing Software. A Mod may add, replace, or alter content loaded by the
Official NETfishing Software, but it may not redistribute a replacement copy
of the game or represent a fork, clone, sequel, or separate game.
## 3. Permission to use the official game
You may reproduce NETfishing Assets as technically necessary to install, run,
back up, and privately modify a lawfully obtained copy of Official NETfishing
Software.
You may capture, publish, and monetize screenshots, gameplay videos,
livestreams, reviews, tutorials, and similar commentary showing a lawfully
obtained copy of NETfishing. This permission does not authorize redistribution
of the source asset files or imply endorsement.
## 4. Community Mod license
Subject to this license, you may create, modify, and distribute NETfishing
Assets solely as part of a Mod for Official NETfishing Software.
This permission is worldwide, nonexclusive, royalty-free, and available for
as long as you comply with this license. It permits only the copies of
NETfishing Assets reasonably necessary for the Mod to function. It does not
permit distributing the original game, a substantially complete collection of
its assets, or a general-purpose asset pack.
A distributed Mod must:
1. require a separately obtained copy of Official NETfishing Software;
2. be presented as unofficial community content;
3. include the following notice in its documentation or distribution page:
> Contains or adapts NETfishing assets © 2026 Woofmeow, used under the
> NETfishing Asset License 1.0. This Mod is unofficial and is not endorsed
> by Woofmeow.
4. identify material created by the Mod author separately from NETfishing
Assets; and
5. comply with `TRADEMARKS.md`.
Mods may be shared without charge and may accept voluntary donations that do
not purchase access, features, or preferential treatment. Selling a Mod,
charging for access to it, licensing it commercially, or using NETfishing
Assets in paid products requires separate written permission from both
NETfishing owners.
## 5. Uses not permitted
Except with separate written permission from both NETfishing owners, you may
not use or distribute NETfishing Assets:
- in a fork, clone, remake, sequel, or standalone game;
- with a modified distribution of the GPL-covered NETfishing code that is not
Official NETfishing Software;
- in another game, application, asset library, template, or merchandise;
- as a substantially complete asset extraction or archive;
- in a way that implies sponsorship, endorsement, or official status;
- to register a confusingly similar trademark, domain, account, or product
identity; or
- under terms that claim ownership of the NETfishing Assets themselves.
The GPL permits forks and redistribution of the GPL-covered code. This asset
license does not permit those forks to carry NETfishing Assets. A code fork
must remove or replace the NETfishing Assets and reserved branding unless both
owners grant separate written permission.
## 6. Ownership of Mods
You retain ownership of your original Mod material. The NETfishing owners
retain ownership of the NETfishing Assets and adaptations of those assets to
the extent provided by applicable law.
This license does not require you to assign your original Mod material to the
NETfishing owners. It also does not grant you ownership of the underlying
NETfishing Assets.
## 7. Termination and cure
Your permissions under this license terminate automatically if you violate
its terms. They are reinstated provisionally when you stop the violation and
permanently if both NETfishing owners do not notify you of the violation
within sixty days after it has been cured.
Termination does not limit remedies available for activity outside this
license.
## 8. No warranty
THE NETFISHING ASSETS ARE PROVIDED “AS IS,” WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
PARTICULAR PURPOSE, TITLE, OR NON-INFRINGEMENT. TO THE MAXIMUM EXTENT
PERMITTED BY LAW, THE OWNERS WILL NOT BE LIABLE FOR ANY CLAIM, DAMAGES, OR
OTHER LIABILITY ARISING FROM THIS LICENSE OR USE OF THE NETFISHING ASSETS.
## 9. Additional permission
Uses not granted here require written permission from both NETfishing owners.
A permission granted to one person or project does not amend this license for
others.
This is a custom asset license, not an open-source software license or a
Creative Commons license.

View file

@ -4,6 +4,12 @@ NETfishing is currently developed through focused changes on the repository's
active development branch. Coordinate scope with the project owner before active development branch. Coordinate scope with the project owner before
starting substantial work. starting substantial work.
By intentionally submitting material for inclusion, contributors agree to the
applicable grants and representations in
[`CONTRIBUTOR-TERMS.md`](CONTRIBUTOR-TERMS.md). Maintainers must preserve an
affirmative record of that agreement. Contact the owners before submitting if
separate written terms are needed.
## Change discipline ## Change discipline
- Keep a change focused; avoid unrelated cleanup. - Keep a change focused; avoid unrelated cleanup.
@ -15,7 +21,10 @@ starting substantial work.
- Keep presentation-only systems out of save files and network messages. - Keep presentation-only systems out of save files and network messages.
- Store runtime assets under repository-owned paths; never reference a - Store runtime assets under repository-owned paths; never reference a
workstation sync or temporary directory. workstation sync or temporary directory.
- Record the source and license of newly imported assets. - Record the source and license of newly imported assets in
[`docs/ATTRIBUTION.md`](docs/ATTRIBUTION.md).
- Do not assume the GPL code license applies to project assets; observe
[`ASSET-LICENSE.md`](ASSET-LICENSE.md) and third-party terms.
- Do not commit `.godot/`, test data, logs, captures, or build outputs. - Do not commit `.godot/`, test data, logs, captures, or build outputs.
## Before requesting review ## Before requesting review
@ -26,7 +35,8 @@ scripts/run_validations.sh quick
git status --short git status --short
``` ```
Choose additional focused tests from [`docs/TESTING.md`](docs/TESTING.md). Choose additional focused tests from the validation section of
[`docs/DEVELOPMENT.md`](docs/DEVELOPMENT.md#validation).
Changes involving networking should run the network suite and a real Changes involving networking should run the network suite and a real
two-process check. Visual changes still require graphical review; headless two-process check. Visual changes still require graphical review; headless
tests are supporting evidence, not a replacement. tests are supporting evidence, not a replacement.
@ -46,3 +56,7 @@ Follow the conventions already present in the surrounding GDScript, scene, and
resource files. Prefer typed values, named constants, shared resources, and resource files. Prefer typed values, named constants, shared resources, and
small domain-specific services. Avoid duplicating protocol definitions or small domain-specific services. Avoid duplicating protocol definitions or
using display strings as persistent identifiers. using display strings as persistent identifiers.
New standalone source files should use `SPDX-License-Identifier:
GPL-3.0-or-later` where the file format permits comments. Do not add that
identifier to asset files governed by the NETfishing Asset License.

94
CONTRIBUTOR-TERMS.md Normal file
View file

@ -0,0 +1,94 @@
# NETfishing contributor terms
These terms apply to contributions intentionally submitted for inclusion in
NETfishing after these terms are published. They do not retroactively change
ownership of earlier work or replace a separately signed agreement.
“Owners” means the two NETfishing co-owners who publish the Project as
Woofmeow and are publicly credited as Voyager and Endeavour. “Project” means
the official NETfishing game, its servers, tools, documentation, websites,
ports, updates, and promotional materials.
## 1. Your ownership and authority
You retain copyright in your original contribution. By submitting it, you
represent that:
- you created it or otherwise have authority to grant these permissions;
- its submission does not knowingly violate another partys copyright,
patent, trademark, privacy, contract, or other rights;
- you have disclosed relevant third-party material and license terms; and
- if an employer or another organization controls the contribution, you have
obtained its permission before submitting.
Do not submit confidential information, unlawfully obtained material, or
content whose origin and permitted use cannot be documented.
## 2. Code contributions
You license an accepted software-code contribution under the GNU General
Public License, version 3 or, at the recipients option, any later version
(GPL-3.0-or-later).
You also grant each recipient a perpetual, worldwide, nonexclusive,
royalty-free patent license under patent claims you can license that are
necessarily infringed by your contribution alone or by its combination with
the Project as submitted. This patent license does not cover later
combinations that are unrelated to your submitted contribution.
## 3. Asset, writing, and documentation contributions
For an accepted contribution consisting of artwork, models, animation, audio,
music, writing, level content, branding material, or other non-code creative
work, you grant the Owners a perpetual, worldwide, nonexclusive,
royalty-free, transferable, and sublicensable license to:
- use, reproduce, modify, adapt, translate, and create derivative works;
- distribute, publicly display, publicly perform, transmit, and make
available the contribution;
- include it in free and commercial Project releases, ports, updates,
merchandise, marketing, and archival materials; and
- license it to Project users under `ASSET-LICENSE.md` or a later Project asset
license jointly approved by the Owners.
This grant is limited to NETfishing, its promotion, and official successor or
derived NETfishing products. It does not transfer your copyright or authorize
the Owners to sell your contribution as an unrelated standalone asset.
## 4. Documentation accompanying code
Documentation submitted as an ordinary part of a code contribution may be
distributed under GPL-3.0-or-later with that code. Project credits and
provenance records may be reproduced in any medium needed to document the
Project and its releases.
## 5. Attribution
Provide the name or pseudonym you want used for credit. The Owners will make a
reasonable effort to preserve material attribution, subject to formatting,
privacy, platform, and practical limitations.
Attribution does not imply that a contributor endorses every Project change
or release.
## 6. No automatic ownership, employment, or payment
Submitting a contribution does not provide ownership of NETfishing, create an
employment, agency, partnership, or fiduciary relationship, or create a right
to compensation. Any payment, ownership, or employment arrangement requires a
separate written agreement signed by the appropriate parties.
## 7. Acceptance
A contribution is not accepted merely because it was posted, uploaded, or
discussed. The Owners or their authorized maintainers may accept, modify,
decline, or later remove it.
By intentionally submitting a patch, pull request, asset, or other material
for Project inclusion after receiving notice of these terms, you agree to the
applicable grants above. Maintainers should record the contributors
affirmative agreement in the pull request, issue, email, or another durable
written record.
If you cannot agree to these terms, do not submit the contribution; contact
the Owners to discuss a separate written arrangement.

View file

@ -1,56 +0,0 @@
# Credits
## Project direction
NETfishing is designed, directed, reviewed, and released by its project
creator. A public-facing creator or studio credit has not yet been recorded in
this repository.
## Development assistance
Development has used automated coding assistance for implementation,
investigation, testing, documentation, and review. Design choices, supplied
artwork, acceptance decisions, repository operations, and releases remain
human-controlled.
This disclosure is intentionally about process. Commit style, code style, or
repository metadata cannot reliably prove whether a particular change was
written with or without assistance.
## Fonts
- Tuffy: Thatcher Ulrich, Karoly Barta, and Michael Evans. The bundled license
dedicates the work to the public domain; see `ui/fonts/Tuffy-LICENSE.txt`.
- Seattle Avenue: bundled as `ui/fonts/seattle_avenue.otf`. Author and
redistribution terms still need to be recorded before public distribution.
## Music
- `audio/music/title/as_in_four_wolves.ogg`: original title/ambient music by
the project owner.
## Sound effects
- “Spinning reel.wav” by tosha73, used as the source for the fishing fight and
manual-reeling loops. Freesound sound 509902, Creative Commons Zero (CC0):
https://freesound.org/s/509902/
- “Gentle Ocean Waves Loop” by kkenny101, used for the saltwater shoreline
ambience. Freesound sound 852826, Creative Commons Zero (CC0):
https://freesound.org/s/852826/
- Rain Loop Ontario by Ayton -- https://freesound.org/s/212799/ -- License:
Attribution 3.0
- Dog_Bark.wav by ivolipa -- https://freesound.org/s/328729/ -- License:
Creative Commons 0
- Cat meow.m4a by Christyboy100 -- https://freesound.org/s/495694/ -- License:
Attribution 3.0
- “Quick Water Droplet” by qubodup, used for the bobber water-impact sound.
Freesound sound 792931, Creative Commons Zero (CC0):
https://freesound.org/s/792931/
## Artwork
- 2D artwork: Rheannon Eisworth, contributor.
- 3D models: original work by the project owner.
Asset categories and release-record requirements are listed in
[`docs/ASSET-PROVENANCE.md`](docs/ASSET-PROVENANCE.md).

232
LICENSE Normal file
View file

@ -0,0 +1,232 @@
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright © 2007 Free Software Foundation, Inc. <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for software and other kinds of works.
The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too.
When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.
Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions.
Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and modification follow.
TERMS AND CONDITIONS
0. Definitions.
“This License” refers to version 3 of the GNU General Public License.
“Copyright” also means copyright-like laws that apply to other kinds of works, such as semiconductor masks.
“The Program” refers to any copyrightable work licensed under this License. Each licensee is addressed as “you”. “Licensees” and “recipients” may be individuals or organizations.
To “modify” a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a “modified version” of the earlier work or a work “based on” the earlier work.
A “covered work” means either the unmodified Program or a work based on the Program.
To “propagate” a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well.
To “convey” a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays “Appropriate Legal Notices” to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion.
1. Source Code.
The “source code” for a work means the preferred form of the work for making modifications to it. “Object code” means any non-source form of a work.
A “Standard Interface” means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language.
The “System Libraries” of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A “Major Component”, in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it.
The “Corresponding Source” for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work.
The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source.
The Corresponding Source for a work in source code form is that same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures.
When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified it, and giving a relevant date.
b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to “keep intact all notices”.
c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so.
A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an “aggregate” if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways:
a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b.
d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d.
A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work.
A “User Product” is either (1) a “consumer product”, which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, “normally used” refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product.
“Installation Information” for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made.
If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM).
The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying.
7. Additional Terms.
“Additional permissions” are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or authors of the material; or
e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors.
All other non-permissive additional terms are considered “further restrictions” within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11).
However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice.
Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License.
An “entity transaction” is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it.
11. Patents.
A “contributor” is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's “contributor version”.
A contributor's “essential patent claims” are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, “control” includes the right to grant patent sublicenses in a manner consistent with the requirements of this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version.
In the following three paragraphs, a “patent license” is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To “grant” such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party.
If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. “Knowingly relying” means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it.
A patent license is “discriminatory” if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License “or any later version” applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation.
If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program.
Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the “copyright” line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see <https://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode:
<program> Copyright (C) <year> <name of author>
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an “about box”.
You should also get your employer (if you work as a programmer) or school, if any, to sign a “copyright disclaimer” for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see <https://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read <https://www.gnu.org/philosophy/why-not-lgpl.html>.

View file

@ -8,6 +8,9 @@ customization, jobs, and a controller-aware interface.
The project is under active development. Interfaces, balance, content, and The project is under active development. Interfaces, balance, content, and
save migrations may continue to change before a stable release. save migrations may continue to change before a stable release.
NETfishing is developed and published by **Woofmeow**, the independent team of
co-owners publicly credited as Voyager and Endeavour.
## Requirements ## Requirements
- Godot 4.7.x with the GL Compatibility renderer - Godot 4.7.x with the GL Compatibility renderer
@ -35,8 +38,8 @@ Run the fast, deterministic suite before submitting a change:
scripts/run_validations.sh quick scripts/run_validations.sh quick
``` ```
Additional suites and individual commands are documented in Additional suites and individual commands are documented in the
[`docs/TESTING.md`](docs/TESTING.md). [`docs/DEVELOPMENT.md`](docs/DEVELOPMENT.md#validation) validation section.
## Building ## Building
@ -65,6 +68,26 @@ scripts do not create or publish tags.
- `tests/`: focused Godot validation scripts - `tests/`: focused Godot validation scripts
- `scripts/`: build, bake, and validation entry points - `scripts/`: build, bake, and validation entry points
See [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md) and All maintained project guidance starts at the
[`world/README-WORLD-AUTHORING.md`](world/README-WORLD-AUTHORING.md) for more [`docs/` documentation index](docs/README.md). Architecture, content policy,
detail. world and UI authoring, and testing are consolidated in
[`docs/DEVELOPMENT.md`](docs/DEVELOPMENT.md).
## Licensing
- Project-owned software code is licensed under
[GPL-3.0-or-later](LICENSE).
- Project-owned artwork, models, music, and other creative assets are covered
by the [NETfishing Asset License](ASSET-LICENSE.md). It permits community
Mods for official NETfishing software, but not use in forks, clones, or
unrelated products.
- The NETfishing and Woofmeow names and branding are reserved as described in
[TRADEMARKS.md](TRADEMARKS.md).
- Third-party materials retain their own terms; see the consolidated
[credits, notices, and provenance record](docs/ATTRIBUTION.md).
- Contributions are accepted under [CONTRIBUTOR-TERMS.md](CONTRIBUTOR-TERMS.md).
Material boundaries and binary-release requirements are recorded in that same
[`docs/ATTRIBUTION.md`](docs/ATTRIBUTION.md) reference.
Copyright © 2026 Woofmeow.

42
TRADEMARKS.md Normal file
View file

@ -0,0 +1,42 @@
# NETfishing and Woofmeow branding
The NETfishing and Woofmeow names, logos, icons, trade dress, and other source
identifiers are reserved by the NETfishing owners, publishing as Woofmeow.
Their presence in a GPL-licensed repository does not grant trademark rights or
imply permission to represent another product as official.
No trademark registration is asserted by this notice. Applicable rights may
exist through use and other law.
## Permitted references
You may use the names NETfishing and Woofmeow truthfully to:
- refer to the official game or development team;
- state that software interoperates with or is a Mod for NETfishing;
- link to an official repository or distribution page; and
- discuss, review, criticize, or report on the Project.
Use only the amount of branding reasonably necessary to identify the Project.
Do not imply sponsorship, certification, endorsement, or official status.
An unofficial Mod may use wording such as “Example Mod for NETfishing” if its
name and presentation remain clearly distinct and it displays an unofficial
notice.
## Forks and redistributed code
The GNU GPL permits forks and redistribution of covered code. A fork or
modified distribution must:
- use a distinct product name;
- remove NETfishing and Woofmeow logos, icons, and official trade dress;
- avoid confusingly similar names, domains, package identifiers, and account
names; and
- clearly identify itself as independent and unofficial.
These branding terms do not limit rights granted by the GPL to the software
code or lawful nominative, descriptive, comparative, or fair use.
Permission for broader branding use must be obtained in writing from both
NETfishing owners.

View file

@ -0,0 +1,7 @@
[plugin]
name="NETfishing Shoreline Auto-Baker"
description="Rebuilds configured static shoreline ribbons after authored terrain reimports."
author="woofmeow"
version="1.0.0"
script="shoreline_auto_baker.gd"

View file

@ -0,0 +1,66 @@
@tool
extends EditorPlugin
const TERRAIN_RESOURCE := (
"res://art/exported/environment/terrain/starter_island.glb"
)
const REGION_SCENE := "res://world/regions/starter_island_region.tscn"
var _bake_pending := false
func _enter_tree() -> void:
var filesystem := get_editor_interface().get_resource_filesystem()
if not filesystem.resources_reimported.is_connected(_on_resources_reimported):
filesystem.resources_reimported.connect(_on_resources_reimported)
func _exit_tree() -> void:
var filesystem := get_editor_interface().get_resource_filesystem()
if filesystem.resources_reimported.is_connected(_on_resources_reimported):
filesystem.resources_reimported.disconnect(_on_resources_reimported)
func _on_resources_reimported(resources: PackedStringArray) -> void:
if not resources.has(TERRAIN_RESOURCE) or _bake_pending:
return
_bake_pending = true
call_deferred("_bake_configured_shorelines")
func _bake_configured_shorelines() -> void:
_bake_pending = false
var packed_region := ResourceLoader.load(
REGION_SCENE,
"PackedScene",
ResourceLoader.CACHE_MODE_REPLACE,
) as PackedScene
if packed_region == null:
push_error("Shoreline auto-bake could not load %s." % REGION_SCENE)
return
var region := packed_region.instantiate() as Node3D
add_child(region)
var baker := region.get_node_or_null(
"ShorelineRibbonBaker"
) as ShorelineRibbonBaker
if baker == null:
push_error("Shoreline auto-bake found no configured baker.")
region.queue_free()
return
var results := baker.rebuild_all()
for result: Dictionary in results:
if result.get("skipped", false):
continue
var output_path: String = result.get("output_path", "")
if not output_path.is_empty():
ResourceLoader.load(
output_path,
"ArrayMesh",
ResourceLoader.CACHE_MODE_REPLACE,
)
print(
"Shoreline auto-bake: %s, %d loops, %d triangles"
% [output_path, result.loop_count, result.triangle_count]
)
region.queue_free()
get_editor_interface().get_resource_filesystem().scan()

View file

@ -0,0 +1 @@
uid://cbk4xpalei5v3

View file

@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1 compress/hdr_compression=1
compress/normal_map=0 compress/normal_map=0
compress/channel_pack=0 compress/channel_pack=0
mipmaps/generate=true mipmaps/generate=false
mipmaps/limit=-1 mipmaps/limit=-1
roughness/mode=0 roughness/mode=0
roughness/src_normal="" roughness/src_normal=""

View file

@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1 compress/hdr_compression=1
compress/normal_map=0 compress/normal_map=0
compress/channel_pack=0 compress/channel_pack=0
mipmaps/generate=true mipmaps/generate=false
mipmaps/limit=-1 mipmaps/limit=-1
roughness/mode=0 roughness/mode=0
roughness/src_normal="" roughness/src_normal=""

View file

@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1 compress/hdr_compression=1
compress/normal_map=0 compress/normal_map=0
compress/channel_pack=0 compress/channel_pack=0
mipmaps/generate=true mipmaps/generate=false
mipmaps/limit=-1 mipmaps/limit=-1
roughness/mode=0 roughness/mode=0
roughness/src_normal="" roughness/src_normal=""

View file

@ -1,24 +0,0 @@
# Drop-in facial features
Facial feature textures are discovered when the game starts. Put new PNGs in
the matching directory, restart the game, and the option will appear in the
Profile customization page.
```text
eyes/<id>.png
noses/<id>.png
mouth/<id>.png
```
The category directory is authoritative. A category prefix is optional, so
both `sleepy.png` and `eyes_sleepy.png` become the option ID `sleepy`.
Filenames are normalized to lowercase snake_case. Use stable names because
the resulting IDs are stored in appearance snapshots and sent to peers.
Keep each PNG on the established facial-feature canvas with an RGBA
transparent background. Godot imports the PNG automatically in the editor;
the runtime registry ignores `.import` files and other non-PNG files.
The current game bundles its facial assets under `res://`. Adding a file to a
development checkout is picked up on the next startup. An exported build must
be rebuilt to include newly added `res://` files in its package.

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

View file

@ -2,16 +2,16 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://cxpiqjwgff0xr" uid="uid://b2ufsni8mnpmq"
path="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex" path="res://.godot/imported/eyes_closed.png-80789498475c2cfbcb6e3ac14e067a76.ctex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://icon.svg" source_file="res://art/exported/characters/faces/eyes/eyes_closed.png"
dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"] dest_files=["res://.godot/imported/eyes_closed.png-80789498475c2cfbcb6e3ac14e067a76.ctex"]
[params] [params]
@ -38,6 +38,3 @@ process/hdr_as_srgb=false
process/hdr_clamp_exposure=false process/hdr_clamp_exposure=false
process/size_limit=0 process/size_limit=0
detect_3d/compress_to=1 detect_3d/compress_to=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

View file

@ -2,16 +2,16 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://bm0kkevv62mu0" uid="uid://44cqu18imydc"
path="res://.godot/imported/art_kit.svg-d4bd09e1da2e2339f7d505ee23d771f8.ctex" path="res://.godot/imported/mouth_open_ah.png-2710d397264f57dbe8f9bac82dd4b0de.ctex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://items/icons/placeholder/art_kit.svg" source_file="res://art/exported/characters/faces/mouth/mouth_open_ah.png"
dest_files=["res://.godot/imported/art_kit.svg-d4bd09e1da2e2339f7d505ee23d771f8.ctex"] dest_files=["res://.godot/imported/mouth_open_ah.png-2710d397264f57dbe8f9bac82dd4b0de.ctex"]
[params] [params]
@ -38,6 +38,3 @@ process/hdr_as_srgb=false
process/hdr_clamp_exposure=false process/hdr_clamp_exposure=false
process/size_limit=0 process/size_limit=0
detect_3d/compress_to=1 detect_3d/compress_to=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

View file

@ -2,16 +2,16 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://trqvs4dgd4rt" uid="uid://c78hwv0t3ph47"
path="res://.godot/imported/fish_coin.svg-9d00b5918d94a555938a84ee65e06386.ctex" path="res://.godot/imported/mouth_open_oh.png-10fc59160b782879c415074831421088.ctex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://items/icons/placeholder/fish_coin.svg" source_file="res://art/exported/characters/faces/mouth/mouth_open_oh.png"
dest_files=["res://.godot/imported/fish_coin.svg-9d00b5918d94a555938a84ee65e06386.ctex"] dest_files=["res://.godot/imported/mouth_open_oh.png-10fc59160b782879c415074831421088.ctex"]
[params] [params]
@ -38,6 +38,3 @@ process/hdr_as_srgb=false
process/hdr_clamp_exposure=false process/hdr_clamp_exposure=false
process/size_limit=0 process/size_limit=0
detect_3d/compress_to=1 detect_3d/compress_to=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

View file

@ -2,16 +2,16 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://d115jiqughf40" uid="uid://b12jrc4ao3r16"
path="res://.godot/imported/cooler_expansion.svg-a3d63bc21ba230007f1039372b518c8f.ctex" path="res://.godot/imported/mouth_open_smile.png-2561ffea934645e2eac40ab3a0a6395a.ctex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://items/icons/placeholder/cooler_expansion.svg" source_file="res://art/exported/characters/faces/mouth/mouth_open_smile.png"
dest_files=["res://.godot/imported/cooler_expansion.svg-a3d63bc21ba230007f1039372b518c8f.ctex"] dest_files=["res://.godot/imported/mouth_open_smile.png-2561ffea934645e2eac40ab3a0a6395a.ctex"]
[params] [params]
@ -38,6 +38,3 @@ process/hdr_as_srgb=false
process/hdr_clamp_exposure=false process/hdr_clamp_exposure=false
process/size_limit=0 process/size_limit=0
detect_3d/compress_to=1 detect_3d/compress_to=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b2e0uxfn187gu"
path="res://.godot/imported/body_arms_bengal.png-350ed15f218f0efa6ae7573ad27d3c65.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/exported/characters/patterns/bengal/body_arms_bengal.png"
dest_files=["res://.godot/imported/body_arms_bengal.png-350ed15f218f0efa6ae7573ad27d3c65.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cn71sswmj0tue"
path="res://.godot/imported/body_main_bengal.png-59815350b807220c52317e683582847e.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/exported/characters/patterns/bengal/body_main_bengal.png"
dest_files=["res://.godot/imported/body_main_bengal.png-59815350b807220c52317e683582847e.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://rv36ws5wuakb"
path="res://.godot/imported/head_round_bengal.png-dfa502a4514c1605f5c8aff839dd8765.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/exported/characters/patterns/bengal/head_round_bengal.png"
dest_files=["res://.godot/imported/head_round_bengal.png-dfa502a4514c1605f5c8aff839dd8765.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://p5cg2bwrxf7v"
path="res://.godot/imported/body_arms_fox.png-91ab21ce544fdc29b8a0ebf3e54ef7cd.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/exported/characters/patterns/fox/body_arms_fox.png"
dest_files=["res://.godot/imported/body_arms_fox.png-91ab21ce544fdc29b8a0ebf3e54ef7cd.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://wcsadkjjpaei"
path="res://.godot/imported/body_main_fox.png-25e4fa03a48053f6b37b3bbadb1f01ba.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/exported/characters/patterns/fox/body_main_fox.png"
dest_files=["res://.godot/imported/body_main_fox.png-25e4fa03a48053f6b37b3bbadb1f01ba.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c4vlbrp7qevvo"
path="res://.godot/imported/head_pointy_fox.png-ef3535a6c05a49aae36fe5514844a3df.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/exported/characters/patterns/fox/head_pointy_fox.png"
dest_files=["res://.godot/imported/head_pointy_fox.png-ef3535a6c05a49aae36fe5514844a3df.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bwiwt76kyyevw"
path="res://.godot/imported/head_round_fox.png-27dc2125a4e5b85a622291762225a303.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/exported/characters/patterns/fox/head_round_fox.png"
dest_files=["res://.godot/imported/head_round_fox.png-27dc2125a4e5b85a622291762225a303.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cyr0wcavb1cmi"
path="res://.godot/imported/tails_fox_fox.png-061a224c36e90f10b33d37e616ff7e94.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/exported/characters/patterns/fox/tails_fox_fox.png"
dest_files=["res://.godot/imported/tails_fox_fox.png-061a224c36e90f10b33d37e616ff7e94.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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Before After
Before After

View file

@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1 compress/hdr_compression=1
compress/normal_map=0 compress/normal_map=0
compress/channel_pack=0 compress/channel_pack=0
mipmaps/generate=true mipmaps/generate=false
mipmaps/limit=-1 mipmaps/limit=-1
roughness/mode=0 roughness/mode=0
roughness/src_normal="" roughness/src_normal=""

View file

@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1 compress/hdr_compression=1
compress/normal_map=0 compress/normal_map=0
compress/channel_pack=0 compress/channel_pack=0
mipmaps/generate=true mipmaps/generate=false
mipmaps/limit=-1 mipmaps/limit=-1
roughness/mode=0 roughness/mode=0
roughness/src_normal="" roughness/src_normal=""

View file

@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1 compress/hdr_compression=1
compress/normal_map=0 compress/normal_map=0
compress/channel_pack=0 compress/channel_pack=0
mipmaps/generate=true mipmaps/generate=false
mipmaps/limit=-1 mipmaps/limit=-1
roughness/mode=0 roughness/mode=0
roughness/src_normal="" roughness/src_normal=""

View file

@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1 compress/hdr_compression=1
compress/normal_map=0 compress/normal_map=0
compress/channel_pack=0 compress/channel_pack=0
mipmaps/generate=true mipmaps/generate=false
mipmaps/limit=-1 mipmaps/limit=-1
roughness/mode=0 roughness/mode=0
roughness/src_normal="" roughness/src_normal=""

View file

@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1 compress/hdr_compression=1
compress/normal_map=0 compress/normal_map=0
compress/channel_pack=0 compress/channel_pack=0
mipmaps/generate=true mipmaps/generate=false
mipmaps/limit=-1 mipmaps/limit=-1
roughness/mode=0 roughness/mode=0
roughness/src_normal="" roughness/src_normal=""

View file

@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1 compress/hdr_compression=1
compress/normal_map=0 compress/normal_map=0
compress/channel_pack=0 compress/channel_pack=0
mipmaps/generate=true mipmaps/generate=false
mipmaps/limit=-1 mipmaps/limit=-1
roughness/mode=0 roughness/mode=0
roughness/src_normal="" roughness/src_normal=""

View file

@ -1,72 +0,0 @@
# Architecture
## Composition
`main/main.tscn` is the application composition root. It owns long-lived
services, the active world, player container, save/settings managers, and the
pixelated UI viewport. Services are scene-owned rather than global autoloads,
which makes their dependencies visible in the main scene and allows focused
tests to instantiate the same composition.
The main script coordinates title, session, world, and UI lifecycle. Domain
logic remains in typed resources and services rather than being stored solely
in controls.
## Domain boundaries
- `fish/` defines species, availability, catches, pools, quality, and selection.
- `fishing/` owns cast/chase state and resolves authoritative fishing surfaces.
- `inventory/`, `items/`, `economy/`, `progression/`, and `jobs/` own persistent
player-facing game state.
- `world/` owns authored map composition and presentation. Water type is a
shared typed definition used by water bodies, fish habitat, fishing
validation, Logbook classification, and saltwater shoreline presentation.
- `ui/` observes and invokes domain services. It does not define stable item or
fish identity.
Resource files (`.tres`) are authored data. Stable IDs, not display names or
node names, connect persistent and networked state to that data.
## Networking
`NetworkSession` owns ENet session lifecycle and peer registration. Dedicated
network services validate and replicate bounded domains such as fishing,
sales, shops, item use, profiles, jobs, mail, chat, drawings, time, and weather.
The host is authoritative. Clients submit requests or evidence; the host
derives trusted context from registered peers, authoritative regions, and
server-owned state before mutating inventory, wallet, progression, or shared
world state. See [`decisions/0001-host-authority.md`](decisions/0001-host-authority.md).
Protocol compatibility is defined in `network/network_protocol.gd`. A visible
release version is not a reason to change the protocol number.
## Persistence
`PlayerDataRoot` selects and validates a portable data root. Stores receive
paths from that owner rather than inventing unrelated locations. Progression is
written by `PlayerSaveManager`; device settings and social/identity stores have
separate formats and lifecycles.
Save migrations are sequential and explicit. Existing catches and ownership
are keyed by stable IDs so authored metadata can evolve without rewriting
historical records. Current source constants—not documentation—are
authoritative for format versions.
## Presentation
Gameplay is rendered in 3D with the GL Compatibility renderer. The main UI is
presented through a uniformly scaled SubViewport. Shared UI components and
palette resources prevent page-specific geometry and style drift.
World presentation systems (time/weather visuals, procedural sky and water,
shoreline ribbons, player blob shadows) do not own gameplay collision or
network authority. Generated shoreline meshes are deterministic presentation
resources baked from explicitly configured static terrain.
## Validation
Tests are executable Godot `SceneTree` scripts. Some are pure content/domain
checks, some instantiate the main scene, and multiplayer checks run paired host
and client processes on loopback. The repository runner provides isolation and
consistent entry points; see [`TESTING.md`](TESTING.md).

View file

@ -1,145 +0,0 @@
# Asset provenance
This document records where runtime assets came from and what must be verified
before redistribution. A Git commit proves when bytes entered this repository;
it does not by itself prove authorship or licensing.
## Intake policy
For every new external or supplied asset, record:
- creator or supplying party;
- original source location or delivery channel;
- source filename and repository destination;
- source and destination SHA-256 when copied without modification;
- license or explicit permission;
- any permitted transformations;
- the importing commit or release.
Runtime resources must use `res://` paths. Workstation Sync folders are intake
locations only and must never appear in scenes or resources.
## Current inventory
| Asset family | Repository location | Recorded provenance |
| --- | --- | --- |
| Fish art and portraits | `fish/species/`, `art/exported/fish/` | 2D artwork by contributor Rheannon Eisworth. |
| Item icons | `items/icons/` | 2D artwork by contributor Rheannon Eisworth. |
| Inventory notepad | `art/ui/ui_notepad.png` | 2D artwork by contributor Rheannon Eisworth; integrated without a runtime external path. |
| Environment textures | `art/exported/environment/textures/` | 2D artwork by contributor Rheannon Eisworth. |
| UI patterns | `art/patterns/` | 2D artwork by contributor Rheannon Eisworth. |
| Character and world models | `art/exported/` | Original 3D models by the project owner. Any embedded 2D artwork is by Rheannon Eisworth. |
| Tuffy font | `ui/fonts/Tuffy_Bold.otf` | Public-domain dedication in `ui/fonts/Tuffy-LICENSE.txt`. |
| Seattle Avenue font | `ui/fonts/seattle_avenue.otf` | License and attribution not present; resolve before public distribution. |
| Title music | `audio/music/title/as_in_four_wolves.ogg` | Original music composed and owned by the project owner. |
| Fishing fight loop | `audio/sfx/fishing/fighting.wav` | Edited from “Spinning reel.wav” by Freesound user tosha73, sound 509902, CC0. |
| Manual-reeling loop | `audio/sfx/fishing/reeling.wav` | Edited from the same CC0 “Spinning reel.wav” source. |
| Saltwater wave ambience | `audio/ambience/waves.wav` | “Gentle Ocean Waves Loop” by Freesound user kkenny101, sound 852826, CC0. |
| Bobber water impact | `audio/sfx/fishing/bobber.wav` | “Quick Water Droplet” by Freesound user qubodup, sound 792931, CC0. |
| Character bark call | `sound/dialogue/calls/bark.wav` | Edited from `Dog_Bark.wav` by Freesound user ivolipa, sound 328729, CC0. |
| Character meow call | `sound/dialogue/calls/meow.wav` | Edited from `Cat meow.m4a` by Freesound user Christyboy100, sound 495694, Attribution 3.0. |
### Fishing fight loop source record
- Source page: https://freesound.org/s/509902/
- Creator: tosha73
- Source title: `Spinning reel.wav`
- License: Creative Commons Zero (CC0)
- Downloaded source filename: `509902__tosha73__spinning-reel.wav`
- Downloaded source SHA-256:
`9741afdb1ec9c73f5e039f0e5ac174998cb0a1f737b626531e63919d4d232fad`
- Audacity working project: `fighting.aup3`
- Audacity project SHA-256:
`9928f077ecf48d01416f8d05700707e1b07d0f731846db80e27116f5b82dbbf5`
- Runtime edit source/destination SHA-256:
`b6f3f2f94bfaf9254ac04dd96b1fd28c15e1011a1db44bb3e70eeaa95de3c212`
- Runtime format: 48 kHz, 16-bit, stereo PCM WAV; 2.593479 seconds;
configured as a forward loop by the fishing presentation.
- Manual-reeling Audacity project: `reeling.aup3`
- Manual-reeling Audacity project SHA-256:
`20ad52f6bdd16ae6561f06f8355fe309e95023e815053fd5dfbd5a5ce3c1f9f9`
- Manual-reeling runtime source/destination SHA-256:
`e403d5b7c8af1da4b28599cc0f51de3eda70d9e9296db27852fe7dc95617a29d`
- Manual-reeling runtime format: 48 kHz, 16-bit, stereo PCM WAV;
2.388083 seconds; configured as a forward loop.
- The downloaded source and Audacity projects remain in the project owner's
source-work archive; only the finished runtime edits ship in the game.
### Saltwater wave ambience source record
- Source page: https://freesound.org/s/852826/
- Creator: kkenny101
- Source title: `Gentle Ocean Waves Loop`
- License: Creative Commons Zero (CC0)
- Downloaded source filename:
`852826__kkenny101__gentle-ocean-waves-loop.wav`
- Downloaded source and runtime source/destination SHA-256:
`f93e9890583f072ac52cf197b8b5942397d3d5e889fbdb9112a0776142f50229`
- Runtime format: 48 kHz, 24-bit, mono PCM WAV; 21.769917 seconds;
configured as a forward loop.
- The downloaded source remains in the project owner's source-work archive;
only the finished runtime loop ships in the game.
### Bobber water-impact source record
- Source page: https://freesound.org/s/792931/
- Creator: qubodup
- Source title: `Quick Water Droplet`
- License: Creative Commons Zero (CC0)
- Downloaded source filename: `792931__qubodup__quick-water-droplet.wav`
- Downloaded source and runtime source/destination SHA-256:
`aef0d16384efed4a7b071c4d80c21597617f882f4e0c1d5295ac194d315eafb7`
- Runtime format: 48 kHz, 16-bit, mono PCM WAV; 0.197146 seconds; one-shot.
- The downloaded source remains in the project owner's source-work archive;
only the finished runtime sound ships in the game.
### Character-call source records
#### Bark
- Source page: https://freesound.org/s/328729/
- Creator: ivolipa
- Source title: `Dog_Bark.wav`
- License: Creative Commons Zero (CC0)
- Downloaded source filename: `328729__ivolipa__dog_bark.wav`
- Downloaded source SHA-256:
`c3d542dee7bfcc1901428e0c1408c0bd522d778d8e5e1dbca156cab008f3d712`
- Runtime edit source/destination SHA-256:
`5ac2f32f33724a2fc232d725c5c37d4cfe3e93b3c1f19aa4177d2c8e3009ec78`
- Runtime format: 44.1 kHz, 16-bit, stereo PCM WAV; 0.446780 seconds;
one-shot.
#### Meow
- Source page: https://freesound.org/s/495694/
- Creator: Christyboy100
- Source title: `Cat meow.m4a`
- License: Attribution 3.0
- Downloaded source filename: `495694__christyboy100__cat-meow.m4a`
- Downloaded source SHA-256:
`afa3f6ef7afa2f7fee1e634d5505d2101cbba4421f8d8ff9adf562939c7a18f8`
- Converted working WAV SHA-256:
`a505e6e230e7d9d76b65c46270d97a35a1acc510b43aa5e7343d7b04f424cade`
- Runtime edit source/destination SHA-256:
`cce22ce1fbbc9325126a153aedc4526fde1aacf78780574fb432197dd44eb6b3`
- Runtime format: 44.1 kHz, 16-bit, stereo PCM WAV; 0.605420 seconds;
one-shot.
- The downloaded sources and working edits remain in the project owner's
source-work archive; only the finished runtime sounds ship in the game.
## Generated resources
Godot `.import` sidecars and deterministic shoreline `.tres` meshes are derived
repository resources, not original artwork. `.godot/imported/`, editor caches,
captures, exports, and temporary test data are not tracked.
## Release gate
Before a public binary or source release:
1. Resolve the Seattle Avenue font license and attribution gap above.
2. Record the public owner/studio credit and the contributor's redistribution
permission in the chosen project license or release records.
3. Confirm the project-wide source/content license selected by the owner.
4. Search exported resources for external filesystem paths.
5. Preserve required third-party notices with the package.

327
docs/ATTRIBUTION.md Normal file
View file

@ -0,0 +1,327 @@
# Attribution, licensing, and asset provenance
This is the authoritative project record for ownership, credits, license
boundaries, third-party notices, asset provenance, and redistribution checks.
A Git commit proves when bytes entered the repository; it does not by itself
prove authorship or licensing.
## Ownership and credits
NETfishing is jointly owned, developed, and published by its creators,
publicly credited as Voyager and Endeavour and operating collectively as the
independent team Woofmeow.
- Voyager: co-owner, developer, project director, creator of the game's 3D
art, and composer of the original title/ambient track
`audio/music/title/as_in_four_wolves.ogg`, world track
`audio/music/world/craft.mp3`, and animalese placeholder tones.
- Endeavour: co-owner, developer, and creator of the game's 2D art, including
the original fish, environment, UI, and other artwork.
- chillnfill: contributor of original 3D models for the character bodies and
arms, ears and tails, and multiple world props and decorative assets,
including trees and bridges. The contributor requested to be credited as
`chillnfill`.
- Tekgator: creator of the cooler-capacity, reel-speed, and barrier-power shop
icons.
Voyager is also the original catalog porter credit in PortMaster metadata.
Third-party creators are credited with their individual records below. Those
credits do not imply endorsement of NETfishing, Woofmeow, or its owners.
## License map
Do not describe the complete repository as covered only by the GPL.
| Material | Governing terms |
| --- | --- |
| Project-owned software code, shaders, code-oriented scene/resource configuration, tests, build tooling, and server software | GPL-3.0-or-later; source-root `LICENSE` and packaged `GPL-3.0-or-later.txt` |
| Project-owned artwork, textures, models, animation, music, audio, narrative content, characters, and other creative assets | Source-root or packaged `ASSET-LICENSE.md` |
| NETfishing and Woofmeow names, logos, icons, and official identity | Source-root or packaged `TRADEMARKS.md` |
| Third-party engines, fonts, sounds, and other external material | Their original terms, recorded below and in adjacent license texts where applicable |
| New outside contributions | Source-root `CONTRIBUTOR-TERMS.md` plus any separately signed agreement |
Generated Godot import metadata and deterministic generated resources follow
the terms of their source material or generating code. Repository location
alone does not relicense third-party material.
The GPL permits study, modification, redistribution, and forks of covered
code. It does not grant rights to NETfishing creative assets or branding. The
NETfishing Asset License separately permits qualifying noncommercial add-on
Mods for official NETfishing software; it does not permit those assets to
accompany code forks, clones, standalone games, unrelated products, or
general-purpose asset packs. A GPL fork must replace NETfishing assets and
reserved branding with independently licensed material and a distinct
identity.
Project-wide code, asset, branding, or contributor-license changes require
written approval from both NETfishing owners under their private joint
ownership agreement.
## Godot Engine notice
NETfishing uses Godot Engine under the MIT License:
> Copyright (c) 2014-present Godot Engine contributors.
> Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur.
>
> Permission is hereby granted, free of charge, to any person obtaining a copy
> of this software and associated documentation files (the “Software”), to deal
> in the Software without restriction, including without limitation the rights
> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> copies of the Software, and to permit persons to whom the Software is
> furnished to do so, subject to the following conditions:
>
> The above copyright notice and this permission notice shall be included in
> all copies or substantial portions of the Software.
>
> THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> SOFTWARE.
Godot licensing and bundled third-party-component notices are available at
https://godotengine.org/license/ and
https://github.com/godotengine/godot/blob/master/COPYRIGHT.txt. Godot uses
FreeType for font rendering; portions are copyright The FreeType Project
(https://www.freetype.org) under its applicable license.
## Font notices
- **Tuffy Bold** — Thatcher Ulrich, Karoly Barta, and Michael Evans; dedicated
to the public domain. Runtime file: `ui/fonts/Tuffy_Bold.otf`; original notice:
`ui/fonts/Tuffy-LICENSE.txt`.
- **Seattle Avenue** — JLH Fonts; dedicated to the public domain by the creator.
Runtime file: `ui/fonts/seattle_avenue.otf`; source, hash, and original notice:
`ui/fonts/Seattle-Avenue-LICENSE.txt`.
Public-domain fonts are not governed by the NETfishing Asset License.
## Intake policy
For every new external or supplied asset, record:
- creator or supplying party;
- original source location or delivery channel;
- source filename and repository destination;
- source and destination SHA-256 when copied without modification;
- license or explicit permission;
- any permitted transformations;
- the importing commit or release.
Maintainers must also obtain affirmative agreement to the source-root
`CONTRIBUTOR-TERMS.md` before accepting an outside contribution and retain
that agreement in a durable pull request, issue, email, or signed document.
Runtime resources must use `res://` paths. Workstation Sync folders are intake
locations only and must never appear in scenes or resources.
## Asset inventory and provenance
| Asset family | Repository location | Recorded provenance |
| --- | --- | --- |
| Fish art and portraits | `fish/species/`, `art/exported/fish/` | Original 2D artwork by co-owner Endeavour. |
| Item icons | `items/icons/` | Original 2D artwork by co-owner Endeavour except where separately credited below. |
| Cooler-capacity shop icon | `items/icons/equipment/64_cooler_plus.png` | Original artwork by Tekgator. Repository SHA-256: `b63705be5b78915753c068170323781a90e22b555b57a5b2ca9466e2726539f7`. |
| Reel-speed shop icon | `items/icons/shop/64_speed_plus.png` | Original artwork by Tekgator. Repository SHA-256: `938452798f2be505e06ce3fbef178f52459331fd3bced8763fbc2a80157125ca`. |
| Barrier-power shop icon | `items/icons/shop/64_power_plus.png` | Original artwork by Tekgator. Repository SHA-256: `164d34ce152aa6d75de79b69f0be2d9074f7891057de9636678889028ff98ae7`. |
| Inventory notepad | `art/ui/ui_notepad.png` | Original 2D artwork by co-owner Endeavour; integrated without a runtime external path. |
| Environment textures | `art/exported/environment/textures/` | Original 2D artwork by co-owner Endeavour. |
| UI patterns | `art/patterns/` | Original 2D artwork by co-owner Endeavour. |
| Fur customization channel maps | `art/exported/characters/patterns/` | Original 2D channel-map artwork by co-owner Endeavour. Exact file hashes are recorded below. |
| Character base meshes and appendages | `art/source/characters/base/`, `art/exported/characters/base/`, and derived character resources | Original body and arm models and original ear and tail models by chillnfill. Any embedded original 2D artwork is by Endeavour. |
| World and decorative prop models | `art/source/environment/`, `art/exported/environment/`, and derived world resources | Original prop and decorative models by chillnfill, including trees and bridges. Any embedded original 2D artwork is by Endeavour. |
| Tuffy font | `ui/fonts/Tuffy_Bold.otf` | Public-domain dedication in `ui/fonts/Tuffy-LICENSE.txt`. |
| Seattle Avenue font | `ui/fonts/seattle_avenue.otf` | Public-domain font by JLH Fonts; source record and hash in `ui/fonts/Seattle-Avenue-LICENSE.txt`. |
| Title music | `audio/music/title/as_in_four_wolves.ogg` | Original music composed and owned by co-owner Voyager. |
| Dusk music | `audio/music/world/craft.mp3` | Original music composed and owned by co-owner Voyager. |
| Fishing fight loop | `audio/sfx/fishing/fighting.wav` | Edited from “Spinning reel.wav” by Freesound user tosha73, sound 509902, CC0. |
| Manual-reeling loop | `audio/sfx/fishing/reeling.wav` | Edited from the same CC0 “Spinning reel.wav” source. |
| Saltwater wave ambience | `audio/ambience/waves.wav` | “Gentle Ocean Waves Loop” by Freesound user kkenny101, sound 852826, CC0. |
| Bobber water impact | `audio/sfx/fishing/bobber.wav` | “Quick Water Droplet” by Freesound user qubodup, sound 792931, CC0. |
| Rain ambience | `audio/ambience/rain_loop_ontario.ogg` | Converted from “Rain Loop Ontario” by Freesound user Ayton, sound 212799, CC BY 3.0. |
| Character bark call | `sound/dialogue/calls/bark.wav` | Edited from `Dog_Bark.wav` by Freesound user ivolipa, sound 328729, CC0. |
| Character meow call | `sound/dialogue/calls/meow.wav` | Edited from `Cat meow.m4a` by Freesound user Christyboy100, sound 495694, Attribution 3.0. |
| Animalese placeholder tones | `sound/dialogue/animalese/placeholder/` | Original tones composed and owned by co-owner Voyager without third-party samples. |
Creative Commons Zero information:
https://creativecommons.org/publicdomain/zero/1.0/. Creative Commons
Attribution 3.0 legal text:
https://creativecommons.org/licenses/by/3.0/legalcode.
### chillnfill 3D model contribution record
- Requested credit: `chillnfill`.
- Original contribution families: character bodies and arms; character ears
and tails; and multiple world props and decorative assets, including trees
and bridges.
- Repository mapping: character contributions are incorporated into the
character source/export families identified above. Prop contributions may
be incorporated into combined environment source and export files rather
than retained as one file per originally supplied model.
- Permission record: because these historical contributions predate the
current `CONTRIBUTOR-TERMS.md`, retain the original permission record or a
later written confirmation covering Project use, modification,
distribution, commercial release, and applicable sublicensing.
### Fur customization channel-map record
Original channel-map artwork by Endeavour. Repository paths preserve the
authored `mesh_style.png` filenames.
| Style and mesh | Source filename | Repository file | SHA-256 |
| --- | --- | --- | --- |
| Bengal spots, body and arms | `body_arms_bengal.png` | `art/exported/characters/patterns/bengal/body_arms_bengal.png` | `fa90bd4e74b0b770ce97bf69d069676f5d4bd1f5d649f89e09638a66b61a8470` |
| Bengal spots, main body | `body_main_bengal.png` | `art/exported/characters/patterns/bengal/body_main_bengal.png` | `8662fa198220cfdbe0aa83bdeeef7b855e20124d74f8481467f750d32b67ee8b` |
| Bengal spots, round head | `head_round_bengal.png` | `art/exported/characters/patterns/bengal/head_round_bengal.png` | `f397ed8d152e3fda8181757a2bbd01925b7b8c2c4362f515d91c7f0fbf3ddfb6` |
| Fox, body and arms | `body_arms_fox.png` | `art/exported/characters/patterns/fox/body_arms_fox.png` | `9930808718f31d84b415902f1ba55ac2a508bb2ac127300e793d73a8a013022d` |
| Fox, main body | `body_main_fox.png` | `art/exported/characters/patterns/fox/body_main_fox.png` | `c65e4390173b8c31c9396edd053f940f0f809e47e01d18042cd7babc712dde9d` |
| Fox, pointy head | `head_pointy_fox.png` | `art/exported/characters/patterns/fox/head_pointy_fox.png` | `71a9d2383e62884dbd3981460fcd985b18805fa907f61ffb16dce08ff9418ddf` |
| Fox, round head | `head_round_fox.png` | `art/exported/characters/patterns/fox/head_round_fox.png` | `86dd7af8a2346faf67359ad668a117a74e2408676137d6b0626403cfcf2aba73` |
| Fox tail | `tails_fox_fox.png` | `art/exported/characters/patterns/fox/tails_fox_fox.png` | `72da9673f038e2c3bb8aca19ed99932085fa3b162cab95366901c4e97153dd3e` |
### Tekgator shop icon contribution record
- Requested credit: `Tekgator`.
- Original contributions: cooler-capacity, reel-speed, and barrier-power shop
icons.
- Repository files and SHA-256:
- `items/icons/equipment/64_cooler_plus.png`:
`b63705be5b78915753c068170323781a90e22b555b57a5b2ca9466e2726539f7`
- `items/icons/shop/64_speed_plus.png`:
`938452798f2be505e06ce3fbef178f52459331fd3bced8763fbc2a80157125ca`
- `items/icons/shop/64_power_plus.png`:
`164d34ce152aa6d75de79b69f0be2d9074f7891057de9636678889028ff98ae7`
- Permission record: retain the original permission record or a later written
confirmation covering Project use, modification, distribution, commercial
release, and applicable sublicensing.
### Fishing fight loop source record
- Source page: https://freesound.org/s/509902/
- Creator: tosha73
- Source title: `Spinning reel.wav`
- License: Creative Commons Zero (CC0)
- Downloaded source filename: `509902__tosha73__spinning-reel.wav`
- Downloaded source SHA-256:
`9741afdb1ec9c73f5e039f0e5ac174998cb0a1f737b626531e63919d4d232fad`
- Audacity working project: `fighting.aup3`
- Audacity project SHA-256:
`9928f077ecf48d01416f8d05700707e1b07d0f731846db80e27116f5b82dbbf5`
- Runtime edit source/destination SHA-256:
`b6f3f2f94bfaf9254ac04dd96b1fd28c15e1011a1db44bb3e70eeaa95de3c212`
- Runtime format: 48 kHz, 16-bit, stereo PCM WAV; 2.593479 seconds;
configured as a forward loop by the fishing presentation.
- Manual-reeling Audacity project: `reeling.aup3`
- Manual-reeling Audacity project SHA-256:
`20ad52f6bdd16ae6561f06f8355fe309e95023e815053fd5dfbd5a5ce3c1f9f9`
- Manual-reeling runtime source/destination SHA-256:
`e403d5b7c8af1da4b28599cc0f51de3eda70d9e9296db27852fe7dc95617a29d`
- Manual-reeling runtime format: 48 kHz, 16-bit, stereo PCM WAV;
2.388083 seconds; configured as a forward loop.
- The downloaded source and Audacity projects remain in the project owner's
source-work archive; only the finished runtime edits ship in the game.
### Saltwater wave ambience source record
- Source page: https://freesound.org/s/852826/
- Creator: kkenny101
- Source title: `Gentle Ocean Waves Loop`
- License: Creative Commons Zero (CC0)
- Downloaded source filename:
`852826__kkenny101__gentle-ocean-waves-loop.wav`
- Downloaded source and runtime source/destination SHA-256:
`f93e9890583f072ac52cf197b8b5942397d3d5e889fbdb9112a0776142f50229`
- Runtime format: 48 kHz, 24-bit, mono PCM WAV; 21.769917 seconds;
configured as a forward loop.
- The downloaded source remains in the project owner's source-work archive;
only the finished runtime loop ships in the game.
### Bobber water-impact source record
- Source page: https://freesound.org/s/792931/
- Creator: qubodup
- Source title: `Quick Water Droplet`
- License: Creative Commons Zero (CC0)
- Downloaded source filename: `792931__qubodup__quick-water-droplet.wav`
- Downloaded source and runtime source/destination SHA-256:
`aef0d16384efed4a7b071c4d80c21597617f882f4e0c1d5295ac194d315eafb7`
- Runtime format: 48 kHz, 16-bit, mono PCM WAV; 0.197146 seconds; one-shot.
- The downloaded source remains in the project owner's source-work archive;
only the finished runtime sound ships in the game.
### Character-call source records
#### Bark
- Source page: https://freesound.org/s/328729/
- Creator: ivolipa
- Source title: `Dog_Bark.wav`
- License: Creative Commons Zero (CC0)
- Downloaded source filename: `328729__ivolipa__dog_bark.wav`
- Downloaded source SHA-256:
`c3d542dee7bfcc1901428e0c1408c0bd522d778d8e5e1dbca156cab008f3d712`
- Runtime edit source/destination SHA-256:
`5ac2f32f33724a2fc232d725c5c37d4cfe3e93b3c1f19aa4177d2c8e3009ec78`
- Runtime format: 44.1 kHz, 16-bit, stereo PCM WAV; 0.446780 seconds;
one-shot.
#### Meow
- Source page: https://freesound.org/s/495694/
- Creator: Christyboy100
- Source title: `Cat meow.m4a`
- License: Attribution 3.0
- Downloaded source filename: `495694__christyboy100__cat-meow.m4a`
- Downloaded source SHA-256:
`afa3f6ef7afa2f7fee1e634d5505d2101cbba4421f8d8ff9adf562939c7a18f8`
- Converted working WAV SHA-256:
`a505e6e230e7d9d76b65c46270d97a35a1acc510b43aa5e7343d7b04f424cade`
- Runtime edit source/destination SHA-256:
`cce22ce1fbbc9325126a153aedc4526fde1aacf78780574fb432197dd44eb6b3`
- Runtime format: 44.1 kHz, 16-bit, stereo PCM WAV; 0.605420 seconds;
one-shot.
- The downloaded sources and working edits remain in the project owner's
source-work archive; only the finished runtime sounds ship in the game.
### Rain ambience source record
- Source page: https://freesound.org/s/212799/
- Creator: Ayton
- Source title: `Rain Loop Ontario`
- License: Creative Commons Attribution 3.0
- Downloaded source filename: `212799__ayton__rain-loop-ontario.aiff`
- Downloaded source SHA-256:
`b491fc036b78a274d9ac7f6acbd014af1b5d24f5cba9bd7e3fdc05c5432ee66f`
- Runtime edit SHA-256:
`b1979609b20fe34ed6f8902f3de65ae787a09abd71429e8aab850e87b74a4fa2`
- Changes: converted from AIFF to Ogg Vorbis and configured as looping
weather ambience.
## Generated resources
Godot `.import` sidecars and deterministic shoreline `.tres` meshes are derived
repository resources, not original artwork. `.godot/imported/`, editor caches,
captures, exports, and temporary test data are not tracked.
## Release gate
Before a public binary or source release:
1. Search exported resources for external filesystem paths.
2. Include or make readily accessible the complete GPL text and identify the
exact corresponding source tag or commit.
3. Include `ASSET-LICENSE.md`, `TRADEMARKS.md`, this attribution/provenance
record, both font notices, and every applicable third-party license.
4. Retain the complete Godot Engine MIT notice above.
5. Preserve third-party terms without adding incompatible restrictions.
6. Avoid referring to a dirty or unavailable source revision.
7. Publish or offer equivalent access to exact corresponding GPL source for
every distributed binary release.
Desktop and PortMaster build scripts stage these authoritative files as
sidecars. Godot export presets include them in exported resource packs for
platforms where sidecar documents are not normally visible. Store and release
pages should link to the exact source revision and public notices.

View file

@ -1,41 +0,0 @@
# Balance and content notes
Balance is authored data and should change deliberately. This document records
the policy; exact current values remain authoritative in `.tres` resources and
typed scripts.
## Fish
- Stable fish IDs and catalog numbers must not be changed for display cleanup.
- Species availability may constrain water type, time, weather, bait, and other
authored context.
- Location pools control selection weight; the global catalog remains
comprehensive.
- Freshwater/saltwater habitat is validated by the host in addition to pool
membership.
- Value, rarity, quality, and weight ranges should be reviewed together because
they affect economy and catch difficulty.
## Economy and progression
- Sales and purchases are host-authoritative and must mutate inventory and
wallet exactly once.
- Reserved assets are rejected atomically; mixed valid/reserved batches must
not partially succeed.
- Item effects, shop prices, cooler capacity, fishing upgrades, jobs, and
experience are separate balance axes. Avoid changing several in an unrelated
presentation pass.
## Recording a balance change
Include in the change description:
1. affected stable IDs and resource paths;
2. old and new values;
3. intended player-facing outcome;
4. interactions with quality, availability, and economy;
5. deterministic validation performed;
6. whether existing saves remain semantically valid.
Do not bump the save schema or network protocol simply because an authored
number changed. Bump a format only when its serialized contract changes.

352
docs/DEVELOPMENT.md Normal file
View file

@ -0,0 +1,352 @@
# Development reference
This is the authoritative reference for NETfishing architecture, engineering
decisions, content policy, authoring, and validation.
## Architecture
### Composition
`main/main.tscn` is the application composition root. It owns long-lived
services, the active world, player container, save/settings managers, and the
pixelated UI viewport. Services are scene-owned rather than global autoloads,
which makes their dependencies visible in the main scene and allows focused
tests to instantiate the same composition.
The main script coordinates title, session, world, and UI lifecycle. Domain
logic remains in typed resources and services rather than being stored solely
in controls.
### Domain boundaries
- `fish/` defines species, availability, catches, pools, quality, and selection.
- `fishing/` owns cast/chase state and resolves authoritative fishing surfaces.
- `inventory/`, `items/`, `economy/`, `progression/`, and `jobs/` own persistent
player-facing game state.
- `world/` owns authored map composition and presentation. Water type is a
shared typed definition used by water bodies, fish habitat, fishing
validation, Logbook classification, and saltwater shoreline presentation.
- `ui/` observes and invokes domain services. It does not define stable item or
fish identity.
Resource files (`.tres`) are authored data. Stable IDs, not display names or
node names, connect persistent and networked state to that data.
### Networking and authority
`NetworkSession` owns ENet session lifecycle and peer registration. Dedicated
network services validate and replicate bounded domains such as fishing,
sales, shops, item use, profiles, jobs, mail, chat, drawings, time, and weather.
`DiscoveryClient` is an optional directory layer beside `NetworkSession`. An
open host may publish a short-lived room lease, and the shared Join Game page
may browse compatible leases before handing the selected address back to the
existing direct ENet connection flow. The directory does not carry gameplay
traffic or become a gameplay authority. Its base URL comes from
`network/discovery/base_url`, with `NETFISHING_DISCOVERY_URL` available as a
development/deployment override.
The host is authoritative. Clients submit requests or evidence; the host
derives trusted context from registered peers, authoritative regions, and
server-owned state before mutating inventory, wallet, progression, or shared
world state. Private single-player uses the same host path. Client evidence is
bounded and reconstructed where possible; UI activation is never proof that a
server-side mutation succeeded.
Moderation follows the same boundary. Player hosts may grant session-scoped
operator status to an authenticated identity. Dedicated servers derive
operators from their configured fingerprint allowlist. Operator status is
replicated for presentation, but kick, ban, unban, and artwork-reset requests
are always reauthorized against the authenticated sender by the host. Only a
player host can grant or revoke operators; operators cannot moderate the host
or another operator.
Protocol compatibility is defined in `network/network_protocol.gd`. A visible
release version is not a reason to change the protocol number.
### Persistence and stable identifiers
`PlayerDataRoot` selects and validates a portable data root. Stores receive
paths from that owner rather than inventing unrelated locations. Progression is
written by `PlayerSaveManager`; device settings and social/identity stores have
separate formats and lifecycles.
Save migrations are sequential and explicit. Existing catches and ownership
are keyed by stable IDs so authored metadata can evolve without rewriting
historical records. Current source constants—not documentation—are
authoritative for format versions.
Repository-owned resources are authoritative authored data. Persistent and
networked records refer to stable IDs; display names, filenames, node names,
coordinates, and pool names are not compatibility identifiers. Cross-domain
concepts such as water type use one typed definition. Removing or changing a
stable ID requires an explicit compatibility plan.
### Presentation
Gameplay is rendered in 3D with the GL Compatibility renderer. The main UI is
presented through a uniformly scaled SubViewport. Shared UI components and
palette resources prevent page-specific geometry and style drift.
World presentation systems (time/weather visuals, procedural sky and water,
shoreline ribbons, player blob shadows) do not own gameplay collision or
network authority. Generated shoreline meshes are deterministic presentation
resources baked from explicitly configured static terrain.
### Engineering consequences
- Shared mutations must behave consistently for private hosts, open hosts,
dedicated servers, and joined clients.
- Networking changes require local-host and paired host/client validation.
- Protocol payloads and rejection cleanup are explicit and bounded.
- Renaming visible UI does not require a save migration.
- Content validation covers stable-ID uniqueness, catalog completeness, pool
membership, and typed habitat compatibility.
- New authored assets require provenance records as well as resource
references.
## Content and balance
Balance is authored data and should change deliberately. Exact current values
remain authoritative in `.tres` resources and typed scripts.
### Fish
- Stable fish IDs and catalog numbers must not be changed for display cleanup.
- Species availability may constrain water type, time, weather, bait, and
other authored context.
- Location pools control selection weight; the global catalog remains
comprehensive.
- Freshwater and saltwater habitat is validated by the host in addition to
pool membership.
- Value, rarity, quality, weight ranges, and authored barrier-health bands
should be reviewed together because they affect economy and catch
difficulty.
### Economy and progression
- Sales and purchases are host-authoritative and must mutate inventory and
wallet exactly once.
- Reserved assets are rejected atomically; mixed valid and reserved batches
must not partially succeed.
- Item effects, shop prices, cooler capacity, fishing upgrades, jobs, and
experience are separate balance axes. Avoid changing several in an
unrelated presentation pass.
Record affected stable IDs and resource paths, old and new values, intended
player-facing outcome, interactions with quality/availability/economy,
deterministic validation, and save-compatibility impact with each balance
change. Do not bump a save schema or network protocol merely because an
authored number changed.
## Authoring
### World composition
The active test world uses the canonical starter island through
`world/regions/starter_island_region.tscn`.
`world/test_world.tscn` owns the gameplay-wide environment, sun, world bounds,
and below-world failsafe. `StarterIslandRegion` owns the placed island content:
```text
StarterIslandRegion
├── Terrain
│ ├── Visual
│ └── Collision
├── WaterBodies
│ ├── Pond
│ │ ├── VisualWater
│ │ ├── FishingRegion
│ │ └── RecoveryRegion
│ └── Ocean
│ ├── VisualWater
│ ├── FishingRegions
│ └── RecoveryRegions
├── PlayerSpawn
├── SafeRespawns
└── Interactables
├── FishingShopWorld
└── PelicanCoolerPerch
```
Move a meaningful feature root rather than one of its implementation children.
Child transforms are local offsets owned by that feature.
Every fishable region authors its `water_type` explicitly. The starter pond is
`FRESH_WATER`; the starter coast is `SALT_WATER`. Fish species use the same
central type through an allowed-water-type bitmask. Do not infer habitat from
node names, pool filenames, coordinates, or water height.
Select `WaterBodies/Pond` to move or resize the pond. Its transform is the
authoritative surface position; surface size and fishing/recovery coverage are
owned together. Select `WaterBodies/Ocean` to move the surrounding water as one
feature. Its explicit visual, fishing, and recovery lobes remain local to that
root.
Placed-feature ownership:
- `PlayerSpawn` defines the initial player transform and facing.
- `SafeRespawns` contains authoritative recovery destinations. Recovery
preserves current facing.
- `Interactables/FishingShopWorld` owns the shop visual, collision, interaction
area, prompt, and entrance marker.
- `Interactables/PelicanCoolerPerch` owns the Pelican landmark visual; selling
remains a Cooler action.
- `Terrain` owns imported visuals and generated collision.
- `BelowWorldFailsafe/Coverage` owns below-world recovery coverage.
The starter-island GLB hierarchy is the terrain-collision authority. The
region rebuilds one concave collision shape from every imported
`MeshInstance3D` when it loads, so newly exported terrain and props participate
without a separate stale collision bake. Keep purely decorative meshes out of
that hierarchy if they should not block players.
The active `Environment`, `Sun`, and starter-island grass material remain
Inspector-authored and are not recreated by runtime scripts.
### Reusable world props
Use one placed `WorldProp` root for a complete landmark:
```text
WorldProp
├── Visual
└── Collision
└── CollisionShape3D
```
Put optional interaction areas, labels, and markers beneath the same root.
Instance imported GLB content under `Visual` and keep gameplay collision under
`Collision`. Author reusable assets at scale `(1, 1, 1)`. Uniform provisional
root scaling is acceptable when visual and collision scale together; avoid
non-uniform root scaling. Make mutable per-instance shapes, meshes, and
materials local to the scene.
### Shoreline tide ribbons
Maps using generated tide ribbons own a `ShorelineRibbonBaker` and one
`ShorelineRibbonConfig` per water body. Each configuration selects only its
static terrain source, water height, generation bounds, water-facing reference,
smoothing overrides, and generated `.tres` path. Props, players, bobbers, and
gameplay areas are not scanned unless selected explicitly. Only `SALT_WATER`
bodies generate ribbons.
The editor automatically rebuilds configured shoreline resources when an
authored terrain GLB is reimported. Select the baker and press **Rebuild
Shoreline Ribbons** only when intentionally forcing a rebuild without a terrain
reimport. The equivalent headless fallback and validation command is:
```sh
godot --headless --path . --script scripts/bake_shoreline_ribbons.gd
```
Use `debug_path_stage` only while comparing extraction stages and leave it Off
in committed scenes. A rebuild is required when saltwater terrain at the
waterline, water height, or generation bounds change; terrain reimports handle
the usual case automatically. Normal gameplay loads committed generated meshes
and never runs extraction.
### Facial-feature textures
Put new PNGs under the matching directory in
`art/exported/characters/faces/`:
```text
eyes/<id>.png
noses/<id>.png
mouth/<id>.png
```
The category directory is authoritative. A category prefix is optional, so
both `sleepy.png` and `eyes_sleepy.png` produce the stable option ID `sleepy`.
Filenames normalize to lowercase snake_case and are stored in appearance
snapshots, so do not casually rename them. Preserve the established RGBA
transparent canvas. Restart a development build after adding an image; rebuild
exports to package new `res://` files.
### Texture sampling
NETfishing artwork always uses nearest-neighbor sampling. Do not enable linear,
bilinear, trilinear, or anisotropic texture filtering, and do not generate
mipmaps. Shader samplers must declare `filter_nearest`. The
`TextureSamplingPolicy` autoload applies nearest sampling to 2D canvas items,
Sprite3D presentations, imported 3D materials, and dynamically constructed
mesh materials at runtime.
After importing new artwork, normalize its tracked import metadata where
needed and run the focused policy check:
```sh
godot --headless --path . --script scripts/normalize_texture_imports.gd \
-- --apply --root res://path/to/new/artwork
godot --headless --path . --script tests/texture_sampling_validation.gd
```
### Bubble menus
Instance `ui/components/bubble_menu/bubble_button.tscn` for each action, or
attach `bubble_button.gd` to an existing button. Author neutral size, desktop
and compact anchors, font-size limits, and deterministic motion in the
Inspector. A label child may be assigned with `label_control_path`.
Place buttons under a Control using `bubble_cluster.gd`, pass ordered button
references to `configure()`, and call `apply_layout()` when available size or
responsive layout changes. Order defines keyboard/controller focus neighbors.
The shared profile owns palette, styles, proportional-font ratio, hover
response, and contact tuning. Parent menus own labels, actions, anchors,
availability, and confirmation behavior.
`motion_scale = 0.0` disables idle drift/deformation while preserving hover and
focus feedback. Contact correction is deterministic and bounded; do not replace
it with physics that destabilizes layout, focus order, or hit targets.
## Validation
Tests are executable Godot `SceneTree` scripts. Some are pure content/domain
checks, some instantiate the main scene, and multiplayer checks run paired host
and client processes on loopback. The repository runner provides isolation and
consistent entry points.
### Consolidated runner
```sh
scripts/run_validations.sh quick
scripts/run_validations.sh full
scripts/run_validations.sh host
scripts/run_validations.sh network
scripts/run_validations.sh all
scripts/run_validations.sh --list
```
- `quick` runs deterministic content and domain checks.
- `full` adds socket-free scene/runtime checks.
- `host` runs single-process authority checks that bind local UDP.
- `network` runs loopback host/client pairs.
- `all` runs `full`, `host`, and `network`.
Set `GODOT_BIN` to select an executable and `TEST_TIMEOUT_SECONDS` to change
the per-process timeout. The runner isolates and removes XDG roots.
For one focused test:
```sh
test_root="$(mktemp -d)"
XDG_DATA_HOME="$test_root/data" \
XDG_CONFIG_HOME="$test_root/config" \
godot --headless --path . --script tests/fish_catalog_content_validation.gd
rm -rf -- "$test_root"
```
Do not point `NETFISHING_DATA_DIR` at an arbitrary empty directory; it is an
explicit portable-data override and must identify a valid data root.
Headless tests cannot prove visual alignment, mouse routing, shader appearance,
controller feel, or resize behavior. Presentation changes require graphical
review at the canonical 1280×720 layout and relevant low/high and ultrawide
resolutions.
Network tests require free loopback UDP ports and local-socket permission. A
release audit additionally requires clean Git/tag verification, editor import,
platform exports, executable smoke tests, archive inspection, and SHA-256
verification; those checks are intentionally outside the development runner.

View file

@ -1,28 +0,0 @@
# PortMaster performance profile
The PortMaster launcher keeps the normal game profile on unknown and stronger
hardware. It enables the low-end profile only when the Linux device tree
reports one of the identifiers used by the Allwinner H616/H700 XX handhelds:
- `allwinner,h616`
- `sun50iw9p1`
- `allwinner,sun50i-h700`
The low-end launch profile passes these options to Godot:
- `--single-window`
- `--disable-vsync`
- `--max-fps 30`
- `--audio-output-latency 40`
It also passes `NETFISHING_LOW_END=1`. The game responds by rendering the 3D
world at 75 percent linear resolution with nearest-neighbor scaling. This
reduces 3D pixel work by about 44 percent while the separately rendered UI
retains its canonical resolution.
Do not use Godot's low processor mode for this profile. It reduces idle CPU
usage by sleeping between updates and is not a game-performance optimization.
When adding another device family, record its exact NUL-separated device-tree
`compatible` value from the hardware before extending the launcher match. Do
not infer detection from a retail product name alone.

View file

@ -1,4 +1,4 @@
# PortMaster release builds # PortMaster reference
NETfishing's PortMaster release is a canonical PortMaster package, not a NETfishing's PortMaster release is a canonical PortMaster package, not a
version-named generic ZIP. The installer-facing archive must be named version-named generic ZIP. The installer-facing archive must be named
@ -93,10 +93,14 @@ The remaining catalog metadata assets were copied from the installed official
```text ```text
e2a9d132744684c67865c01eca027a8c9946b4c5a19da57c82f1af0373dc83b7 gameinfo.xml e2a9d132744684c67865c01eca027a8c9946b4c5a19da57c82f1af0373dc83b7 gameinfo.xml
ff08aacc52bbdc95616320800da3eaee0c0ba5fafdd962bf04f9655859409764 licenses/CREDITS.md
b84fdd2c3da5db56385cdbb639795e90aa3e035c53bc3591135f18df3331451f licenses/Tuffy-LICENSE.txt
``` ```
The packages `licenses/` directory is assembled from the authoritative root
licenses and trademarks, the consolidated `docs/ATTRIBUTION.md`, and the font
notices at build time. It also records the exact release tag and corresponding
GPL source commit. Do not restore stale duplicated notice templates beneath
`scripts/portmaster/`.
The original catalog porter credit, `Voyager`, remains in `port.json`. The original catalog porter credit, `Voyager`, remains in `port.json`.
## muOS H700 controller mapping ## muOS H700 controller mapping
@ -135,3 +139,31 @@ following in the installed game:
- Both sticks, both bumpers, both triggers, Select, Start, L3, and R3 register. - Both sticks, both bumpers, both triggers, Select, Start, L3, and R3 register.
- A single button never cancels auto-map. - A single button never cancels auto-map.
- Holding both bumpers together for 1.25 seconds cancels auto-map. - Holding both bumpers together for 1.25 seconds cancels auto-map.
## Low-end performance profile
The launcher keeps the normal game profile on unknown and stronger hardware.
It enables the low-end profile only when the Linux device tree reports one of
the identifiers used by Allwinner H616/H700 XX handhelds:
- `allwinner,h616`
- `sun50iw9p1`
- `allwinner,sun50i-h700`
The low-end profile passes these Godot options:
- `--single-window`
- `--disable-vsync`
- `--max-fps 30`
- `--audio-output-latency 40`
It also passes `NETFISHING_LOW_END=1`. The game renders the 3D world at 75%
linear resolution with nearest-neighbor scaling, reducing 3D pixel work by
about 44% while the separately rendered UI retains its canonical resolution.
Do not use Godot's low processor mode for this profile. It reduces idle CPU
usage by sleeping between updates and is not a game-performance optimization.
Before adding a device family, record its exact NUL-separated device-tree
`compatible` value from hardware. Do not infer detection from a retail product
name alone.

View file

@ -1,12 +1,13 @@
NETfishing NETfishing
v0.6.4-alpha v0.7.1-alpha
Alpha 0.6.4 Alpha 0.7.1
Thank you for trying this early private playtest. Thank you for trying this early private playtest.
NETfishing is currently a local gameplay prototype for a future NETfishing is an early multiplayer fishing game. This alpha includes local
multiplayer-first game. Networking and multiplayer are NOT implemented in progression, player-hosted and dedicated multiplayer sessions, public room
this build. discovery, and direct UDP connections. Expect rough edges and please keep a
backup of any save or identity data you care about.
INSTALLATION INSTALLATION
@ -60,6 +61,9 @@ FISHING
FEATURES TO TRY FEATURES TO TRY
- Hosting a private or public room and joining compatible online sessions
- Direct-IP, saved-server, recent-server, and public-room connection flows
- Text chat, player calls, player lists, relationships, and moderation tools
- Movement, jumping, camera rotation, and zoom - Movement, jumping, camera rotation, and zoom
- Short, medium, and maximum-distance casts - Short, medium, and maximum-distance casts
- Valid water and invalid land casts - Valid water and invalid land casts
@ -101,11 +105,11 @@ Please include:
- How movement, casting, chase pressure, barrier clicking, menus, and camera - How movement, casting, chase pressure, barrier clicking, menus, and camera
controls felt controls felt
KNOWN PRE-ALPHA LIMITATIONS KNOWN ALPHA LIMITATIONS
- Multiplayer/networking is not implemented. - Public sessions remain direct connections; restrictive NAT or carrier-grade
- Fish and character art are temporary. networks may prevent some players from joining.
- UI and balance values are placeholders. - Multiplayer, dedicated-server deployment, UI, and balance are still alpha.
- There is no audio. - Some fish and character artwork remains temporary.
- There is no installer or automatic updater. - There is no installer or automatic updater.
- Windows builds are unsigned. - Windows builds are unsigned.

60
docs/README.md Normal file
View file

@ -0,0 +1,60 @@
# NETfishing documentation
This directory is the single home for maintained project documentation.
Start here instead of searching feature, asset, world, or script directories
for local README files.
## Authoritative references
- [`DEVELOPMENT.md`](DEVELOPMENT.md): architecture, engineering decisions,
content and balance policy, authoring guidance, and validation.
- [`ATTRIBUTION.md`](ATTRIBUTION.md): ownership, credits, licensing map,
third-party notices, asset provenance, and redistribution requirements.
- [`PORTMASTER.md`](PORTMASTER.md): PortMaster packaging, installation,
controller mapping, performance behavior, and hardware release checks.
- [`README-PLAYTEST.txt`](README-PLAYTEST.txt): the player-facing README staged
into desktop playtest packages.
## Related repositories
- [Discovery service API](https://forge.makearmy.io/woofmeow/netfishing-discovery-server/src/branch/main/docs/API.md)
stays with the service implementation and defines its versioned HTTP
contract.
- [Dedicated-server packaging](https://forge.makearmy.io/woofmeow/netfishing-dedicated-server/src/branch/main/README.md)
stays with its installer and update scripts. It consumes this repository's
attribution and legal notices from the exact pinned game commit instead of
maintaining copies.
Those code-coupled references remain in their own repositories. Game-wide
architecture, authoring, licensing, credits, and provenance are not duplicated
there.
Exact runtime values and behavior remain authoritative in source code, scenes,
and resources. These documents describe boundaries, policy, and maintenance
procedures; they should not duplicate changing constants or inventories that
can be derived reliably from the project.
## Files intentionally kept at the repository root
The following are entry points or governing legal documents rather than
general project documentation, so they remain at conventional root paths:
- `README.md`
- `CONTRIBUTING.md`
- `LICENSE`
- `ASSET-LICENSE.md`
- `TRADEMARKS.md`
- `CONTRIBUTOR-TERMS.md`
Third-party font license texts stay beside their font files under `ui/fonts/`
so the licensed files and their original notices cannot drift apart. Build
scripts collect those legal files and the authoritative attribution record
when assembling releases.
## Maintenance rule
Do not add feature-specific README files elsewhere in the repository. Add or
update the appropriate reference above and link to its heading when source
comments need more context. Player-facing package instructions belong only in
`README-PLAYTEST.txt`; source and scripts remain authoritative for command-line
usage.

View file

@ -1,63 +0,0 @@
# Testing
NETfishing validations are Godot `SceneTree` scripts. They use assertions and
exit nonzero on failure. Run them with isolated user data so development checks
cannot touch real saves, identity, trust, relationships, or settings.
## Consolidated runner
```sh
scripts/run_validations.sh quick
scripts/run_validations.sh full
scripts/run_validations.sh host
scripts/run_validations.sh network
scripts/run_validations.sh all
scripts/run_validations.sh --list
```
- `quick` runs deterministic content and domain validations.
- `full` adds socket-free scene/runtime checks suitable for headless execution.
- `host` runs single-process authoritative-host checks that bind a local UDP
port.
- `network` runs the loopback host/client validations in pairs.
- `all` runs `full`, `host`, and then `network`.
Set `GODOT_BIN` to select another executable. Set `TEST_TIMEOUT_SECONDS` to
change the per-process timeout. The runner creates one temporary XDG root per
process and removes it on exit.
## One focused test
```sh
test_root="$(mktemp -d)"
XDG_DATA_HOME="$test_root/data" \
XDG_CONFIG_HOME="$test_root/config" \
godot --headless --path . --script tests/fish_catalog_content_validation.gd
rm -rf -- "$test_root"
```
Do not set `NETFISHING_DATA_DIR` to an arbitrary empty folder: that variable is
an explicit portable-data override and must point at a valid NETfishing data
root. Isolating XDG paths is sufficient for the validation scripts.
## Graphical checks
Headless tests cannot prove visual alignment, actual mouse routing, shader
appearance, controller feel, or window-resize behavior. Presentation changes
need a real graphical startup with isolated XDG roots and inspection at the
canonical 1280×720 layout plus relevant low/high and ultrawide resolutions.
## Network checks
Host and paired tests bind loopback UDP ports defined in their scripts. Ensure
no old Godot validation process is holding those ports and that the execution
environment permits local sockets. The runner starts paired hosts before their
clients and requires both processes to exit successfully. Network tests do not
contact external servers.
## Release checks
A release audit additionally includes clean Git/tag verification, editor import,
export-template checks, platform exports, executable smoke tests, archive
inspection, and SHA-256 verification. Those checks are intentionally not hidden
inside the development runner.

View file

@ -1,27 +0,0 @@
# ADR 0001: Host-authoritative shared state
Status: accepted
## Context
NETfishing supports private hosts, open hosts, and joined clients. Catches,
currency, owned items, jobs, mail, drawings, profiles, and moderation affect
state that cannot safely trust a client's local presentation.
## Decision
The host validates requests against registered peers and host-owned context,
then performs the authoritative mutation. Clients receive results and replicated
presentation state. Client evidence is bounded and reconstructed where
possible; it is not treated as authority.
Private single-player uses the same host path. Presentation-only state does not
add RPCs or persistence.
## Consequences
- Shared behavior is consistent across private, open-host, and joined-client
modes.
- Tests must cover local-host and paired host/client paths.
- Stable protocol payloads and rejection cleanup require explicit handling.
- UI activation cannot be used as proof that a server-side mutation succeeded.

View file

@ -1,27 +0,0 @@
# ADR 0002: Authored resources and stable identifiers
Status: accepted
## Context
Fish, items, pools, availability, shop stock, and other game content evolve
independently from saved catches and network messages. Display labels and scene
node names are expected to change during development.
## Decision
Repository-owned resources are the authoritative authored data. Persistent and
networked records refer to stable IDs. Display names, filenames, node names,
coordinates, and pool names are not compatibility identifiers.
Cross-domain concepts such as water type use one typed definition rather than
duplicated strings. Comprehensive catalogs remain separate from location-
specific selection pools.
## Consequences
- Renaming visible UI does not require save migration.
- Removing or changing a stable ID requires an explicit compatibility plan.
- Content validation checks uniqueness, catalog completeness, pool membership,
and typed habitat compatibility.
- New authored assets need provenance records as well as resource references.

1
docs/design/.gdignore Normal file
View file

@ -0,0 +1 @@

View file

@ -0,0 +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
1 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
2 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
3 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
4 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
5 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
6 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
7 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
8 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
9 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
10 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
11 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
12 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
13 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
14 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
15 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
16 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
17 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
18 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
19 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
20 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
21 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
22 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
23 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
24 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
25 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
26 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
27 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
28 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
29 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
30 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
31 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
32 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
33 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
34 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
35 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
36 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
37 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
38 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
39 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
40 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
41 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
42 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
43 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
44 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
45 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
46 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
47 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
48 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
49 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
50 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
51 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
52 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
53 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
54 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
55 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
56 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
57 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
58 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
59 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
60 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
61 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
62 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
63 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
64 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
65 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
66 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
67 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
68 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
69 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
70 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
71 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
72 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
73 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
74 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
75 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
76 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
77 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
78 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
79 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
80 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
81 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
82 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
83 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
84 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
85 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
86 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
87 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
88 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
89 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
90 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
91 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
92 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
93 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
94 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
95 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
96 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
97 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
98 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
99 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
100 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
101 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
102 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
103 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
104 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
105 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
106 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
107 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
108 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
109 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
110 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
111 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
112 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
113 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
114 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
115 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
116 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
117 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
118 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
119 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
120 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
121 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
122 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
123 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
124 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
125 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
126 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
127 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
128 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
129 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
130 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
131 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
132 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
133 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
134 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
135 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
136 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
137 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
138 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
139 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
140 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
141 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
142 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
143 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
144 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
145 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
146 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
147 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
148 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
149 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
150 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
151 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
152 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
153 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
154 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
155 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
156 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
157 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
158 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
159 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
160 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
161 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
162 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
163 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
164 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
165 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
166 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
167 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
168 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
169 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
170 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
171 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
172 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
173 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
174 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
175 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
176 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
177 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
178 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
179 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
180 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
181 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
182 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
183 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
184 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
185 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
186 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
187 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
188 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
189 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
190 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
191 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
192 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
193 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
194 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
195 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
196 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
197 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
198 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
199 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
200 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
201 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
202 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
203 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
204 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
205 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
206 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
207 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
208 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
209 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
210 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
211 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
212 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
213 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
214 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
215 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
216 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
217 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
218 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
219 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
220 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
221 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
222 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
223 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
224 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
225 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
226 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
227 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
228 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
229 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
230 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
231 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
232 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
233 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
234 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
235 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
236 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
237 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
238 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
239 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
240 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
241 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
242 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
243 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
244 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
245 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
246 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
247 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
248 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
249 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
250 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
251 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
252 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
253 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
254 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
255 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
256 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
257 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
258 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
259 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
260 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
261 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
262 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
263 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
264 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
265 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
266 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
267 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
268 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
269 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
270 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
271 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
272 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
273 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
274 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
275 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
276 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
277 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
278 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
279 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
280 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
281 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
282 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
283 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
284 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
285 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
286 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
287 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
288 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
289 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
290 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
291 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
292 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
293 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
294 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
295 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
296 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
297 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
298 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
299 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
300 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
301 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
302 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
303 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
304 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
305 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
306 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
307 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
308 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
309 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
310 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
311 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
312 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
313 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
314 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

View file

@ -0,0 +1,314 @@
catalog_number,id,implementation_status,active_status,art_status,fish_resource_path,display_texture_path,catch_profile_id
101,bowfin,implemented,inactive,missing icon,res://fish/species/bowfin/bowfin.tres,,common
102,sturgeon_lake,implemented,inactive,missing icon,res://fish/species/sturgeon_lake/sturgeon_lake.tres,,common
103,gar_longnose,implemented,inactive,missing icon,res://fish/species/gar_longnose/gar_longnose.tres,,common
104,paddlefish,implemented,inactive,missing icon,res://fish/species/paddlefish/paddlefish.tres,,common
105,sturgeon_shovelnose,implemented,inactive,missing icon,res://fish/species/sturgeon_shovelnose/sturgeon_shovelnose.tres,,common
106,gar_spotted,implemented,inactive,missing icon,res://fish/species/gar_spotted/gar_spotted.tres,,common
107,lungfish_west_african,implemented,inactive,missing icon,res://fish/species/lungfish_west_african/lungfish_west_african.tres,,common
201,mudskipper_atlantic,implemented,inactive,missing icon,res://fish/species/mudskipper_atlantic/mudskipper_atlantic.tres,,common
202,foureyes_largescale,implemented,inactive,missing icon,res://fish/species/foureyes_largescale/foureyes_largescale.tres,,common
301,mullet_red,implemented,inactive,missing icon,res://fish/species/mullet_red/mullet_red.tres,,common
401,plaice_european,implemented,inactive,missing icon,res://fish/species/plaice_european/plaice_european.tres,,common
402,flounder_summer,implemented,inactive,missing icon,res://fish/species/flounder_summer/flounder_summer.tres,,common
403,flounder_winter,implemented,inactive,missing icon,res://fish/species/flounder_winter/flounder_winter.tres,,common
501,dugong,implemented,inactive,missing icon,res://fish/species/dugong/dugong.tres,,common
502,seal_harbor,implemented,inactive,missing icon,res://fish/species/seal_harbor/seal_harbor.tres,,common
503,sea_otter,implemented,inactive,missing icon,res://fish/species/sea_otter/sea_otter.tres,,common
504,walrus,implemented,inactive,missing icon,res://fish/species/walrus/walrus.tres,,common
505,manatee_west_indian,implemented,inactive,missing icon,res://fish/species/manatee_west_indian/manatee_west_indian.tres,,common
601,pipefish_bay,implemented,inactive,missing icon,res://fish/species/pipefish_bay/pipefish_bay.tres,,common
602,seahorse_lined,implemented,inactive,missing icon,res://fish/species/seahorse_lined/seahorse_lined.tres,,common
603,monkfish,implemented,inactive,missing icon,res://fish/species/monkfish/monkfish.tres,,common
604,tripletail,implemented,inactive,missing icon,res://fish/species/tripletail/tripletail.tres,,common
701,mackerel_atlantic,implemented,active,complete,res://fish/species/mackerel_atlantic/mackerel_atlantic.tres,res://fish/species/mackerel_atlantic/fish_mackerel_atlantic.png,common
702,bluefish,implemented,inactive,missing icon,res://fish/species/bluefish/bluefish.tres,,common
703,mackerel_cero,implemented,active,complete,res://fish/species/mackerel_cero/mackerel_cero.tres,res://fish/species/mackerel_cero/fish_mackerel_cero.png,common
704,mackerel_chub,implemented,active,complete,res://fish/species/mackerel_chub/mackerel_chub.tres,res://fish/species/mackerel_chub/fish_mackerel_chub.png,common
705,jack_crevalle,implemented,inactive,missing icon,res://fish/species/jack_crevalle/jack_crevalle.tres,,common
706,mackerel_king,implemented,active,complete,res://fish/species/mackerel_king/mackerel_king.tres,res://fish/species/mackerel_king/fish_mackerel_king.png,common
707,mackerel_spanish,implemented,active,complete,res://fish/species/mackerel_spanish/mackerel_spanish.tres,res://fish/species/mackerel_spanish/fish_mackerel_spanish.png,common
708,queenfish_talang,implemented,inactive,missing icon,res://fish/species/queenfish_talang/queenfish_talang.tres,,common
801,sand_lance_american,implemented,inactive,missing icon,res://fish/species/sand_lance_american/sand_lance_american.tres,,common
802,menhaden_atlantic,implemented,inactive,missing icon,res://fish/species/menhaden_atlantic/menhaden_atlantic.tres,,common
803,pomfret_black,implemented,active,complete,res://fish/species/pomfret_black/pomfret_black.tres,res://fish/species/pomfret_black/fish_pomfret_black.png,common
804,pomfret_chinese,implemented,active,complete,res://fish/species/pomfret_chinese/pomfret_chinese.tres,res://fish/species/pomfret_chinese/fish_pomfret_chinese.png,common
805,anchovy_european,implemented,active,complete,res://fish/species/anchovy_european/anchovy_european.tres,res://fish/species/anchovy_european/fish_anchovy_european.png,common
806,sardine_european,implemented,inactive,missing icon,res://fish/species/sardine_european/sardine_european.tres,,common
807,pomfret_golden,implemented,active,complete,res://fish/species/pomfret_golden/pomfret_golden.tres,res://fish/species/pomfret_golden/fish_pomfret_golden.png,common
808,anchovy_northern,implemented,active,complete,res://fish/species/anchovy_northern/anchovy_northern.tres,res://fish/species/anchovy_northern/fish_anchovy_northern.png,common
809,sardine_pacific,implemented,inactive,missing icon,res://fish/species/sardine_pacific/sardine_pacific.tres,,common
810,pomfret_white,implemented,active,complete,res://fish/species/pomfret_white/pomfret_white.tres,res://fish/species/pomfret_white/fish_pomfret_white.png,common
901,shark_blacktip,implemented,inactive,missing icon,res://fish/species/shark_blacktip/shark_blacktip.tres,,common
902,shark_great_hammerhead,implemented,inactive,missing icon,res://fish/species/shark_great_hammerhead/shark_great_hammerhead.tres,,common
903,shark_great_white,implemented,inactive,missing icon,res://fish/species/shark_great_white/shark_great_white.tres,,common
904,shark_tiger,implemented,inactive,missing icon,res://fish/species/shark_tiger/shark_tiger.tres,,common
905,shark_whale,implemented,inactive,missing icon,res://fish/species/shark_whale/shark_whale.tres,,common
1001,burbot,implemented,inactive,missing icon,res://fish/species/burbot/burbot.tres,,common
1002,cisco,implemented,inactive,missing icon,res://fish/species/cisco/cisco.tres,,common
1003,whitefish_lake,implemented,inactive,missing icon,res://fish/species/whitefish_lake/whitefish_lake.tres,,common
1101,char_arctic,implemented,inactive,missing icon,res://fish/species/char_arctic/char_arctic.tres,,common
1102,grayling_arctic,implemented,inactive,missing icon,res://fish/species/grayling_arctic/grayling_arctic.tres,,common
1103,trout_brown,implemented,inactive,missing icon,res://fish/species/trout_brown/trout_brown.tres,,common
1104,trout_cutthroat,implemented,active,complete,res://fish/species/trout_cutthroat/trout_cutthroat.tres,res://fish/species/trout_cutthroat/fish_trout_cutthroat.png,common
1105,trout_golden,implemented,active,complete,res://fish/species/trout_golden/trout_golden.tres,res://fish/species/trout_golden/fish_trout_golden.png,common
1106,trout_rainbow,implemented,active,complete,res://fish/species/trout_rainbow/trout_rainbow.tres,res://fish/species/trout_rainbow/fish_trout_rainbow.png,common
1201,wolffish_atlantic,implemented,inactive,missing icon,res://fish/species/wolffish_atlantic/wolffish_atlantic.tres,,common
1202,cusk,implemented,inactive,missing icon,res://fish/species/cusk/cusk.tres,,common
1203,wolffish_spotted,implemented,inactive,missing icon,res://fish/species/wolffish_spotted/wolffish_spotted.tres,,common
1301,herring_atlantic,implemented,inactive,missing icon,res://fish/species/herring_atlantic/herring_atlantic.tres,,common
1302,capelin,implemented,inactive,missing icon,res://fish/species/capelin/capelin.tres,,common
1303,sprat_european,implemented,inactive,missing icon,res://fish/species/sprat_european/sprat_european.tres,,common
1304,herring_pacific,implemented,inactive,missing icon,res://fish/species/herring_pacific/herring_pacific.tres,,common
1401,pollock_alaska,implemented,inactive,missing icon,res://fish/species/pollock_alaska/pollock_alaska.tres,,common
1402,cod_atlantic,implemented,inactive,missing icon,res://fish/species/cod_atlantic/cod_atlantic.tres,,common
1403,pollock_atlantic,implemented,inactive,missing icon,res://fish/species/pollock_atlantic/pollock_atlantic.tres,,common
1404,sole_dover,implemented,inactive,missing icon,res://fish/species/sole_dover/sole_dover.tres,,common
1405,haddock,implemented,inactive,missing icon,res://fish/species/haddock/haddock.tres,,common
1406,cod_pacific,implemented,inactive,missing icon,res://fish/species/cod_pacific/cod_pacific.tres,,common
1407,hake_pacific,implemented,inactive,missing icon,res://fish/species/hake_pacific/hake_pacific.tres,,common
1408,hake_silver,implemented,inactive,missing icon,res://fish/species/hake_silver/hake_silver.tres,,common
1501,nautilus_chambered,implemented,inactive,missing icon,res://fish/species/nautilus_chambered/nautilus_chambered.tres,,common
1502,cuttlefish_common,implemented,inactive,missing icon,res://fish/species/cuttlefish_common/cuttlefish_common.tres,,common
1503,cuttlefish_flamboyant,implemented,inactive,missing icon,res://fish/species/cuttlefish_flamboyant/cuttlefish_flamboyant.tres,,common
1601,tilefish_blueline,implemented,inactive,missing icon,res://fish/species/tilefish_blueline/tilefish_blueline.tres,,common
1602,tilefish_golden,implemented,inactive,missing icon,res://fish/species/tilefish_golden/tilefish_golden.tres,,common
1603,ocean_perch_pacific,implemented,inactive,missing icon,res://fish/species/ocean_perch_pacific/ocean_perch_pacific.tres,,common
1604,sea_bass_chilean,implemented,inactive,missing icon,res://fish/species/sea_bass_chilean/sea_bass_chilean.tres,,common
1605,sablefish,implemented,inactive,missing icon,res://fish/species/sablefish/sablefish.tres,,common
1606,wreckfish,implemented,inactive,missing icon,res://fish/species/wreckfish/wreckfish.tres,,common
1701,oarfish_giant,implemented,inactive,missing icon,res://fish/species/oarfish_giant/oarfish_giant.tres,,common
1702,coelacanth_west_indian,implemented,inactive,missing icon,res://fish/species/coelacanth_west_indian/coelacanth_west_indian.tres,,common
1801,anglerfish_black_seadevil,implemented,inactive,missing icon,res://fish/species/anglerfish_black_seadevil/anglerfish_black_seadevil.tres,,common
1802,fangtooth_common,implemented,inactive,missing icon,res://fish/species/fangtooth_common/fangtooth_common.tres,,common
1803,gulper_eel,implemented,inactive,missing icon,res://fish/species/gulper_eel/gulper_eel.tres,,common
1804,barreleye_pacific,implemented,inactive,missing icon,res://fish/species/barreleye_pacific/barreleye_pacific.tres,,common
1805,blobfish_smooth_head,implemented,inactive,missing icon,res://fish/species/blobfish_smooth_head/blobfish_smooth_head.tres,,common
1806,lanternfish_spotted,implemented,inactive,missing icon,res://fish/species/lanternfish_spotted/lanternfish_spotted.tres,,common
1901,sea_star_crown_of_thorns,implemented,inactive,missing icon,res://fish/species/sea_star_crown_of_thorns/sea_star_crown_of_thorns.tres,,common
1902,sea_cucumber_giant_california,implemented,inactive,missing icon,res://fish/species/sea_cucumber_giant_california/sea_cucumber_giant_california.tres,,common
1903,urchin_purple,implemented,inactive,missing icon,res://fish/species/urchin_purple/urchin_purple.tres,,common
1904,sand_dollar,implemented,inactive,missing icon,res://fish/species/sand_dollar/sand_dollar.tres,,common
1905,sea_star_sunflower,implemented,inactive,missing icon,res://fish/species/sea_star_sunflower/sea_star_sunflower.tres,,common
2001,axolotl,implemented,inactive,missing icon,res://fish/species/axolotl/axolotl.tres,,common
2002,hellbender,implemented,inactive,missing icon,res://fish/species/hellbender/hellbender.tres,,common
2101,guppy,implemented,inactive,missing icon,res://fish/species/guppy/guppy.tres,,common
2102,tetra_neon,implemented,inactive,missing icon,res://fish/species/tetra_neon/tetra_neon.tres,,common
2103,danio_zebra,implemented,inactive,missing icon,res://fish/species/danio_zebra/danio_zebra.tres,,common
2201,largemouth_bass,implemented,inactive,missing icon,res://fish/species/largemouth_bass/largemouth_bass.tres,,common
2202,smallmouth_bass,implemented,inactive,missing icon,res://fish/species/smallmouth_bass/smallmouth_bass.tres,,common
2301,buffalo_bigmouth,implemented,inactive,missing icon,res://fish/species/buffalo_bigmouth/buffalo_bigmouth.tres,,common
2302,redhorse_golden,implemented,inactive,missing icon,res://fish/species/redhorse_golden/redhorse_golden.tres,,common
2303,quillback,implemented,inactive,missing icon,res://fish/species/quillback/quillback.tres,,common
2304,buffalo_smallmouth,implemented,inactive,missing icon,res://fish/species/buffalo_smallmouth/buffalo_smallmouth.tres,,common
2305,sucker_white,implemented,inactive,missing icon,res://fish/species/sucker_white/sucker_white.tres,,common
2401,bullhead_black,implemented,inactive,missing icon,res://fish/species/bullhead_black/bullhead_black.tres,,common
2402,catfish_blue,implemented,active,complete,res://fish/species/catfish_blue/catfish_blue.tres,res://fish/species/catfish_blue/fish_catfish_blue.png,bass
2403,bullhead_brown,implemented,inactive,missing icon,res://fish/species/bullhead_brown/bullhead_brown.tres,,common
2404,catfish_channel,implemented,active,complete,res://fish/species/catfish_channel/catfish_channel.tres,res://fish/species/catfish_channel/fish_catfish_channel.png,common
2405,catfish_flathead,implemented,active,complete,res://fish/species/catfish_flathead/catfish_flathead.tres,res://fish/species/catfish_flathead/fish_catfish_flathead.png,bass
2406,madtom_tadpole,implemented,inactive,missing icon,res://fish/species/madtom_tadpole/madtom_tadpole.tres,,common
2407,catfish_white,implemented,active,complete,res://fish/species/catfish_white/catfish_white.tres,res://fish/species/catfish_white/fish_catfish_white.png,common
2408,bullhead_yellow,implemented,inactive,missing icon,res://fish/species/bullhead_yellow/bullhead_yellow.tres,,common
2501,barbel_common,implemented,inactive,missing icon,res://fish/species/barbel_common/barbel_common.tres,,common
2502,bream_common,implemented,inactive,missing icon,res://fish/species/bream_common/bream_common.tres,,common
2503,carp,implemented,active,complete,res://fish/species/carp/carp.tres,res://fish/species/carp/fish_carp_common.png,carp
2504,roach_common,implemented,inactive,missing icon,res://fish/species/roach_common/roach_common.tres,,common
2505,chub_european,implemented,active,complete,res://fish/species/chub_european/chub_european.tres,res://fish/species/chub_european/fish_chub_european.png,common
2506,fallfish,implemented,inactive,missing icon,res://fish/species/fallfish/fallfish.tres,,common
2507,ide,implemented,inactive,missing icon,res://fish/species/ide/ide.tres,,common
2508,rudd,implemented,inactive,missing icon,res://fish/species/rudd/rudd.tres,,common
2509,tench,implemented,inactive,missing icon,res://fish/species/tench/tench.tres,,common
2601,crayfish_red_swamp,implemented,inactive,missing icon,res://fish/species/crayfish_red_swamp/crayfish_red_swamp.tres,,common
2701,gar_alligator,implemented,inactive,missing icon,res://fish/species/gar_alligator/gar_alligator.tres,,common
2702,arapaima,implemented,inactive,missing icon,res://fish/species/arapaima/arapaima.tres,,common
2703,tigerfish_goliath,implemented,inactive,missing icon,res://fish/species/tigerfish_goliath/tigerfish_goliath.tres,,common
2704,muskellunge,implemented,inactive,missing icon,res://fish/species/muskellunge/muskellunge.tres,,common
2801,shiner_common,implemented,inactive,missing icon,res://fish/species/shiner_common/shiner_common.tres,,common
2802,chub_creek,implemented,inactive,missing icon,res://fish/species/chub_creek/chub_creek.tres,,common
2803,shiner_emerald,implemented,inactive,missing icon,res://fish/species/shiner_emerald/shiner_emerald.tres,,common
2804,minnow_fathead,implemented,inactive,missing icon,res://fish/species/minnow_fathead/minnow_fathead.tres,,common
2805,chub_flame,implemented,active,complete,res://fish/species/chub_flame/chub_flame.tres,res://fish/species/chub_flame/fish_chub_flame.png,common
2806,shiner_golden,implemented,inactive,missing icon,res://fish/species/shiner_golden/shiner_golden.tres,,common
2807,chub_lake,implemented,active,complete,res://fish/species/chub_lake/chub_lake.tres,res://fish/species/chub_lake/fish_chub_lake.png,common
2901,electric_eel,implemented,inactive,missing icon,res://fish/species/electric_eel/electric_eel.tres,,common
2902,freshwater_drum,implemented,inactive,missing icon,res://fish/species/freshwater_drum/freshwater_drum.tres,,common
2903,goldeye,implemented,inactive,missing icon,res://fish/species/goldeye/goldeye.tres,,common
2904,mooneye,implemented,inactive,missing icon,res://fish/species/mooneye/mooneye.tres,,common
2905,loach_weather,implemented,inactive,missing icon,res://fish/species/loach_weather/loach_weather.tres,,common
3001,goldfish_bubbleeye,implemented,active,complete,res://fish/species/goldfish_bubbleeye/goldfish_bubbleeye.tres,res://fish/species/goldfish_bubbleeye/fish_goldfish_bubbleeye.png,common
3002,goldfish,implemented,active,complete,res://fish/species/goldfish/goldfish.tres,res://fish/species/goldfish/fish_goldfish.png,common
3003,koi,implemented,inactive,missing icon,res://fish/species/koi/koi.tres,,common
3101,crappie_black,implemented,inactive,missing icon,res://fish/species/crappie_black/crappie_black.tres,,common
3102,bluegill,implemented,active,complete,res://fish/species/bluegill/bluegill.tres,res://fish/species/bluegill/fish_bluegill.png,common
3103,green_sunfish,implemented,inactive,missing icon,res://fish/species/green_sunfish/green_sunfish.tres,,common
3104,pumpkinseed,implemented,inactive,missing icon,res://fish/species/pumpkinseed/pumpkinseed.tres,,common
3105,redear_sunfish,implemented,inactive,missing icon,res://fish/species/redear_sunfish/redear_sunfish.tres,,common
3106,warmouth,implemented,inactive,missing icon,res://fish/species/warmouth/warmouth.tres,,common
3107,crappie_white,implemented,inactive,missing icon,res://fish/species/crappie_white/crappie_white.tres,,common
3201,yellow_perch,implemented,inactive,missing icon,res://fish/species/yellow_perch/yellow_perch.tres,,common
3301,pickerel_chain,implemented,inactive,missing icon,res://fish/species/pickerel_chain/pickerel_chain.tres,,common
3302,pickerel_grass,implemented,inactive,missing icon,res://fish/species/pickerel_grass/pickerel_grass.tres,,common
3303,pike_northern,implemented,inactive,missing icon,res://fish/species/pike_northern/pike_northern.tres,,common
3304,sauger,implemented,active,complete,res://fish/species/sauger/sauger.tres,res://fish/species/sauger/fish_sauger.png,common
3305,saugeye,implemented,active,complete,res://fish/species/saugeye/saugeye.tres,res://fish/species/saugeye/fish_saugeye.png,common
3306,walleye,implemented,active,complete,res://fish/species/walleye/walleye.tres,res://fish/species/walleye/fish_walleye.png,common
3401,goby_round,implemented,active,complete,res://fish/species/goby_round/goby_round.tres,res://fish/species/goby_round/fish_goby_round.png,common
3501,jelly_crystal,implemented,inactive,missing icon,res://fish/species/jelly_crystal/jelly_crystal.tres,,common
3502,jelly_lions_mane,implemented,inactive,missing icon,res://fish/species/jelly_lions_mane/jelly_lions_mane.tres,,common
3503,jelly_moon,implemented,inactive,missing icon,res://fish/species/jelly_moon/jelly_moon.tres,,common
3504,jelly_pacific_sea_nettle,implemented,inactive,missing icon,res://fish/species/jelly_pacific_sea_nettle/jelly_pacific_sea_nettle.tres,,common
3505,jelly_sea_wasp,implemented,inactive,missing icon,res://fish/species/jelly_sea_wasp/jelly_sea_wasp.tres,,common
3601,pompano_african,implemented,inactive,missing icon,res://fish/species/pompano_african/pompano_african.tres,,common
3602,cobia,implemented,inactive,missing icon,res://fish/species/cobia/cobia.tres,,common
3603,trevally_giant,implemented,inactive,missing icon,res://fish/species/trevally_giant/trevally_giant.tres,,common
3604,amberjack_greater,implemented,inactive,missing icon,res://fish/species/amberjack_greater/amberjack_greater.tres,,common
3605,amberjack_lesser,implemented,inactive,missing icon,res://fish/species/amberjack_lesser/amberjack_lesser.tres,,common
3701,halibut_atlantic,implemented,inactive,missing icon,res://fish/species/halibut_atlantic/halibut_atlantic.tres,,common
3702,halibut_pacific,implemented,inactive,missing icon,res://fish/species/halibut_pacific/halibut_pacific.tres,,common
3703,turbot,implemented,inactive,missing icon,res://fish/species/turbot/turbot.tres,,common
3801,lobster_american,implemented,inactive,missing icon,res://fish/species/lobster_american/lobster_american.tres,,common
3802,krill_antarctic,implemented,inactive,missing icon,res://fish/species/krill_antarctic/krill_antarctic.tres,,common
3803,lobster_caribbean_spiny,implemented,inactive,missing icon,res://fish/species/lobster_caribbean_spiny/lobster_caribbean_spiny.tres,,common
3804,shrimp_peacock_mantis,implemented,inactive,missing icon,res://fish/species/shrimp_peacock_mantis/shrimp_peacock_mantis.tres,,common
3805,shrimp_skunk_cleaner,implemented,inactive,missing icon,res://fish/species/shrimp_skunk_cleaner/shrimp_skunk_cleaner.tres,,common
3901,crab_ghost,implemented,inactive,missing icon,res://fish/species/crab_ghost/crab_ghost.tres,,common
3902,crab_blue,implemented,inactive,missing icon,res://fish/species/crab_blue/crab_blue.tres,,common
3903,crab_dungeness,implemented,inactive,missing icon,res://fish/species/crab_dungeness/crab_dungeness.tres,,common
3904,crab_japanese_spider,implemented,inactive,missing icon,res://fish/species/crab_japanese_spider/crab_japanese_spider.tres,,common
3905,crab_red_king,implemented,inactive,missing icon,res://fish/species/crab_red_king/crab_red_king.tres,,common
4001,eel_american,implemented,inactive,missing icon,res://fish/species/eel_american/eel_american.tres,,common
4002,eel_european,implemented,inactive,missing icon,res://fish/species/eel_european/eel_european.tres,,common
4101,smelt_rainbow,implemented,inactive,missing icon,res://fish/species/smelt_rainbow/smelt_rainbow.tres,,common
4201,smelt_eulachon,implemented,inactive,missing icon,res://fish/species/smelt_eulachon/smelt_eulachon.tres,,common
4301,sturgeon_white,implemented,inactive,missing icon,res://fish/species/sturgeon_white/sturgeon_white.tres,,common
4401,salmon_atlantic,implemented,active,complete,res://fish/species/salmon_atlantic/salmon_atlantic.tres,res://fish/species/salmon_atlantic/fish_salmon_atlantic.png,bass
4402,salmon_chum,implemented,active,complete,res://fish/species/salmon_chum/salmon_chum.tres,res://fish/species/salmon_chum/fish_salmon_chum.png,bass
4403,salmon_coho,implemented,active,complete,res://fish/species/salmon_coho/salmon_coho.tres,res://fish/species/salmon_coho/fish_salmon_coho.png,bass
4404,salmon_pink,implemented,active,complete,res://fish/species/salmon_pink/salmon_pink.tres,res://fish/species/salmon_pink/fish_salmon_pink.png,bass
4405,salmon_sockeye,implemented,active,complete,res://fish/species/salmon_sockeye/salmon_sockeye.tres,res://fish/species/salmon_sockeye/fish_salmon_sockeye.png,bass
4501,trout_steelhead,implemented,active,complete,res://fish/species/trout_steelhead/trout_steelhead.tres,res://fish/species/trout_steelhead/fish_trout_steelhead.png,common
4601,marlin_black,implemented,active,complete,res://fish/species/marlin_black/marlin_black.tres,res://fish/species/marlin_black/fish_marlin_black.png,common
4602,marlin_blue,implemented,active,complete,res://fish/species/marlin_blue/marlin_blue.tres,res://fish/species/marlin_blue/fish_marlin_blue.png,common
4603,sailfish,implemented,active,complete,res://fish/species/sailfish/sailfish.tres,res://fish/species/sailfish/fish_sailfish.png,common
4604,swordfish,implemented,active,complete,res://fish/species/swordfish/swordfish.tres,res://fish/species/swordfish/fish_swordfish.png,common
4605,marlin_white,implemented,active,complete,res://fish/species/marlin_white/marlin_white.tres,res://fish/species/marlin_white/fish_marlin_white.png,common
4701,mahi_mahi,implemented,inactive,missing icon,res://fish/species/mahi_mahi/mahi_mahi.tres,,common
4702,opah,implemented,inactive,missing icon,res://fish/species/opah/opah.tres,,common
4703,wahoo,implemented,inactive,missing icon,res://fish/species/wahoo/wahoo.tres,,common
4801,tuna_albacore,implemented,active,complete,res://fish/species/tuna_albacore/tuna_albacore.tres,res://fish/species/tuna_albacore/fish_tuna_albacore.png,bass
4802,tuna_bigeye,implemented,active,complete,res://fish/species/tuna_bigeye/tuna_bigeye.tres,res://fish/species/tuna_bigeye/fish_tuna_bigeye.png,bass
4803,tuna_bluefin,implemented,active,complete,res://fish/species/tuna_bluefin/tuna_bluefin.tres,res://fish/species/tuna_bluefin/fish_tuna_bluefin.png,bass
4804,tuna_skipjack,implemented,active,complete,res://fish/species/tuna_skipjack/tuna_skipjack.tres,res://fish/species/tuna_skipjack/fish_tuna_skipjack.png,bass
4805,tuna_yellowfin,implemented,active,complete,res://fish/species/tuna_yellowfin/tuna_yellowfin.tres,res://fish/species/tuna_yellowfin/fish_tuna_yellowfin.png,bass
4901,octopus_common,implemented,inactive,missing icon,res://fish/species/octopus_common/octopus_common.tres,,common
4902,octopus_day,implemented,inactive,missing icon,res://fish/species/octopus_day/octopus_day.tres,,common
4903,octopus_giant_pacific,implemented,inactive,missing icon,res://fish/species/octopus_giant_pacific/octopus_giant_pacific.tres,,common
4904,octopus_greater_blue_ringed,implemented,inactive,missing icon,res://fish/species/octopus_greater_blue_ringed/octopus_greater_blue_ringed.tres,,common
5001,sunfish,implemented,active,complete,res://fish/species/sunfish/sunfish.tres,res://fish/species/sunfish/fish_sunfish.png,common
5101,skate_barndoor,implemented,inactive,missing icon,res://fish/species/skate_barndoor/skate_barndoor.tres,,common
5102,manta_ray_giant,implemented,inactive,missing icon,res://fish/species/manta_ray_giant/manta_ray_giant.tres,,common
5103,sawfish_largetooth,implemented,inactive,missing icon,res://fish/species/sawfish_largetooth/sawfish_largetooth.tres,,common
5104,stingray_ocellate_river,implemented,inactive,missing icon,res://fish/species/stingray_ocellate_river/stingray_ocellate_river.tres,,common
5105,stingray_southern,implemented,inactive,missing icon,res://fish/species/stingray_southern/stingray_southern.tres,,common
5201,lionfish_red,implemented,inactive,missing icon,res://fish/species/lionfish_red/lionfish_red.tres,,common
5202,scorpionfish_red,implemented,inactive,missing icon,res://fish/species/scorpionfish_red/scorpionfish_red.tres,,common
5301,moray_green,implemented,inactive,missing icon,res://fish/species/moray_green/moray_green.tres,,common
5401,flounder_peacock,implemented,inactive,missing icon,res://fish/species/flounder_peacock/flounder_peacock.tres,,common
5501,surgeonfish_blue,implemented,inactive,missing icon,res://fish/species/surgeonfish_blue/surgeonfish_blue.tres,,common
5502,parrotfish_rainbow,implemented,inactive,missing icon,res://fish/species/parrotfish_rainbow/parrotfish_rainbow.tres,,common
5503,parrotfish_stoplight,implemented,inactive,missing icon,res://fish/species/parrotfish_stoplight/parrotfish_stoplight.tres,,common
5504,tang_yellow,implemented,inactive,missing icon,res://fish/species/tang_yellow/tang_yellow.tres,,common
5601,trumpetfish_atlantic,implemented,inactive,missing icon,res://fish/species/trumpetfish_atlantic/trumpetfish_atlantic.tres,,common
5602,triggerfish_gray,implemented,inactive,missing icon,res://fish/species/triggerfish_gray/triggerfish_gray.tres,,common
5603,pufferfish_guineafowl,implemented,inactive,missing icon,res://fish/species/pufferfish_guineafowl/pufferfish_guineafowl.tres,,common
5604,cowfish_longhorn,implemented,inactive,missing icon,res://fish/species/cowfish_longhorn/cowfish_longhorn.tres,,common
5605,triggerfish_queen,implemented,inactive,missing icon,res://fish/species/triggerfish_queen/triggerfish_queen.tres,,common
5606,cornetfish_red,implemented,inactive,missing icon,res://fish/species/cornetfish_red/cornetfish_red.tres,,common
5607,porcupinefish_spotted,implemented,inactive,missing icon,res://fish/species/porcupinefish_spotted/porcupinefish_spotted.tres,,common
5608,boxfish_yellow,implemented,inactive,missing icon,res://fish/species/boxfish_yellow/boxfish_yellow.tres,,common
5701,butterflyfish_copperband,implemented,inactive,missing icon,res://fish/species/butterflyfish_copperband/butterflyfish_copperband.tres,,common
5702,clownfish_ocellaris,implemented,inactive,missing icon,res://fish/species/clownfish_ocellaris/clownfish_ocellaris.tres,,common
5703,angelfish_queen,implemented,inactive,missing icon,res://fish/species/angelfish_queen/angelfish_queen.tres,,common
5801,grouper_atlantic_goliath,implemented,inactive,missing icon,res://fish/species/grouper_atlantic_goliath/grouper_atlantic_goliath.tres,,common
5802,trevally_bluefin,implemented,inactive,missing icon,res://fish/species/trevally_bluefin/trevally_bluefin.tres,,common
5803,grouper_giant,implemented,inactive,missing icon,res://fish/species/grouper_giant/grouper_giant.tres,,common
5804,barracuda_great,implemented,inactive,missing icon,res://fish/species/barracuda_great/barracuda_great.tres,,common
5805,grouper_gulf,implemented,active,complete,res://fish/species/grouper_gulf/grouper_gulf.tres,res://fish/species/grouper_gulf/fish_grouper_gulf.png,common
5806,grouper_nassau,implemented,inactive,missing icon,res://fish/species/grouper_nassau/grouper_nassau.tres,,common
5807,grouper_red,implemented,active,complete,res://fish/species/grouper_red/grouper_red.tres,res://fish/species/grouper_red/fish_grouper_red.png,common
5901,chromis_blue_green,implemented,inactive,missing icon,res://fish/species/chromis_blue_green/chromis_blue_green.tres,,common
5902,grunt_bluestriped,implemented,inactive,missing icon,res://fish/species/grunt_bluestriped/grunt_bluestriped.tres,,common
5903,grunt_french,implemented,inactive,missing icon,res://fish/species/grunt_french/grunt_french.tres,,common
5904,damselfish_sergeant_major,implemented,inactive,missing icon,res://fish/species/damselfish_sergeant_major/damselfish_sergeant_major.tres,,common
6001,snapper_lane,implemented,active,complete,res://fish/species/snapper_lane/snapper_lane.tres,res://fish/species/snapper_lane/fish_snapper_lane.png,common
6002,snapper_mangrove,implemented,active,complete,res://fish/species/snapper_mangrove/snapper_mangrove.tres,res://fish/species/snapper_mangrove/fish_snapper_mangrove.png,common
6003,snapper_mutton,implemented,active,complete,res://fish/species/snapper_mutton/snapper_mutton.tres,res://fish/species/snapper_mutton/fish_snapper_mutton.png,common
6004,snapper_red,implemented,active,complete,res://fish/species/snapper_red/snapper_red.tres,res://fish/species/snapper_red/fish_snapper_red.png,common
6101,wrasse_ballan,implemented,inactive,missing icon,res://fish/species/wrasse_ballan/wrasse_ballan.tres,,common
6102,wrasse_cleaner,implemented,inactive,missing icon,res://fish/species/wrasse_cleaner/wrasse_cleaner.tres,,common
6103,hogfish,implemented,inactive,missing icon,res://fish/species/hogfish/hogfish.tres,,common
6201,turtle_green,implemented,inactive,missing icon,res://fish/species/turtle_green/turtle_green.tres,,common
6202,turtle_hawksbill,implemented,inactive,missing icon,res://fish/species/turtle_hawksbill/turtle_hawksbill.tres,,common
6203,turtle_leatherback,implemented,inactive,missing icon,res://fish/species/turtle_leatherback/turtle_leatherback.tres,,common
6204,turtle_loggerhead,implemented,inactive,missing icon,res://fish/species/turtle_loggerhead/turtle_loggerhead.tres,,common
6301,seadragon_leafy,implemented,inactive,missing icon,res://fish/species/seadragon_leafy/seadragon_leafy.tres,,common
6302,seadragon_weedy,implemented,inactive,missing icon,res://fish/species/seadragon_weedy/seadragon_weedy.tres,,common
6401,oyster_black_lip_pearl,implemented,inactive,missing icon,res://fish/species/oyster_black_lip_pearl/oyster_black_lip_pearl.tres,,common
6402,clam_giant,implemented,inactive,missing icon,res://fish/species/clam_giant/clam_giant.tres,,common
6403,clam_geoduck,implemented,inactive,missing icon,res://fish/species/clam_geoduck/clam_geoduck.tres,,common
6404,conch_queen,implemented,inactive,missing icon,res://fish/species/conch_queen/conch_queen.tres,,common
6405,abalone_red,implemented,inactive,missing icon,res://fish/species/abalone_red/abalone_red.tres,,common
6501,squid_bigfin_reef,implemented,inactive,missing icon,res://fish/species/squid_bigfin_reef/squid_bigfin_reef.tres,,common
6502,squid_colossal,implemented,inactive,missing icon,res://fish/species/squid_colossal/squid_colossal.tres,,common
6503,squid_giant,implemented,inactive,missing icon,res://fish/species/squid_giant/squid_giant.tres,,common
6504,squid_humboldt,implemented,inactive,missing icon,res://fish/species/squid_humboldt/squid_humboldt.tres,,common
6601,halfbeak_ballyhoo,implemented,inactive,missing icon,res://fish/species/halfbeak_ballyhoo/halfbeak_ballyhoo.tres,,common
6602,needlefish_hound,implemented,inactive,missing icon,res://fish/species/needlefish_hound/needlefish_hound.tres,,common
6603,flyingfish_tropical,implemented,inactive,missing icon,res://fish/species/flyingfish_tropical/flyingfish_tropical.tres,,common
6701,bass,implemented,active,complete,res://fish/species/bass/bass.tres,res://fish/species/bass/fish_bass_striped.png,bass
6801,croaker_atlantic,implemented,inactive,missing icon,res://fish/species/croaker_atlantic/croaker_atlantic.tres,,common
6802,black_drum,implemented,inactive,missing icon,res://fish/species/black_drum/black_drum.tres,,common
6803,red_drum,implemented,inactive,missing icon,res://fish/species/red_drum/red_drum.tres,,common
6804,mullet_striped,implemented,inactive,missing icon,res://fish/species/mullet_striped/mullet_striped.tres,,common
6805,weakfish,implemented,inactive,missing icon,res://fish/species/weakfish/weakfish.tres,,common
6806,white_perch,implemented,inactive,missing icon,res://fish/species/white_perch/white_perch.tres,,common
6807,croaker_yellowfin,implemented,inactive,missing icon,res://fish/species/croaker_yellowfin/croaker_yellowfin.tres,,common
6901,rockfish_black,implemented,inactive,missing icon,res://fish/species/rockfish_black/rockfish_black.tres,,common
6902,sea_bass_black,implemented,inactive,missing icon,res://fish/species/sea_bass_black/sea_bass_black.tres,,common
6903,rockfish_canary,implemented,inactive,missing icon,res://fish/species/rockfish_canary/rockfish_canary.tres,,common
6904,porgy_scup,implemented,inactive,missing icon,res://fish/species/porgy_scup/porgy_scup.tres,,common
6905,sheepshead,implemented,inactive,missing icon,res://fish/species/sheepshead/sheepshead.tres,,common
6906,tautog,implemented,inactive,missing icon,res://fish/species/tautog/tautog.tres,,common
6907,rockfish_yelloweye,implemented,inactive,missing icon,res://fish/species/rockfish_yelloweye/rockfish_yelloweye.tres,,common
7001,lingcod,implemented,inactive,missing icon,res://fish/species/lingcod/lingcod.tres,,common
7101,milkfish,implemented,inactive,missing icon,res://fish/species/milkfish/milkfish.tres,,common
7201,roosterfish,implemented,inactive,missing icon,res://fish/species/roosterfish/roosterfish.tres,,common
7301,tarpon_atlantic,implemented,inactive,missing icon,res://fish/species/tarpon_atlantic/tarpon_atlantic.tres,,common
7302,barramundi,implemented,inactive,missing icon,res://fish/species/barramundi/barramundi.tres,,common
7303,snook_common,implemented,inactive,missing icon,res://fish/species/snook_common/snook_common.tres,,common
7401,bonefish,implemented,inactive,missing icon,res://fish/species/bonefish/bonefish.tres,,common
7402,pompano_florida,implemented,inactive,missing icon,res://fish/species/pompano_florida/pompano_florida.tres,,common
7403,ladyfish,implemented,inactive,missing icon,res://fish/species/ladyfish/ladyfish.tres,,common
7404,permit,implemented,inactive,missing icon,res://fish/species/permit/permit.tres,,common
7501,knifefish_clown,implemented,inactive,missing icon,res://fish/species/knifefish_clown/knifefish_clown.tres,,common
7502,loach_clown,implemented,inactive,missing icon,res://fish/species/loach_clown/loach_clown.tres,,common
7503,discus,implemented,inactive,missing icon,res://fish/species/discus/discus.tres,,common
7504,angelfish_freshwater,implemented,inactive,missing icon,res://fish/species/angelfish_freshwater/angelfish_freshwater.tres,,common
7505,gourami_giant,implemented,inactive,missing icon,res://fish/species/gourami_giant/gourami_giant.tres,,common
7506,tilapia_nile,implemented,inactive,missing icon,res://fish/species/tilapia_nile/tilapia_nile.tres,,common
7507,oscar,implemented,inactive,missing icon,res://fish/species/oscar/oscar.tres,,common
7508,betta_siamese,implemented,inactive,missing icon,res://fish/species/betta_siamese/betta_siamese.tres,,common
7509,tambaqui,implemented,inactive,missing icon,res://fish/species/tambaqui/tambaqui.tres,,common
7510,catfish_walking,implemented,inactive,missing icon,res://fish/species/catfish_walking/catfish_walking.tres,,common
7601,snakehead_giant,implemented,inactive,missing icon,res://fish/species/snakehead_giant/snakehead_giant.tres,,common
7602,dorado_golden,implemented,inactive,missing icon,res://fish/species/dorado_golden/dorado_golden.tres,,common
7603,mahseer_golden,implemented,inactive,missing icon,res://fish/species/mahseer_golden/mahseer_golden.tres,,common
7604,peacock_bass,implemented,inactive,missing icon,res://fish/species/peacock_bass/peacock_bass.tres,,common
7605,piranha_red_bellied,implemented,inactive,missing icon,res://fish/species/piranha_red_bellied/piranha_red_bellied.tres,,common
7606,arowana_silver,implemented,inactive,missing icon,res://fish/species/arowana_silver/arowana_silver.tres,,common
7701,whale_blue,implemented,inactive,missing icon,res://fish/species/whale_blue/whale_blue.tres,,common
7702,dolphin_bottlenose,implemented,inactive,missing icon,res://fish/species/dolphin_bottlenose/dolphin_bottlenose.tres,,common
7703,whale_humpback,implemented,inactive,missing icon,res://fish/species/whale_humpback/whale_humpback.tres,,common
7704,whale_killer,implemented,inactive,missing icon,res://fish/species/whale_killer/whale_killer.tres,,common
7705,whale_sperm,implemented,inactive,missing icon,res://fish/species/whale_sperm/whale_sperm.tres,,common
1 catalog_number id implementation_status active_status art_status fish_resource_path display_texture_path catch_profile_id
2 101 bowfin implemented inactive missing icon res://fish/species/bowfin/bowfin.tres common
3 102 sturgeon_lake implemented inactive missing icon res://fish/species/sturgeon_lake/sturgeon_lake.tres common
4 103 gar_longnose implemented inactive missing icon res://fish/species/gar_longnose/gar_longnose.tres common
5 104 paddlefish implemented inactive missing icon res://fish/species/paddlefish/paddlefish.tres common
6 105 sturgeon_shovelnose implemented inactive missing icon res://fish/species/sturgeon_shovelnose/sturgeon_shovelnose.tres common
7 106 gar_spotted implemented inactive missing icon res://fish/species/gar_spotted/gar_spotted.tres common
8 107 lungfish_west_african implemented inactive missing icon res://fish/species/lungfish_west_african/lungfish_west_african.tres common
9 201 mudskipper_atlantic implemented inactive missing icon res://fish/species/mudskipper_atlantic/mudskipper_atlantic.tres common
10 202 foureyes_largescale implemented inactive missing icon res://fish/species/foureyes_largescale/foureyes_largescale.tres common
11 301 mullet_red implemented inactive missing icon res://fish/species/mullet_red/mullet_red.tres common
12 401 plaice_european implemented inactive missing icon res://fish/species/plaice_european/plaice_european.tres common
13 402 flounder_summer implemented inactive missing icon res://fish/species/flounder_summer/flounder_summer.tres common
14 403 flounder_winter implemented inactive missing icon res://fish/species/flounder_winter/flounder_winter.tres common
15 501 dugong implemented inactive missing icon res://fish/species/dugong/dugong.tres common
16 502 seal_harbor implemented inactive missing icon res://fish/species/seal_harbor/seal_harbor.tres common
17 503 sea_otter implemented inactive missing icon res://fish/species/sea_otter/sea_otter.tres common
18 504 walrus implemented inactive missing icon res://fish/species/walrus/walrus.tres common
19 505 manatee_west_indian implemented inactive missing icon res://fish/species/manatee_west_indian/manatee_west_indian.tres common
20 601 pipefish_bay implemented inactive missing icon res://fish/species/pipefish_bay/pipefish_bay.tres common
21 602 seahorse_lined implemented inactive missing icon res://fish/species/seahorse_lined/seahorse_lined.tres common
22 603 monkfish implemented inactive missing icon res://fish/species/monkfish/monkfish.tres common
23 604 tripletail implemented inactive missing icon res://fish/species/tripletail/tripletail.tres common
24 701 mackerel_atlantic implemented active complete res://fish/species/mackerel_atlantic/mackerel_atlantic.tres res://fish/species/mackerel_atlantic/fish_mackerel_atlantic.png common
25 702 bluefish implemented inactive missing icon res://fish/species/bluefish/bluefish.tres common
26 703 mackerel_cero implemented active complete res://fish/species/mackerel_cero/mackerel_cero.tres res://fish/species/mackerel_cero/fish_mackerel_cero.png common
27 704 mackerel_chub implemented active complete res://fish/species/mackerel_chub/mackerel_chub.tres res://fish/species/mackerel_chub/fish_mackerel_chub.png common
28 705 jack_crevalle implemented inactive missing icon res://fish/species/jack_crevalle/jack_crevalle.tres common
29 706 mackerel_king implemented active complete res://fish/species/mackerel_king/mackerel_king.tres res://fish/species/mackerel_king/fish_mackerel_king.png common
30 707 mackerel_spanish implemented active complete res://fish/species/mackerel_spanish/mackerel_spanish.tres res://fish/species/mackerel_spanish/fish_mackerel_spanish.png common
31 708 queenfish_talang implemented inactive missing icon res://fish/species/queenfish_talang/queenfish_talang.tres common
32 801 sand_lance_american implemented inactive missing icon res://fish/species/sand_lance_american/sand_lance_american.tres common
33 802 menhaden_atlantic implemented inactive missing icon res://fish/species/menhaden_atlantic/menhaden_atlantic.tres common
34 803 pomfret_black implemented active complete res://fish/species/pomfret_black/pomfret_black.tres res://fish/species/pomfret_black/fish_pomfret_black.png common
35 804 pomfret_chinese implemented active complete res://fish/species/pomfret_chinese/pomfret_chinese.tres res://fish/species/pomfret_chinese/fish_pomfret_chinese.png common
36 805 anchovy_european implemented active complete res://fish/species/anchovy_european/anchovy_european.tres res://fish/species/anchovy_european/fish_anchovy_european.png common
37 806 sardine_european implemented inactive missing icon res://fish/species/sardine_european/sardine_european.tres common
38 807 pomfret_golden implemented active complete res://fish/species/pomfret_golden/pomfret_golden.tres res://fish/species/pomfret_golden/fish_pomfret_golden.png common
39 808 anchovy_northern implemented active complete res://fish/species/anchovy_northern/anchovy_northern.tres res://fish/species/anchovy_northern/fish_anchovy_northern.png common
40 809 sardine_pacific implemented inactive missing icon res://fish/species/sardine_pacific/sardine_pacific.tres common
41 810 pomfret_white implemented active complete res://fish/species/pomfret_white/pomfret_white.tres res://fish/species/pomfret_white/fish_pomfret_white.png common
42 901 shark_blacktip implemented inactive missing icon res://fish/species/shark_blacktip/shark_blacktip.tres common
43 902 shark_great_hammerhead implemented inactive missing icon res://fish/species/shark_great_hammerhead/shark_great_hammerhead.tres common
44 903 shark_great_white implemented inactive missing icon res://fish/species/shark_great_white/shark_great_white.tres common
45 904 shark_tiger implemented inactive missing icon res://fish/species/shark_tiger/shark_tiger.tres common
46 905 shark_whale implemented inactive missing icon res://fish/species/shark_whale/shark_whale.tres common
47 1001 burbot implemented inactive missing icon res://fish/species/burbot/burbot.tres common
48 1002 cisco implemented inactive missing icon res://fish/species/cisco/cisco.tres common
49 1003 whitefish_lake implemented inactive missing icon res://fish/species/whitefish_lake/whitefish_lake.tres common
50 1101 char_arctic implemented inactive missing icon res://fish/species/char_arctic/char_arctic.tres common
51 1102 grayling_arctic implemented inactive missing icon res://fish/species/grayling_arctic/grayling_arctic.tres common
52 1103 trout_brown implemented inactive missing icon res://fish/species/trout_brown/trout_brown.tres common
53 1104 trout_cutthroat implemented active complete res://fish/species/trout_cutthroat/trout_cutthroat.tres res://fish/species/trout_cutthroat/fish_trout_cutthroat.png common
54 1105 trout_golden implemented active complete res://fish/species/trout_golden/trout_golden.tres res://fish/species/trout_golden/fish_trout_golden.png common
55 1106 trout_rainbow implemented active complete res://fish/species/trout_rainbow/trout_rainbow.tres res://fish/species/trout_rainbow/fish_trout_rainbow.png common
56 1201 wolffish_atlantic implemented inactive missing icon res://fish/species/wolffish_atlantic/wolffish_atlantic.tres common
57 1202 cusk implemented inactive missing icon res://fish/species/cusk/cusk.tres common
58 1203 wolffish_spotted implemented inactive missing icon res://fish/species/wolffish_spotted/wolffish_spotted.tres common
59 1301 herring_atlantic implemented inactive missing icon res://fish/species/herring_atlantic/herring_atlantic.tres common
60 1302 capelin implemented inactive missing icon res://fish/species/capelin/capelin.tres common
61 1303 sprat_european implemented inactive missing icon res://fish/species/sprat_european/sprat_european.tres common
62 1304 herring_pacific implemented inactive missing icon res://fish/species/herring_pacific/herring_pacific.tres common
63 1401 pollock_alaska implemented inactive missing icon res://fish/species/pollock_alaska/pollock_alaska.tres common
64 1402 cod_atlantic implemented inactive missing icon res://fish/species/cod_atlantic/cod_atlantic.tres common
65 1403 pollock_atlantic implemented inactive missing icon res://fish/species/pollock_atlantic/pollock_atlantic.tres common
66 1404 sole_dover implemented inactive missing icon res://fish/species/sole_dover/sole_dover.tres common
67 1405 haddock implemented inactive missing icon res://fish/species/haddock/haddock.tres common
68 1406 cod_pacific implemented inactive missing icon res://fish/species/cod_pacific/cod_pacific.tres common
69 1407 hake_pacific implemented inactive missing icon res://fish/species/hake_pacific/hake_pacific.tres common
70 1408 hake_silver implemented inactive missing icon res://fish/species/hake_silver/hake_silver.tres common
71 1501 nautilus_chambered implemented inactive missing icon res://fish/species/nautilus_chambered/nautilus_chambered.tres common
72 1502 cuttlefish_common implemented inactive missing icon res://fish/species/cuttlefish_common/cuttlefish_common.tres common
73 1503 cuttlefish_flamboyant implemented inactive missing icon res://fish/species/cuttlefish_flamboyant/cuttlefish_flamboyant.tres common
74 1601 tilefish_blueline implemented inactive missing icon res://fish/species/tilefish_blueline/tilefish_blueline.tres common
75 1602 tilefish_golden implemented inactive missing icon res://fish/species/tilefish_golden/tilefish_golden.tres common
76 1603 ocean_perch_pacific implemented inactive missing icon res://fish/species/ocean_perch_pacific/ocean_perch_pacific.tres common
77 1604 sea_bass_chilean implemented inactive missing icon res://fish/species/sea_bass_chilean/sea_bass_chilean.tres common
78 1605 sablefish implemented inactive missing icon res://fish/species/sablefish/sablefish.tres common
79 1606 wreckfish implemented inactive missing icon res://fish/species/wreckfish/wreckfish.tres common
80 1701 oarfish_giant implemented inactive missing icon res://fish/species/oarfish_giant/oarfish_giant.tres common
81 1702 coelacanth_west_indian implemented inactive missing icon res://fish/species/coelacanth_west_indian/coelacanth_west_indian.tres common
82 1801 anglerfish_black_seadevil implemented inactive missing icon res://fish/species/anglerfish_black_seadevil/anglerfish_black_seadevil.tres common
83 1802 fangtooth_common implemented inactive missing icon res://fish/species/fangtooth_common/fangtooth_common.tres common
84 1803 gulper_eel implemented inactive missing icon res://fish/species/gulper_eel/gulper_eel.tres common
85 1804 barreleye_pacific implemented inactive missing icon res://fish/species/barreleye_pacific/barreleye_pacific.tres common
86 1805 blobfish_smooth_head implemented inactive missing icon res://fish/species/blobfish_smooth_head/blobfish_smooth_head.tres common
87 1806 lanternfish_spotted implemented inactive missing icon res://fish/species/lanternfish_spotted/lanternfish_spotted.tres common
88 1901 sea_star_crown_of_thorns implemented inactive missing icon res://fish/species/sea_star_crown_of_thorns/sea_star_crown_of_thorns.tres common
89 1902 sea_cucumber_giant_california implemented inactive missing icon res://fish/species/sea_cucumber_giant_california/sea_cucumber_giant_california.tres common
90 1903 urchin_purple implemented inactive missing icon res://fish/species/urchin_purple/urchin_purple.tres common
91 1904 sand_dollar implemented inactive missing icon res://fish/species/sand_dollar/sand_dollar.tres common
92 1905 sea_star_sunflower implemented inactive missing icon res://fish/species/sea_star_sunflower/sea_star_sunflower.tres common
93 2001 axolotl implemented inactive missing icon res://fish/species/axolotl/axolotl.tres common
94 2002 hellbender implemented inactive missing icon res://fish/species/hellbender/hellbender.tres common
95 2101 guppy implemented inactive missing icon res://fish/species/guppy/guppy.tres common
96 2102 tetra_neon implemented inactive missing icon res://fish/species/tetra_neon/tetra_neon.tres common
97 2103 danio_zebra implemented inactive missing icon res://fish/species/danio_zebra/danio_zebra.tres common
98 2201 largemouth_bass implemented inactive missing icon res://fish/species/largemouth_bass/largemouth_bass.tres common
99 2202 smallmouth_bass implemented inactive missing icon res://fish/species/smallmouth_bass/smallmouth_bass.tres common
100 2301 buffalo_bigmouth implemented inactive missing icon res://fish/species/buffalo_bigmouth/buffalo_bigmouth.tres common
101 2302 redhorse_golden implemented inactive missing icon res://fish/species/redhorse_golden/redhorse_golden.tres common
102 2303 quillback implemented inactive missing icon res://fish/species/quillback/quillback.tres common
103 2304 buffalo_smallmouth implemented inactive missing icon res://fish/species/buffalo_smallmouth/buffalo_smallmouth.tres common
104 2305 sucker_white implemented inactive missing icon res://fish/species/sucker_white/sucker_white.tres common
105 2401 bullhead_black implemented inactive missing icon res://fish/species/bullhead_black/bullhead_black.tres common
106 2402 catfish_blue implemented active complete res://fish/species/catfish_blue/catfish_blue.tres res://fish/species/catfish_blue/fish_catfish_blue.png bass
107 2403 bullhead_brown implemented inactive missing icon res://fish/species/bullhead_brown/bullhead_brown.tres common
108 2404 catfish_channel implemented active complete res://fish/species/catfish_channel/catfish_channel.tres res://fish/species/catfish_channel/fish_catfish_channel.png common
109 2405 catfish_flathead implemented active complete res://fish/species/catfish_flathead/catfish_flathead.tres res://fish/species/catfish_flathead/fish_catfish_flathead.png bass
110 2406 madtom_tadpole implemented inactive missing icon res://fish/species/madtom_tadpole/madtom_tadpole.tres common
111 2407 catfish_white implemented active complete res://fish/species/catfish_white/catfish_white.tres res://fish/species/catfish_white/fish_catfish_white.png common
112 2408 bullhead_yellow implemented inactive missing icon res://fish/species/bullhead_yellow/bullhead_yellow.tres common
113 2501 barbel_common implemented inactive missing icon res://fish/species/barbel_common/barbel_common.tres common
114 2502 bream_common implemented inactive missing icon res://fish/species/bream_common/bream_common.tres common
115 2503 carp implemented active complete res://fish/species/carp/carp.tres res://fish/species/carp/fish_carp_common.png carp
116 2504 roach_common implemented inactive missing icon res://fish/species/roach_common/roach_common.tres common
117 2505 chub_european implemented active complete res://fish/species/chub_european/chub_european.tres res://fish/species/chub_european/fish_chub_european.png common
118 2506 fallfish implemented inactive missing icon res://fish/species/fallfish/fallfish.tres common
119 2507 ide implemented inactive missing icon res://fish/species/ide/ide.tres common
120 2508 rudd implemented inactive missing icon res://fish/species/rudd/rudd.tres common
121 2509 tench implemented inactive missing icon res://fish/species/tench/tench.tres common
122 2601 crayfish_red_swamp implemented inactive missing icon res://fish/species/crayfish_red_swamp/crayfish_red_swamp.tres common
123 2701 gar_alligator implemented inactive missing icon res://fish/species/gar_alligator/gar_alligator.tres common
124 2702 arapaima implemented inactive missing icon res://fish/species/arapaima/arapaima.tres common
125 2703 tigerfish_goliath implemented inactive missing icon res://fish/species/tigerfish_goliath/tigerfish_goliath.tres common
126 2704 muskellunge implemented inactive missing icon res://fish/species/muskellunge/muskellunge.tres common
127 2801 shiner_common implemented inactive missing icon res://fish/species/shiner_common/shiner_common.tres common
128 2802 chub_creek implemented inactive missing icon res://fish/species/chub_creek/chub_creek.tres common
129 2803 shiner_emerald implemented inactive missing icon res://fish/species/shiner_emerald/shiner_emerald.tres common
130 2804 minnow_fathead implemented inactive missing icon res://fish/species/minnow_fathead/minnow_fathead.tres common
131 2805 chub_flame implemented active complete res://fish/species/chub_flame/chub_flame.tres res://fish/species/chub_flame/fish_chub_flame.png common
132 2806 shiner_golden implemented inactive missing icon res://fish/species/shiner_golden/shiner_golden.tres common
133 2807 chub_lake implemented active complete res://fish/species/chub_lake/chub_lake.tres res://fish/species/chub_lake/fish_chub_lake.png common
134 2901 electric_eel implemented inactive missing icon res://fish/species/electric_eel/electric_eel.tres common
135 2902 freshwater_drum implemented inactive missing icon res://fish/species/freshwater_drum/freshwater_drum.tres common
136 2903 goldeye implemented inactive missing icon res://fish/species/goldeye/goldeye.tres common
137 2904 mooneye implemented inactive missing icon res://fish/species/mooneye/mooneye.tres common
138 2905 loach_weather implemented inactive missing icon res://fish/species/loach_weather/loach_weather.tres common
139 3001 goldfish_bubbleeye implemented active complete res://fish/species/goldfish_bubbleeye/goldfish_bubbleeye.tres res://fish/species/goldfish_bubbleeye/fish_goldfish_bubbleeye.png common
140 3002 goldfish implemented active complete res://fish/species/goldfish/goldfish.tres res://fish/species/goldfish/fish_goldfish.png common
141 3003 koi implemented inactive missing icon res://fish/species/koi/koi.tres common
142 3101 crappie_black implemented inactive missing icon res://fish/species/crappie_black/crappie_black.tres common
143 3102 bluegill implemented active complete res://fish/species/bluegill/bluegill.tres res://fish/species/bluegill/fish_bluegill.png common
144 3103 green_sunfish implemented inactive missing icon res://fish/species/green_sunfish/green_sunfish.tres common
145 3104 pumpkinseed implemented inactive missing icon res://fish/species/pumpkinseed/pumpkinseed.tres common
146 3105 redear_sunfish implemented inactive missing icon res://fish/species/redear_sunfish/redear_sunfish.tres common
147 3106 warmouth implemented inactive missing icon res://fish/species/warmouth/warmouth.tres common
148 3107 crappie_white implemented inactive missing icon res://fish/species/crappie_white/crappie_white.tres common
149 3201 yellow_perch implemented inactive missing icon res://fish/species/yellow_perch/yellow_perch.tres common
150 3301 pickerel_chain implemented inactive missing icon res://fish/species/pickerel_chain/pickerel_chain.tres common
151 3302 pickerel_grass implemented inactive missing icon res://fish/species/pickerel_grass/pickerel_grass.tres common
152 3303 pike_northern implemented inactive missing icon res://fish/species/pike_northern/pike_northern.tres common
153 3304 sauger implemented active complete res://fish/species/sauger/sauger.tres res://fish/species/sauger/fish_sauger.png common
154 3305 saugeye implemented active complete res://fish/species/saugeye/saugeye.tres res://fish/species/saugeye/fish_saugeye.png common
155 3306 walleye implemented active complete res://fish/species/walleye/walleye.tres res://fish/species/walleye/fish_walleye.png common
156 3401 goby_round implemented active complete res://fish/species/goby_round/goby_round.tres res://fish/species/goby_round/fish_goby_round.png common
157 3501 jelly_crystal implemented inactive missing icon res://fish/species/jelly_crystal/jelly_crystal.tres common
158 3502 jelly_lions_mane implemented inactive missing icon res://fish/species/jelly_lions_mane/jelly_lions_mane.tres common
159 3503 jelly_moon implemented inactive missing icon res://fish/species/jelly_moon/jelly_moon.tres common
160 3504 jelly_pacific_sea_nettle implemented inactive missing icon res://fish/species/jelly_pacific_sea_nettle/jelly_pacific_sea_nettle.tres common
161 3505 jelly_sea_wasp implemented inactive missing icon res://fish/species/jelly_sea_wasp/jelly_sea_wasp.tres common
162 3601 pompano_african implemented inactive missing icon res://fish/species/pompano_african/pompano_african.tres common
163 3602 cobia implemented inactive missing icon res://fish/species/cobia/cobia.tres common
164 3603 trevally_giant implemented inactive missing icon res://fish/species/trevally_giant/trevally_giant.tres common
165 3604 amberjack_greater implemented inactive missing icon res://fish/species/amberjack_greater/amberjack_greater.tres common
166 3605 amberjack_lesser implemented inactive missing icon res://fish/species/amberjack_lesser/amberjack_lesser.tres common
167 3701 halibut_atlantic implemented inactive missing icon res://fish/species/halibut_atlantic/halibut_atlantic.tres common
168 3702 halibut_pacific implemented inactive missing icon res://fish/species/halibut_pacific/halibut_pacific.tres common
169 3703 turbot implemented inactive missing icon res://fish/species/turbot/turbot.tres common
170 3801 lobster_american implemented inactive missing icon res://fish/species/lobster_american/lobster_american.tres common
171 3802 krill_antarctic implemented inactive missing icon res://fish/species/krill_antarctic/krill_antarctic.tres common
172 3803 lobster_caribbean_spiny implemented inactive missing icon res://fish/species/lobster_caribbean_spiny/lobster_caribbean_spiny.tres common
173 3804 shrimp_peacock_mantis implemented inactive missing icon res://fish/species/shrimp_peacock_mantis/shrimp_peacock_mantis.tres common
174 3805 shrimp_skunk_cleaner implemented inactive missing icon res://fish/species/shrimp_skunk_cleaner/shrimp_skunk_cleaner.tres common
175 3901 crab_ghost implemented inactive missing icon res://fish/species/crab_ghost/crab_ghost.tres common
176 3902 crab_blue implemented inactive missing icon res://fish/species/crab_blue/crab_blue.tres common
177 3903 crab_dungeness implemented inactive missing icon res://fish/species/crab_dungeness/crab_dungeness.tres common
178 3904 crab_japanese_spider implemented inactive missing icon res://fish/species/crab_japanese_spider/crab_japanese_spider.tres common
179 3905 crab_red_king implemented inactive missing icon res://fish/species/crab_red_king/crab_red_king.tres common
180 4001 eel_american implemented inactive missing icon res://fish/species/eel_american/eel_american.tres common
181 4002 eel_european implemented inactive missing icon res://fish/species/eel_european/eel_european.tres common
182 4101 smelt_rainbow implemented inactive missing icon res://fish/species/smelt_rainbow/smelt_rainbow.tres common
183 4201 smelt_eulachon implemented inactive missing icon res://fish/species/smelt_eulachon/smelt_eulachon.tres common
184 4301 sturgeon_white implemented inactive missing icon res://fish/species/sturgeon_white/sturgeon_white.tres common
185 4401 salmon_atlantic implemented active complete res://fish/species/salmon_atlantic/salmon_atlantic.tres res://fish/species/salmon_atlantic/fish_salmon_atlantic.png bass
186 4402 salmon_chum implemented active complete res://fish/species/salmon_chum/salmon_chum.tres res://fish/species/salmon_chum/fish_salmon_chum.png bass
187 4403 salmon_coho implemented active complete res://fish/species/salmon_coho/salmon_coho.tres res://fish/species/salmon_coho/fish_salmon_coho.png bass
188 4404 salmon_pink implemented active complete res://fish/species/salmon_pink/salmon_pink.tres res://fish/species/salmon_pink/fish_salmon_pink.png bass
189 4405 salmon_sockeye implemented active complete res://fish/species/salmon_sockeye/salmon_sockeye.tres res://fish/species/salmon_sockeye/fish_salmon_sockeye.png bass
190 4501 trout_steelhead implemented active complete res://fish/species/trout_steelhead/trout_steelhead.tres res://fish/species/trout_steelhead/fish_trout_steelhead.png common
191 4601 marlin_black implemented active complete res://fish/species/marlin_black/marlin_black.tres res://fish/species/marlin_black/fish_marlin_black.png common
192 4602 marlin_blue implemented active complete res://fish/species/marlin_blue/marlin_blue.tres res://fish/species/marlin_blue/fish_marlin_blue.png common
193 4603 sailfish implemented active complete res://fish/species/sailfish/sailfish.tres res://fish/species/sailfish/fish_sailfish.png common
194 4604 swordfish implemented active complete res://fish/species/swordfish/swordfish.tres res://fish/species/swordfish/fish_swordfish.png common
195 4605 marlin_white implemented active complete res://fish/species/marlin_white/marlin_white.tres res://fish/species/marlin_white/fish_marlin_white.png common
196 4701 mahi_mahi implemented inactive missing icon res://fish/species/mahi_mahi/mahi_mahi.tres common
197 4702 opah implemented inactive missing icon res://fish/species/opah/opah.tres common
198 4703 wahoo implemented inactive missing icon res://fish/species/wahoo/wahoo.tres common
199 4801 tuna_albacore implemented active complete res://fish/species/tuna_albacore/tuna_albacore.tres res://fish/species/tuna_albacore/fish_tuna_albacore.png bass
200 4802 tuna_bigeye implemented active complete res://fish/species/tuna_bigeye/tuna_bigeye.tres res://fish/species/tuna_bigeye/fish_tuna_bigeye.png bass
201 4803 tuna_bluefin implemented active complete res://fish/species/tuna_bluefin/tuna_bluefin.tres res://fish/species/tuna_bluefin/fish_tuna_bluefin.png bass
202 4804 tuna_skipjack implemented active complete res://fish/species/tuna_skipjack/tuna_skipjack.tres res://fish/species/tuna_skipjack/fish_tuna_skipjack.png bass
203 4805 tuna_yellowfin implemented active complete res://fish/species/tuna_yellowfin/tuna_yellowfin.tres res://fish/species/tuna_yellowfin/fish_tuna_yellowfin.png bass
204 4901 octopus_common implemented inactive missing icon res://fish/species/octopus_common/octopus_common.tres common
205 4902 octopus_day implemented inactive missing icon res://fish/species/octopus_day/octopus_day.tres common
206 4903 octopus_giant_pacific implemented inactive missing icon res://fish/species/octopus_giant_pacific/octopus_giant_pacific.tres common
207 4904 octopus_greater_blue_ringed implemented inactive missing icon res://fish/species/octopus_greater_blue_ringed/octopus_greater_blue_ringed.tres common
208 5001 sunfish implemented active complete res://fish/species/sunfish/sunfish.tres res://fish/species/sunfish/fish_sunfish.png common
209 5101 skate_barndoor implemented inactive missing icon res://fish/species/skate_barndoor/skate_barndoor.tres common
210 5102 manta_ray_giant implemented inactive missing icon res://fish/species/manta_ray_giant/manta_ray_giant.tres common
211 5103 sawfish_largetooth implemented inactive missing icon res://fish/species/sawfish_largetooth/sawfish_largetooth.tres common
212 5104 stingray_ocellate_river implemented inactive missing icon res://fish/species/stingray_ocellate_river/stingray_ocellate_river.tres common
213 5105 stingray_southern implemented inactive missing icon res://fish/species/stingray_southern/stingray_southern.tres common
214 5201 lionfish_red implemented inactive missing icon res://fish/species/lionfish_red/lionfish_red.tres common
215 5202 scorpionfish_red implemented inactive missing icon res://fish/species/scorpionfish_red/scorpionfish_red.tres common
216 5301 moray_green implemented inactive missing icon res://fish/species/moray_green/moray_green.tres common
217 5401 flounder_peacock implemented inactive missing icon res://fish/species/flounder_peacock/flounder_peacock.tres common
218 5501 surgeonfish_blue implemented inactive missing icon res://fish/species/surgeonfish_blue/surgeonfish_blue.tres common
219 5502 parrotfish_rainbow implemented inactive missing icon res://fish/species/parrotfish_rainbow/parrotfish_rainbow.tres common
220 5503 parrotfish_stoplight implemented inactive missing icon res://fish/species/parrotfish_stoplight/parrotfish_stoplight.tres common
221 5504 tang_yellow implemented inactive missing icon res://fish/species/tang_yellow/tang_yellow.tres common
222 5601 trumpetfish_atlantic implemented inactive missing icon res://fish/species/trumpetfish_atlantic/trumpetfish_atlantic.tres common
223 5602 triggerfish_gray implemented inactive missing icon res://fish/species/triggerfish_gray/triggerfish_gray.tres common
224 5603 pufferfish_guineafowl implemented inactive missing icon res://fish/species/pufferfish_guineafowl/pufferfish_guineafowl.tres common
225 5604 cowfish_longhorn implemented inactive missing icon res://fish/species/cowfish_longhorn/cowfish_longhorn.tres common
226 5605 triggerfish_queen implemented inactive missing icon res://fish/species/triggerfish_queen/triggerfish_queen.tres common
227 5606 cornetfish_red implemented inactive missing icon res://fish/species/cornetfish_red/cornetfish_red.tres common
228 5607 porcupinefish_spotted implemented inactive missing icon res://fish/species/porcupinefish_spotted/porcupinefish_spotted.tres common
229 5608 boxfish_yellow implemented inactive missing icon res://fish/species/boxfish_yellow/boxfish_yellow.tres common
230 5701 butterflyfish_copperband implemented inactive missing icon res://fish/species/butterflyfish_copperband/butterflyfish_copperband.tres common
231 5702 clownfish_ocellaris implemented inactive missing icon res://fish/species/clownfish_ocellaris/clownfish_ocellaris.tres common
232 5703 angelfish_queen implemented inactive missing icon res://fish/species/angelfish_queen/angelfish_queen.tres common
233 5801 grouper_atlantic_goliath implemented inactive missing icon res://fish/species/grouper_atlantic_goliath/grouper_atlantic_goliath.tres common
234 5802 trevally_bluefin implemented inactive missing icon res://fish/species/trevally_bluefin/trevally_bluefin.tres common
235 5803 grouper_giant implemented inactive missing icon res://fish/species/grouper_giant/grouper_giant.tres common
236 5804 barracuda_great implemented inactive missing icon res://fish/species/barracuda_great/barracuda_great.tres common
237 5805 grouper_gulf implemented active complete res://fish/species/grouper_gulf/grouper_gulf.tres res://fish/species/grouper_gulf/fish_grouper_gulf.png common
238 5806 grouper_nassau implemented inactive missing icon res://fish/species/grouper_nassau/grouper_nassau.tres common
239 5807 grouper_red implemented active complete res://fish/species/grouper_red/grouper_red.tres res://fish/species/grouper_red/fish_grouper_red.png common
240 5901 chromis_blue_green implemented inactive missing icon res://fish/species/chromis_blue_green/chromis_blue_green.tres common
241 5902 grunt_bluestriped implemented inactive missing icon res://fish/species/grunt_bluestriped/grunt_bluestriped.tres common
242 5903 grunt_french implemented inactive missing icon res://fish/species/grunt_french/grunt_french.tres common
243 5904 damselfish_sergeant_major implemented inactive missing icon res://fish/species/damselfish_sergeant_major/damselfish_sergeant_major.tres common
244 6001 snapper_lane implemented active complete res://fish/species/snapper_lane/snapper_lane.tres res://fish/species/snapper_lane/fish_snapper_lane.png common
245 6002 snapper_mangrove implemented active complete res://fish/species/snapper_mangrove/snapper_mangrove.tres res://fish/species/snapper_mangrove/fish_snapper_mangrove.png common
246 6003 snapper_mutton implemented active complete res://fish/species/snapper_mutton/snapper_mutton.tres res://fish/species/snapper_mutton/fish_snapper_mutton.png common
247 6004 snapper_red implemented active complete res://fish/species/snapper_red/snapper_red.tres res://fish/species/snapper_red/fish_snapper_red.png common
248 6101 wrasse_ballan implemented inactive missing icon res://fish/species/wrasse_ballan/wrasse_ballan.tres common
249 6102 wrasse_cleaner implemented inactive missing icon res://fish/species/wrasse_cleaner/wrasse_cleaner.tres common
250 6103 hogfish implemented inactive missing icon res://fish/species/hogfish/hogfish.tres common
251 6201 turtle_green implemented inactive missing icon res://fish/species/turtle_green/turtle_green.tres common
252 6202 turtle_hawksbill implemented inactive missing icon res://fish/species/turtle_hawksbill/turtle_hawksbill.tres common
253 6203 turtle_leatherback implemented inactive missing icon res://fish/species/turtle_leatherback/turtle_leatherback.tres common
254 6204 turtle_loggerhead implemented inactive missing icon res://fish/species/turtle_loggerhead/turtle_loggerhead.tres common
255 6301 seadragon_leafy implemented inactive missing icon res://fish/species/seadragon_leafy/seadragon_leafy.tres common
256 6302 seadragon_weedy implemented inactive missing icon res://fish/species/seadragon_weedy/seadragon_weedy.tres common
257 6401 oyster_black_lip_pearl implemented inactive missing icon res://fish/species/oyster_black_lip_pearl/oyster_black_lip_pearl.tres common
258 6402 clam_giant implemented inactive missing icon res://fish/species/clam_giant/clam_giant.tres common
259 6403 clam_geoduck implemented inactive missing icon res://fish/species/clam_geoduck/clam_geoduck.tres common
260 6404 conch_queen implemented inactive missing icon res://fish/species/conch_queen/conch_queen.tres common
261 6405 abalone_red implemented inactive missing icon res://fish/species/abalone_red/abalone_red.tres common
262 6501 squid_bigfin_reef implemented inactive missing icon res://fish/species/squid_bigfin_reef/squid_bigfin_reef.tres common
263 6502 squid_colossal implemented inactive missing icon res://fish/species/squid_colossal/squid_colossal.tres common
264 6503 squid_giant implemented inactive missing icon res://fish/species/squid_giant/squid_giant.tres common
265 6504 squid_humboldt implemented inactive missing icon res://fish/species/squid_humboldt/squid_humboldt.tres common
266 6601 halfbeak_ballyhoo implemented inactive missing icon res://fish/species/halfbeak_ballyhoo/halfbeak_ballyhoo.tres common
267 6602 needlefish_hound implemented inactive missing icon res://fish/species/needlefish_hound/needlefish_hound.tres common
268 6603 flyingfish_tropical implemented inactive missing icon res://fish/species/flyingfish_tropical/flyingfish_tropical.tres common
269 6701 bass implemented active complete res://fish/species/bass/bass.tres res://fish/species/bass/fish_bass_striped.png bass
270 6801 croaker_atlantic implemented inactive missing icon res://fish/species/croaker_atlantic/croaker_atlantic.tres common
271 6802 black_drum implemented inactive missing icon res://fish/species/black_drum/black_drum.tres common
272 6803 red_drum implemented inactive missing icon res://fish/species/red_drum/red_drum.tres common
273 6804 mullet_striped implemented inactive missing icon res://fish/species/mullet_striped/mullet_striped.tres common
274 6805 weakfish implemented inactive missing icon res://fish/species/weakfish/weakfish.tres common
275 6806 white_perch implemented inactive missing icon res://fish/species/white_perch/white_perch.tres common
276 6807 croaker_yellowfin implemented inactive missing icon res://fish/species/croaker_yellowfin/croaker_yellowfin.tres common
277 6901 rockfish_black implemented inactive missing icon res://fish/species/rockfish_black/rockfish_black.tres common
278 6902 sea_bass_black implemented inactive missing icon res://fish/species/sea_bass_black/sea_bass_black.tres common
279 6903 rockfish_canary implemented inactive missing icon res://fish/species/rockfish_canary/rockfish_canary.tres common
280 6904 porgy_scup implemented inactive missing icon res://fish/species/porgy_scup/porgy_scup.tres common
281 6905 sheepshead implemented inactive missing icon res://fish/species/sheepshead/sheepshead.tres common
282 6906 tautog implemented inactive missing icon res://fish/species/tautog/tautog.tres common
283 6907 rockfish_yelloweye implemented inactive missing icon res://fish/species/rockfish_yelloweye/rockfish_yelloweye.tres common
284 7001 lingcod implemented inactive missing icon res://fish/species/lingcod/lingcod.tres common
285 7101 milkfish implemented inactive missing icon res://fish/species/milkfish/milkfish.tres common
286 7201 roosterfish implemented inactive missing icon res://fish/species/roosterfish/roosterfish.tres common
287 7301 tarpon_atlantic implemented inactive missing icon res://fish/species/tarpon_atlantic/tarpon_atlantic.tres common
288 7302 barramundi implemented inactive missing icon res://fish/species/barramundi/barramundi.tres common
289 7303 snook_common implemented inactive missing icon res://fish/species/snook_common/snook_common.tres common
290 7401 bonefish implemented inactive missing icon res://fish/species/bonefish/bonefish.tres common
291 7402 pompano_florida implemented inactive missing icon res://fish/species/pompano_florida/pompano_florida.tres common
292 7403 ladyfish implemented inactive missing icon res://fish/species/ladyfish/ladyfish.tres common
293 7404 permit implemented inactive missing icon res://fish/species/permit/permit.tres common
294 7501 knifefish_clown implemented inactive missing icon res://fish/species/knifefish_clown/knifefish_clown.tres common
295 7502 loach_clown implemented inactive missing icon res://fish/species/loach_clown/loach_clown.tres common
296 7503 discus implemented inactive missing icon res://fish/species/discus/discus.tres common
297 7504 angelfish_freshwater implemented inactive missing icon res://fish/species/angelfish_freshwater/angelfish_freshwater.tres common
298 7505 gourami_giant implemented inactive missing icon res://fish/species/gourami_giant/gourami_giant.tres common
299 7506 tilapia_nile implemented inactive missing icon res://fish/species/tilapia_nile/tilapia_nile.tres common
300 7507 oscar implemented inactive missing icon res://fish/species/oscar/oscar.tres common
301 7508 betta_siamese implemented inactive missing icon res://fish/species/betta_siamese/betta_siamese.tres common
302 7509 tambaqui implemented inactive missing icon res://fish/species/tambaqui/tambaqui.tres common
303 7510 catfish_walking implemented inactive missing icon res://fish/species/catfish_walking/catfish_walking.tres common
304 7601 snakehead_giant implemented inactive missing icon res://fish/species/snakehead_giant/snakehead_giant.tres common
305 7602 dorado_golden implemented inactive missing icon res://fish/species/dorado_golden/dorado_golden.tres common
306 7603 mahseer_golden implemented inactive missing icon res://fish/species/mahseer_golden/mahseer_golden.tres common
307 7604 peacock_bass implemented inactive missing icon res://fish/species/peacock_bass/peacock_bass.tres common
308 7605 piranha_red_bellied implemented inactive missing icon res://fish/species/piranha_red_bellied/piranha_red_bellied.tres common
309 7606 arowana_silver implemented inactive missing icon res://fish/species/arowana_silver/arowana_silver.tres common
310 7701 whale_blue implemented inactive missing icon res://fish/species/whale_blue/whale_blue.tres common
311 7702 dolphin_bottlenose implemented inactive missing icon res://fish/species/dolphin_bottlenose/dolphin_bottlenose.tres common
312 7703 whale_humpback implemented inactive missing icon res://fish/species/whale_humpback/whale_humpback.tres common
313 7704 whale_killer implemented inactive missing icon res://fish/species/whale_killer/whale_killer.tres common
314 7705 whale_sperm implemented inactive missing icon res://fish/species/whale_sperm/whale_sperm.tres common

View file

@ -49,7 +49,7 @@ static func get_display_name(product_id: StringName) -> String:
static func get_description(product_id: StringName) -> String: static func get_description(product_id: StringName) -> String:
if product_id == ART_KIT_ITEM_ID: if product_id == ART_KIT_ITEM_ID:
return "Press P in the game world to paint!" return "Select the Art Kit in the Hotbar to paint."
var color_id: StringName = PlayerArtUnlocks.color_id_for_product(product_id) var color_id: StringName = PlayerArtUnlocks.color_id_for_product(product_id)
if not color_id.is_empty(): if not color_id.is_empty():
return "Unlocks this marker color in the Paint UI." return "Unlocks this marker color in the Paint UI."

View file

@ -9,4 +9,4 @@ display_name = "pelicans"
animal_name_singular = "pelican" animal_name_singular = "pelican"
animal_name_plural = "pelicans" animal_name_plural = "pelicans"
payout_multiplier = 0.25 payout_multiplier = 0.25
sale_message_template = "You sold your {fish} to the pelicans for ${payout}." sale_message_template = "You sold your {fish} to the pelicans."

View file

@ -53,8 +53,7 @@ func get_sale_message(
var buyer_name: String = animal_name_plural var buyer_name: String = animal_name_plural
if buyer_name.is_empty(): if buyer_name.is_empty():
buyer_name = display_name buyer_name = display_name
return "you sold your %s to the %s for $%d." % [ return "you sold your %s to the %s." % [
fish_name, fish_name,
buyer_name, buyer_name,
payout,
] ]

View file

@ -165,9 +165,10 @@ func _validate_batch(
result.payout result.payout
) )
else: else:
result.sale_message = "you sold %d fish to the %s for $%d." % [ result.sale_message = (
"you sold %d fish to the %s." % [
result.fish_count, result.fish_count,
result.buyer_animal_name, result.buyer_animal_name,
result.payout,
] ]
)
return result return result

View file

@ -3,10 +3,12 @@ extends RefCounted
const ItemCatalogType = preload("res://items/item_catalog.gd") const ItemCatalogType = preload("res://items/item_catalog.gd")
const ItemDataType = preload("res://items/item_data.gd") const ItemDataType = preload("res://items/item_data.gd")
const FishingRodDataType = preload("res://items/fishing_rod_data.gd")
const PlayerBagType = preload("res://inventory/player_bag.gd") const PlayerBagType = preload("res://inventory/player_bag.gd")
const PlayerWalletType = preload("res://economy/player_wallet.gd") const PlayerWalletType = preload("res://economy/player_wallet.gd")
const WORM_MAX_STACK: int = 10 const WORM_MAX_STACK: int = 10
const FISH_FINDER_ID: StringName = &"fish_finder" const FISH_FINDER_ID: StringName = &"fish_finder"
const MAGNET_ID: StringName = &"magnet"
const BATTERIES_ID: StringName = &"batteries" const BATTERIES_ID: StringName = &"batteries"
const ITEM_PRICES: Dictionary[StringName, int] = { const ITEM_PRICES: Dictionary[StringName, int] = {
@ -14,22 +16,23 @@ const ITEM_PRICES: Dictionary[StringName, int] = {
&"snails": 3, &"snails": 3,
&"shrimp": 7, &"shrimp": 7,
&"squid_chunks": 15, &"squid_chunks": 15,
&"whole_anchovy": 30, &"whole_anchovy": 60,
&"whole_sardine": 60, &"whole_sardine": 30,
&"luminous_roe": 125, &"luminous_roe": 125,
&"the_standby": 750, &"the_standby": 750,
&"coffee": 20, &"coffee": 20,
&"energy_drink": 35, &"energy_drink": 35,
&"snack": 30, &"snack": 30,
FISH_FINDER_ID: 500, FISH_FINDER_ID: 500,
MAGNET_ID: 250,
BATTERIES_ID: 15, BATTERIES_ID: 15,
} }
const BAIT_UNLOCK_PRICES: Dictionary[StringName, int] = { const BAIT_UNLOCK_PRICES: Dictionary[StringName, int] = {
&"snails": 400, &"snails": 400,
&"shrimp": 1200, &"shrimp": 1200,
&"squid_chunks": 3500, &"squid_chunks": 3500,
&"whole_anchovy": 9000, &"whole_anchovy": 22000,
&"whole_sardine": 22000, &"whole_sardine": 9000,
&"luminous_roe": 50000, &"luminous_roe": 50000,
} }
const ITEM_ORDER: Array[StringName] = [ const ITEM_ORDER: Array[StringName] = [
@ -37,11 +40,12 @@ const ITEM_ORDER: Array[StringName] = [
&"snails", &"snails",
&"shrimp", &"shrimp",
&"squid_chunks", &"squid_chunks",
&"whole_anchovy",
&"whole_sardine", &"whole_sardine",
&"whole_anchovy",
&"luminous_roe", &"luminous_roe",
&"the_standby", &"the_standby",
FISH_FINDER_ID, FISH_FINDER_ID,
MAGNET_ID,
&"coffee", &"coffee",
&"energy_drink", &"energy_drink",
&"snack", &"snack",
@ -57,6 +61,25 @@ static func get_stock_item_ids() -> Array[StringName]:
return ITEM_ORDER.duplicate() return ITEM_ORDER.duplicate()
static func get_rod_stock(
catalog: ItemCatalogType,
) -> Array[FishingRodDataType]:
var rods: Array[FishingRodDataType] = []
if catalog == null:
return rods
for item: ItemDataType in catalog.get_available_items():
var rod := item as FishingRodDataType
if rod != null and rod.is_shop_available():
rods.append(rod)
rods.sort_custom(
func(left: FishingRodDataType, right: FishingRodDataType) -> bool:
if left.shop_order == right.shop_order:
return str(left.item_id) < str(right.item_id)
return left.shop_order < right.shop_order
)
return rods
static func get_unlock_price(item_id: StringName) -> int: static func get_unlock_price(item_id: StringName) -> int:
return BAIT_UNLOCK_PRICES.get(item_id, -1) return BAIT_UNLOCK_PRICES.get(item_id, -1)
@ -81,7 +104,12 @@ static func is_permanent_unlock(
) -> bool: ) -> bool:
return ( return (
item != null item != null
and (item.is_lure() or item_id == FISH_FINDER_ID) and (
item.is_lure()
or item_id == FISH_FINDER_ID
or item_id == MAGNET_ID
or item is FishingRodDataType
)
) )
@ -111,6 +139,8 @@ static func purchase_one(
if wallet == null or bag == null or catalog == null: if wallet == null or bag == null or catalog == null:
return false return false
var item: ItemDataType = catalog.get_item_by_id(item_id) var item: ItemDataType = catalog.get_item_by_id(item_id)
if item == null or not item.is_available():
return false
var bait_topoff: bool = is_bait_topoff(item_id) var bait_topoff: bool = is_bait_topoff(item_id)
var permanent_unlock: bool = is_permanent_unlock(item_id, item) var permanent_unlock: bool = is_permanent_unlock(item_id, item)
var quantity: int = get_purchase_quantity( var quantity: int = get_purchase_quantity(
@ -118,15 +148,20 @@ static func purchase_one(
bag.get_quantity(item_id), bag.get_quantity(item_id),
item.max_stack if item != null else WORM_MAX_STACK, item.max_stack if item != null else WORM_MAX_STACK,
) )
var price: int = get_purchase_cost( var rod := item as FishingRodDataType
var price: int = (
rod.shop_price
if rod != null
else get_purchase_cost(
item_id, item_id,
quantity, quantity,
bag.is_bait_unlocked(item_id), bag.is_bait_unlocked(item_id),
) )
)
if ( if (
price < 0 price < 0
or item == null or not item.is_available()
or not item.is_valid() or (rod != null and not rod.is_shop_available())
or ( or (
item.category != ItemDataType.Category.CONSUMABLE item.category != ItemDataType.Category.CONSUMABLE
and not bait_topoff and not bait_topoff

View file

@ -7,9 +7,9 @@ advanced_options=false
dedicated_server=false dedicated_server=false
custom_features="" custom_features=""
export_filter="all_resources" export_filter="all_resources"
include_filter="" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt"
exclude_filter="builds/*,playtest/*,scripts/*" exclude_filter="builds/*,scripts/*"
export_path="builds/v0.6.4-alpha/windows-x86_64/NETfishing.exe" export_path="builds/v0.7.1-alpha/windows-x86_64/NETfishing.exe"
patches=PackedStringArray() patches=PackedStringArray()
encryption_include_filters="" encryption_include_filters=""
encryption_exclude_filters="" encryption_exclude_filters=""
@ -35,13 +35,13 @@ application/modify_resources=true
application/icon="res://art/exported/system_icons/netfishing.ico" application/icon="res://art/exported/system_icons/netfishing.ico"
application/console_wrapper_icon="" application/console_wrapper_icon=""
application/icon_interpolation=4 application/icon_interpolation=4
application/file_version="0.6.4.0" application/file_version="0.7.1.0"
application/product_version="0.6.4.0" application/product_version="0.7.1.0"
application/company_name="" application/company_name="Woofmeow"
application/product_name="NETfishing" application/product_name="NETfishing"
application/file_description="NETfishing v0.6.4-alpha" application/file_description="NETfishing v0.7.1-alpha"
application/copyright="" application/copyright="Copyright © 2026 Woofmeow"
application/trademarks="" application/trademarks="NETfishing and Woofmeow branding is reserved; see TRADEMARKS.md"
application/export_angle=0 application/export_angle=0
ssh_remote_deploy/enabled=false ssh_remote_deploy/enabled=false
ssh_remote_deploy/host="user@host_ip" ssh_remote_deploy/host="user@host_ip"
@ -60,9 +60,9 @@ advanced_options=false
dedicated_server=false dedicated_server=false
custom_features="" custom_features=""
export_filter="all_resources" export_filter="all_resources"
include_filter="" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt"
exclude_filter="builds/*,playtest/*,scripts/*" exclude_filter="builds/*,scripts/*"
export_path="builds/v0.6.4-alpha/linux-arm64/NETfishing.arm64" export_path="builds/v0.7.1-alpha/linux-arm64/NETfishing.arm64"
patches=PackedStringArray() patches=PackedStringArray()
encryption_include_filters="" encryption_include_filters=""
encryption_exclude_filters="" encryption_exclude_filters=""
@ -90,9 +90,9 @@ advanced_options=false
dedicated_server=false dedicated_server=false
custom_features="" custom_features=""
export_filter="all_resources" export_filter="all_resources"
include_filter="" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt"
exclude_filter="builds/*,playtest/*,scripts/*" exclude_filter="builds/*,scripts/*"
export_path="builds/v0.6.4-alpha/macos/NETfishing.zip" export_path="builds/v0.7.1-alpha/macos/NETfishing.zip"
patches=PackedStringArray() patches=PackedStringArray()
encryption_include_filters="" encryption_include_filters=""
encryption_exclude_filters="" encryption_exclude_filters=""
@ -108,12 +108,42 @@ custom_template/release=""
application/bundle_identifier="io.woofmeow.netfishing" application/bundle_identifier="io.woofmeow.netfishing"
application/icon="res://art/exported/system_icons/netfishing_1024.png" application/icon="res://art/exported/system_icons/netfishing_1024.png"
application/icon_interpolation=0 application/icon_interpolation=0
application/short_version="0.6.4" application/short_version="0.7.1"
application/version="0.6.4" application/version="0.7.1"
application/architecture="universal" application/architecture="universal"
codesign/enable=false codesign/enable=false
notarization/enable=false notarization/enable=false
[preset.5]
name="Linux Dedicated Server"
platform="Linux"
runnable=false
advanced_options=false
dedicated_server=true
custom_features=""
export_filter="all_resources"
include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt"
exclude_filter="builds/*,scripts/*,tests/*"
export_path="builds/v0.7.1-alpha/server-linux-x86_64/NETfishingServer.x86_64"
patches=PackedStringArray()
encryption_include_filters=""
encryption_exclude_filters=""
seed=0
encrypt_pck=false
encrypt_directory=false
script_export_mode=2
[preset.5.options]
custom_template/debug=""
custom_template/release=""
debug/export_console_wrapper=0
binary_format/embed_pck=false
binary_format/architecture="x86_64"
texture_format/s3tc_bptc=true
texture_format/etc2_astc=false
[preset.2] [preset.2]
name="Android" name="Android"
@ -123,9 +153,9 @@ advanced_options=false
dedicated_server=false dedicated_server=false
custom_features="" custom_features=""
export_filter="all_resources" export_filter="all_resources"
include_filter="" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt"
exclude_filter="builds/*,playtest/*,scripts/*" exclude_filter="builds/*,scripts/*"
export_path="builds/v0.6.4-alpha/android/NETfishing.apk" export_path="builds/v0.7.1-alpha/android/NETfishing.apk"
patches=PackedStringArray() patches=PackedStringArray()
encryption_include_filters="" encryption_include_filters=""
encryption_exclude_filters="" encryption_exclude_filters=""
@ -146,8 +176,8 @@ architectures/armeabi-v7a=false
architectures/arm64-v8a=true architectures/arm64-v8a=true
architectures/x86=false architectures/x86=false
architectures/x86_64=false architectures/x86_64=false
version/code=60400 version/code=70100
version/name="v0.6.4-alpha" version/name="v0.7.1-alpha"
package/unique_name="io.woofmeow.netfishing" package/unique_name="io.woofmeow.netfishing"
package/name="NETfishing" package/name="NETfishing"
package/signed=true package/signed=true
@ -182,9 +212,9 @@ advanced_options=false
dedicated_server=false dedicated_server=false
custom_features="" custom_features=""
export_filter="all_resources" export_filter="all_resources"
include_filter="" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt"
exclude_filter="builds/*,playtest/*,scripts/*" exclude_filter="builds/*,scripts/*"
export_path="builds/v0.6.4-alpha/linux-x86_64/NETfishing.x86_64" export_path="builds/v0.7.1-alpha/linux-x86_64/NETfishing.x86_64"
patches=PackedStringArray() patches=PackedStringArray()
encryption_include_filters="" encryption_include_filters=""
encryption_exclude_filters="" encryption_exclude_filters=""

View file

@ -26,14 +26,21 @@ enum Rarity {
@export var id: StringName @export var id: StringName
@export var display_name: String @export var display_name: String
@export_category("Developer Catalog")
## Disabled species remain resolvable for saves but cannot be newly selected.
@export var active: bool = true
@export_range(1, 999999, 1) var catalog_number: int = 1
@export var collection_group: StringName
@export_multiline var logbook_fact: String
@export_category("Fishing")
@export_flags("Fresh Water", "Salt Water") @export_flags("Fresh Water", "Salt Water")
var allowed_water_types: int = WaterType.ALL_FISHABLE_MASK var allowed_water_types: int = WaterType.ALL_FISHABLE_MASK
@export var rarity: Rarity = Rarity.COMMON @export var rarity: Rarity = Rarity.COMMON
@export_range(0.0, 1000.0, 0.01) var base_catch_weight: float = 1.0 @export_range(0.0, 1000.0, 0.01) var base_catch_weight: float = 1.0
@export var catch_profile: CatchDifficultyProfileType @export var catch_profile: CatchDifficultyProfileType
@export var availability: FishAvailabilityType @export var availability: FishAvailabilityType
@export_range(0.01, 1000.0, 0.01) var weight_min_lb: float = 0.5 @export_range(0.001, 500000.0, 0.001) var weight_min_lb: float = 0.5
@export_range(0.01, 1000.0, 0.01) var weight_max_lb: float = 1.0 @export_range(0.001, 500000.0, 0.001) var weight_max_lb: float = 1.0
# Retained in resource files for compatibility with existing authored data; # Retained in resource files for compatibility with existing authored data;
# runtime presentation is derived from absolute weight below. # runtime presentation is derived from absolute weight below.
@export_range(0.01, 20.0, 0.01) var display_scale_min: float = 0.8 @export_range(0.01, 20.0, 0.01) var display_scale_min: float = 0.8
@ -47,7 +54,8 @@ var allowed_water_types: int = WaterType.ALL_FISHABLE_MASK
func is_selectable() -> bool: func is_selectable() -> bool:
return ( return (
not id.is_empty() active
and not id.is_empty()
and base_catch_weight > 0.0 and base_catch_weight > 0.0
and catch_profile != null and catch_profile != null
and weight_min_lb > 0.0 and weight_min_lb > 0.0
@ -74,7 +82,7 @@ func get_primary_water_type() -> WaterType.Type:
func get_minimum_weight() -> float: func get_minimum_weight() -> float:
return maxf(weight_min_lb, 0.01) return maxf(weight_min_lb, 0.001)
func get_maximum_weight() -> float: func get_maximum_weight() -> float:

View file

@ -19,20 +19,15 @@ const WORM_ROLL_WEIGHTS: Array[float] = [80.0, 10.0, 5.0, 4.0, 1.0]
const SNAIL_ROLL_WEIGHTS: Array[float] = [68.0, 16.0, 8.0, 6.0, 2.0] const SNAIL_ROLL_WEIGHTS: Array[float] = [68.0, 16.0, 8.0, 6.0, 2.0]
const SHRIMP_ROLL_WEIGHTS: Array[float] = [56.0, 21.0, 12.0, 8.0, 3.0] const SHRIMP_ROLL_WEIGHTS: Array[float] = [56.0, 21.0, 12.0, 8.0, 3.0]
const SQUID_ROLL_WEIGHTS: Array[float] = [44.0, 25.0, 16.0, 11.0, 4.0] const SQUID_ROLL_WEIGHTS: Array[float] = [44.0, 25.0, 16.0, 11.0, 4.0]
const SARDINE_ROLL_WEIGHTS: Array[float] = [34.0, 27.0, 20.0, 13.0, 6.0] const MINNOW_ROLL_WEIGHTS: Array[float] = [34.0, 27.0, 20.0, 13.0, 6.0]
const MINNOW_ROLL_WEIGHTS: Array[float] = [25.0, 28.0, 23.0, 16.0, 8.0] const SARDINE_ROLL_WEIGHTS: Array[float] = [25.0, 28.0, 23.0, 16.0, 8.0]
const LUMINOUS_ROE_ROLL_WEIGHTS: Array[float] = [16.0, 26.0, 26.0, 20.0, 12.0] const LUMINOUS_ROE_ROLL_WEIGHTS: Array[float] = [16.0, 26.0, 26.0, 20.0, 12.0]
const SALE_MULTIPLIERS: Array[float] = [1.0, 1.1, 1.25, 1.5, 2.0] const SALE_MULTIPLIERS: Array[float] = [1.0, 1.1, 1.25, 1.5, 2.0]
# Legacy profile multiplier retained for serialized/profile compatibility. # Legacy multiplier helpers remain available for compatibility. New encounters
# New encounters use the weighted quality/rarity/weight bands below. # roll directly within the authored quality bands below.
const BARRIER_HEALTH_MULTIPLIERS: Array[float] = [1.0, 1.25, 1.6, 2.2, 3.25] const BARRIER_HEALTH_MULTIPLIERS: Array[float] = [1.0, 1.25, 1.6, 2.2, 3.25]
# Barrier health is weighted 70% by quality, 20% by rarity, and 10% by the # Inclusive per-barrier health bands authored for each quality tier. Encounter
# catch's position in its authored weight range. The upper bounds define the # generation rolls uniformly across the selected tier's complete band.
# intended per-barrier challenge bands; a small seeded variance keeps barriers
# from feeling identical without crossing those bands.
const BARRIER_QUALITY_WEIGHT: float = 0.70
const BARRIER_RARITY_WEIGHT: float = 0.20
const BARRIER_WEIGHT_WEIGHT: float = 0.10
const BARRIER_HEALTH_MINIMUMS: Array[int] = [1, 10, 50, 100, 200] const BARRIER_HEALTH_MINIMUMS: Array[int] = [1, 10, 50, 100, 200]
const BARRIER_HEALTH_MAXIMUMS: Array[int] = [9, 50, 100, 200, 400] const BARRIER_HEALTH_MAXIMUMS: Array[int] = [9, 50, 100, 200, 400]
const DISPLAY_NAMES: PackedStringArray = [ const DISPLAY_NAMES: PackedStringArray = [
@ -89,32 +84,26 @@ static func apply_barrier_health(base_health: int, quality: int) -> int:
) )
static func barrier_health_for_catch( static func barrier_health_range(quality: int) -> Vector2i:
quality: int,
rarity: int,
weight_percentile: float,
variance: float = 1.0,
) -> int:
var safe_quality: int = ( var safe_quality: int = (
quality if is_valid(quality) else Tier.BORING quality if is_valid(quality) else Tier.BORING
) )
var safe_rarity: float = clampf(float(rarity) / 4.0, 0.0, 1.0) return Vector2i(
var safe_weight: float = clampf(weight_percentile, 0.0, 1.0)
var weighted_health: float = float(BARRIER_HEALTH_MAXIMUMS[safe_quality]) * (
BARRIER_QUALITY_WEIGHT
+ BARRIER_RARITY_WEIGHT * safe_rarity
+ BARRIER_WEIGHT_WEIGHT * safe_weight
)
var varied_health: int = roundi(
weighted_health * clampf(variance, 0.8, 1.2)
)
return clampi(
varied_health,
BARRIER_HEALTH_MINIMUMS[safe_quality], BARRIER_HEALTH_MINIMUMS[safe_quality],
BARRIER_HEALTH_MAXIMUMS[safe_quality], BARRIER_HEALTH_MAXIMUMS[safe_quality],
) )
static func roll_barrier_health(
rng: RandomNumberGenerator,
quality: int,
) -> int:
var health_range: Vector2i = barrier_health_range(quality)
if rng == null:
return health_range.x
return rng.randi_range(health_range.x, health_range.y)
static func roll( static func roll(
rng: RandomNumberGenerator, rng: RandomNumberGenerator,
weight_multipliers: Array[float] = [], weight_multipliers: Array[float] = [],
@ -158,9 +147,9 @@ static func rarity_weights_for_bait(
elif active_bait_tags.has(&"bait_rarity_6"): elif active_bait_tags.has(&"bait_rarity_6"):
weights.assign(LUMINOUS_ROE_ROLL_WEIGHTS) weights.assign(LUMINOUS_ROE_ROLL_WEIGHTS)
elif active_bait_tags.has(&"bait_rarity_5"): elif active_bait_tags.has(&"bait_rarity_5"):
weights.assign(MINNOW_ROLL_WEIGHTS)
elif active_bait_tags.has(&"bait_rarity_4"):
weights.assign(SARDINE_ROLL_WEIGHTS) weights.assign(SARDINE_ROLL_WEIGHTS)
elif active_bait_tags.has(&"bait_rarity_4"):
weights.assign(MINNOW_ROLL_WEIGHTS)
elif active_bait_tags.has(&"bait_rarity_3"): elif active_bait_tags.has(&"bait_rarity_3"):
weights.assign(SQUID_ROLL_WEIGHTS) weights.assign(SQUID_ROLL_WEIGHTS)
elif active_bait_tags.has(&"bait_rarity_2"): elif active_bait_tags.has(&"bait_rarity_2"):

View file

@ -7,10 +7,12 @@ const FishDataType = preload("res://fish/fish_data.gd")
const FishPoolType = preload("res://fish/fish_pool.gd") const FishPoolType = preload("res://fish/fish_pool.gd")
const FishQualityType = preload("res://fish/fish_quality.gd") const FishQualityType = preload("res://fish/fish_quality.gd")
const FishingContextType = preload("res://fishing/fishing_context.gd") const FishingContextType = preload("res://fishing/fishing_context.gd")
const FishingRodDataType = preload("res://items/fishing_rod_data.gd")
var undiscovered_weight_multiplier: float = 1.5 var undiscovered_weight_multiplier: float = 1.5
var rarity_weight_multipliers: Array[float] = [] var rarity_weight_multipliers: Array[float] = []
var quality_weight_multipliers: Array[float] = [] var quality_weight_multipliers: Array[float] = []
var active_rod: FishingRodDataType
var use_deterministic_test_seed: bool = false var use_deterministic_test_seed: bool = false
var deterministic_test_seed: int = 24680 var deterministic_test_seed: int = 24680
var selection_seed: int = 0 var selection_seed: int = 0
@ -55,8 +57,16 @@ func select_fish(
# quality and rarity bands globally; required tags remain authoritative. # quality and rarity bands globally; required tags remain authoritative.
if not collection_log.has_discovered(fish.id): if not collection_log.has_discovered(fish.id):
final_weight *= maxf(undiscovered_weight_multiplier, 0.0) final_weight *= maxf(undiscovered_weight_multiplier, 0.0)
if active_rod != null:
final_weight *= maxf(
active_rod.undiscovered_weight_multiplier,
0.0,
)
if fish.rarity >= 0 and fish.rarity < rarity_weight_multipliers.size(): if fish.rarity >= 0 and fish.rarity < rarity_weight_multipliers.size():
final_weight *= maxf(rarity_weight_multipliers[fish.rarity], 0.0) final_weight *= maxf(rarity_weight_multipliers[fish.rarity], 0.0)
if active_rod != null:
final_weight *= active_rod.get_rarity_multiplier(fish.rarity)
final_weight *= active_rod.get_affinity_multiplier(fish, context)
if final_weight <= 0.0: if final_weight <= 0.0:
continue continue
all_fish.append(fish) all_fish.append(fish)
@ -87,6 +97,8 @@ func _roll_rarity(context: FishingContextType) -> int:
for index: int in range(weights.size()): for index: int in range(weights.size()):
if index < rarity_weight_multipliers.size(): if index < rarity_weight_multipliers.size():
weights[index] *= maxf(rarity_weight_multipliers[index], 0.0) weights[index] *= maxf(rarity_weight_multipliers[index], 0.0)
if active_rod != null:
weights[index] *= active_rod.get_rarity_multiplier(index)
var total: float = 0.0 var total: float = 0.0
for weight: float in weights: for weight: float in weights:
total += weight total += weight
@ -107,9 +119,13 @@ func create_catch(fish: FishDataType, bait_tags: Array[StringName] = []) -> Fish
caught_fish.fish = fish caught_fish.fish = fish
caught_fish.fish_id = fish.id caught_fish.fish_id = fish.id
caught_fish.ensure_identity() caught_fish.ensure_identity()
caught_fish.weight_lb = _rng.randf_range( var weight_roll: float = _biased_unit_roll(
active_rod.weight_roll_bias if active_rod != null else 0.0
)
caught_fish.weight_lb = lerpf(
fish.get_minimum_weight(), fish.get_minimum_weight(),
fish.get_maximum_weight() fish.get_maximum_weight(),
weight_roll,
) )
caught_fish.display_scale = fish.get_display_scale_for_weight( caught_fish.display_scale = fish.get_display_scale_for_weight(
caught_fish.weight_lb caught_fish.weight_lb
@ -118,6 +134,11 @@ func create_catch(fish: FishDataType, bait_tags: Array[StringName] = []) -> Fish
var quality_multipliers: Array[float] = FishQualityType.roll_weights_for_bait(effective_bait) var quality_multipliers: Array[float] = FishQualityType.roll_weights_for_bait(effective_bait)
for quality: int in range(mini(quality_multipliers.size(), quality_weight_multipliers.size())): for quality: int in range(mini(quality_multipliers.size(), quality_weight_multipliers.size())):
quality_multipliers[quality] *= maxf(quality_weight_multipliers[quality], 0.0) quality_multipliers[quality] *= maxf(quality_weight_multipliers[quality], 0.0)
for quality: int in range(quality_multipliers.size()):
if active_rod != null:
quality_multipliers[quality] *= active_rod.get_quality_multiplier(
quality
)
caught_fish.quality = FishQualityType.roll( caught_fish.quality = FishQualityType.roll(
_rng, _rng,
quality_multipliers, quality_multipliers,
@ -127,3 +148,14 @@ func create_catch(fish: FishDataType, bait_tags: Array[StringName] = []) -> Fish
caught_fish.quality, caught_fish.quality,
) )
return caught_fish return caught_fish
func _biased_unit_roll(bias: float) -> float:
var roll: float = _rng.randf()
var safe_bias: float = clampf(bias, -0.5, 0.5)
if is_zero_approx(safe_bias):
return roll
var exponent: float = 1.0 / (1.0 + absf(safe_bias) * 2.0)
if safe_bias > 0.0:
return pow(roll, exponent)
return 1.0 - pow(1.0 - roll, exponent)

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,29 @@
[gd_resource type="Resource" script_class="FishData" load_steps=4 format=3]
[ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"]
[ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"]
[ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"]
[sub_resource type="Resource" id="Availability"]
script = ExtResource("3_availability")
allow_night = false
require_fog = true
[resource]
script = ExtResource("1_fish_data")
id = &"abalone_red"
display_name = "red abalone"
active = false
catalog_number = 6405
collection_group = &"Shellfish"
logbook_fact = "red abalones cling to pacific rocks with broad muscular feet. rows of shell holes release water that has passed over the gills."
allowed_water_types = 2
rarity = 3
base_catch_weight = 0.09
catch_profile = ExtResource("2_profile")
availability = SubResource("Availability")
weight_min_lb = 0.2
weight_max_lb = 12.0
sell_value_min = 24
sell_value_max = 56
sell_value_curve = 0.88

View file

@ -0,0 +1,27 @@
[gd_resource type="Resource" script_class="FishData" load_steps=4 format=3]
[ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"]
[ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"]
[ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"]
[sub_resource type="Resource" id="Availability"]
script = ExtResource("3_availability")
[resource]
script = ExtResource("1_fish_data")
id = &"amberjack_greater"
display_name = "greater amberjack"
active = false
catalog_number = 3604
collection_group = &"Large coastal predators"
logbook_fact = "greater amberjacks circle reefs, wrecks, and offshore platforms. a dark stripe crosses the eye of their sturdy torpedo-shaped bodies."
allowed_water_types = 2
rarity = 2
base_catch_weight = 0.25
catch_profile = ExtResource("2_profile")
availability = SubResource("Availability")
weight_min_lb = 5.0
weight_max_lb = 90.0
sell_value_min = 15
sell_value_max = 42
sell_value_curve = 0.82

View file

@ -0,0 +1,27 @@
[gd_resource type="Resource" script_class="FishData" load_steps=4 format=3]
[ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"]
[ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"]
[ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"]
[sub_resource type="Resource" id="Availability"]
script = ExtResource("3_availability")
[resource]
script = ExtResource("1_fish_data")
id = &"amberjack_lesser"
display_name = "lesser amberjack"
active = false
catalog_number = 3605
collection_group = &"Large coastal predators"
logbook_fact = "lesser amberjacks school around deep reefs and floating objects. an enlarged eye suits their preference for dimmer water."
allowed_water_types = 2
rarity = 1
base_catch_weight = 0.75
catch_profile = ExtResource("2_profile")
availability = SubResource("Availability")
weight_min_lb = 1.0
weight_max_lb = 20.0
sell_value_min = 7
sell_value_max = 18
sell_value_curve = 0.86

View file

@ -13,6 +13,10 @@ allowed_location_tags = Array[StringName]([&"ocean"])
script = ExtResource("1_fish_data") script = ExtResource("1_fish_data")
id = &"anchovy_european" id = &"anchovy_european"
display_name = "european anchovy" display_name = "european anchovy"
active = true
catalog_number = 805
collection_group = &"Coastal schooling fish"
logbook_fact = "european anchovies form dense schools and feed by filtering tiny plankton from coastal water."
allowed_water_types = 2 allowed_water_types = 2
base_catch_weight = 0.5 base_catch_weight = 0.5
catch_profile = ExtResource("2_profile") catch_profile = ExtResource("2_profile")

View file

@ -13,6 +13,10 @@ allowed_location_tags = Array[StringName]([&"ocean"])
script = ExtResource("1_fish_data") script = ExtResource("1_fish_data")
id = &"anchovy_northern" id = &"anchovy_northern"
display_name = "northern anchovy" display_name = "northern anchovy"
active = true
catalog_number = 808
collection_group = &"Coastal schooling fish"
logbook_fact = "northern anchovies gather in huge schools along the pacific coast and filter plankton with their fine gill rakers."
allowed_water_types = 2 allowed_water_types = 2
base_catch_weight = 0.5 base_catch_weight = 0.5
catch_profile = ExtResource("2_profile") catch_profile = ExtResource("2_profile")

View file

@ -0,0 +1,28 @@
[gd_resource type="Resource" script_class="FishData" load_steps=4 format=3]
[ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"]
[ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"]
[ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"]
[sub_resource type="Resource" id="Availability"]
script = ExtResource("3_availability")
allow_night = false
[resource]
script = ExtResource("1_fish_data")
id = &"angelfish_freshwater"
display_name = "freshwater angelfish"
active = false
catalog_number = 7504
collection_group = &"Tropical freshwater fish"
logbook_fact = "freshwater angelfish slip between tall plants on narrow triangular bodies. long fins and vertical bars resemble stems and shadows."
allowed_water_types = 1
rarity = 2
base_catch_weight = 0.3
catch_profile = ExtResource("2_profile")
availability = SubResource("Availability")
weight_min_lb = 0.05
weight_max_lb = 0.5
sell_value_min = 10
sell_value_max = 22
sell_value_curve = 0.95

View file

@ -0,0 +1,28 @@
[gd_resource type="Resource" script_class="FishData" load_steps=4 format=3]
[ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"]
[ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"]
[ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"]
[sub_resource type="Resource" id="Availability"]
script = ExtResource("3_availability")
allow_night = false
[resource]
script = ExtResource("1_fish_data")
id = &"angelfish_queen"
display_name = "queen angelfish"
active = false
catalog_number = 5703
collection_group = &"Reef ornamentals"
logbook_fact = "queen angelfish graze sponges from warm atlantic reefs. a blue-ringed spot on the forehead resembles a tiny crown."
allowed_water_types = 2
rarity = 2
base_catch_weight = 0.3
catch_profile = ExtResource("2_profile")
availability = SubResource("Availability")
weight_min_lb = 0.1
weight_max_lb = 2.0
sell_value_min = 11
sell_value_max = 25
sell_value_curve = 0.94

View file

@ -0,0 +1,28 @@
[gd_resource type="Resource" script_class="FishData" load_steps=4 format=3]
[ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"]
[ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"]
[ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"]
[sub_resource type="Resource" id="Availability"]
script = ExtResource("3_availability")
allow_day = false
[resource]
script = ExtResource("1_fish_data")
id = &"anglerfish_black_seadevil"
display_name = "black seadevil"
active = false
catalog_number = 1801
collection_group = &"Deep-sea oddities"
logbook_fact = "black seadevils lure prey with a glowing organ suspended above the mouth. tiny males permanently attach to much larger females."
allowed_water_types = 2
rarity = 4
base_catch_weight = 0.05
catch_profile = ExtResource("2_profile")
availability = SubResource("Availability")
weight_min_lb = 0.1
weight_max_lb = 2.0
sell_value_min = 48
sell_value_max = 105
sell_value_curve = 0.92

View file

@ -0,0 +1,28 @@
[gd_resource type="Resource" script_class="FishData" load_steps=4 format=3]
[ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"]
[ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"]
[ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"]
[sub_resource type="Resource" id="Availability"]
script = ExtResource("3_availability")
allow_night = false
[resource]
script = ExtResource("1_fish_data")
id = &"arapaima"
display_name = "arapaima"
active = false
catalog_number = 2702
collection_group = &"Freshwater giants"
logbook_fact = "arapaima must surface frequently to gulp air through a specialized swim bladder. large armored scales protect their long river-going bodies."
allowed_water_types = 1
rarity = 4
base_catch_weight = 0.04
catch_profile = ExtResource("2_profile")
availability = SubResource("Availability")
weight_min_lb = 40.0
weight_max_lb = 400.0
sell_value_min = 60
sell_value_max = 140
sell_value_curve = 0.78

View file

@ -0,0 +1,29 @@
[gd_resource type="Resource" script_class="FishData" load_steps=4 format=3]
[ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"]
[ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"]
[ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"]
[sub_resource type="Resource" id="Availability"]
script = ExtResource("3_availability")
allow_night = false
require_fog = true
[resource]
script = ExtResource("1_fish_data")
id = &"arowana_silver"
display_name = "silver arowana"
active = false
catalog_number = 7606
collection_group = &"Tropical freshwater predators"
logbook_fact = "silver arowanas patrol the surface with upturned mouths and long bodies. powerful jumps capture insects and small animals above the water."
allowed_water_types = 1
rarity = 3
base_catch_weight = 0.11
catch_profile = ExtResource("2_profile")
availability = SubResource("Availability")
weight_min_lb = 1.0
weight_max_lb = 15.0
sell_value_min = 25
sell_value_max = 56
sell_value_curve = 0.86

View file

@ -0,0 +1,29 @@
[gd_resource type="Resource" script_class="FishData" load_steps=4 format=3]
[ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"]
[ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"]
[ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"]
[sub_resource type="Resource" id="Availability"]
script = ExtResource("3_availability")
allow_day = false
require_fog = true
[resource]
script = ExtResource("1_fish_data")
id = &"axolotl"
display_name = "axolotl"
active = false
catalog_number = 2001
collection_group = &"Freshwater amphibians"
logbook_fact = "axolotls remain aquatic and keep feathery external gills throughout adulthood. lost limbs and parts of several organs can regenerate."
allowed_water_types = 1
rarity = 4
base_catch_weight = 0.04
catch_profile = ExtResource("2_profile")
availability = SubResource("Availability")
weight_min_lb = 0.1
weight_max_lb = 0.7
sell_value_min = 36
sell_value_max = 78
sell_value_curve = 0.96

View file

@ -0,0 +1,29 @@
[gd_resource type="Resource" script_class="FishData" load_steps=4 format=3]
[ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"]
[ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"]
[ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"]
[sub_resource type="Resource" id="Availability"]
script = ExtResource("3_availability")
allow_day = false
require_rain = true
[resource]
script = ExtResource("1_fish_data")
id = &"barbel_common"
display_name = "common barbel"
active = false
catalog_number = 2501
collection_group = &"Freshwater coarse fish"
logbook_fact = "common barbels hold close to fast river bottoms with streamlined bodies and broad fins. four mouth barbels locate food among stones."
allowed_water_types = 1
rarity = 2
base_catch_weight = 0.28
catch_profile = ExtResource("2_profile")
availability = SubResource("Availability")
weight_min_lb = 1.0
weight_max_lb = 25.0
sell_value_min = 13
sell_value_max = 31
sell_value_curve = 0.85

View file

@ -0,0 +1,29 @@
[gd_resource type="Resource" script_class="FishData" load_steps=4 format=3]
[ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"]
[ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"]
[ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"]
[sub_resource type="Resource" id="Availability"]
script = ExtResource("3_availability")
allow_night = false
require_fog = true
[resource]
script = ExtResource("1_fish_data")
id = &"barracuda_great"
display_name = "great barracuda"
active = false
catalog_number = 5804
collection_group = &"Reef predators"
logbook_fact = "great barracudas hover motionless before accelerating toward prey. long jaws carry two distinct rows of sharp teeth."
allowed_water_types = 2
rarity = 3
base_catch_weight = 0.12
catch_profile = ExtResource("2_profile")
availability = SubResource("Availability")
weight_min_lb = 5.0
weight_max_lb = 80.0
sell_value_min = 28
sell_value_max = 65
sell_value_curve = 0.82

View file

@ -0,0 +1,29 @@
[gd_resource type="Resource" script_class="FishData" load_steps=4 format=3]
[ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"]
[ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"]
[ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"]
[sub_resource type="Resource" id="Availability"]
script = ExtResource("3_availability")
allow_day = false
require_rain = true
[resource]
script = ExtResource("1_fish_data")
id = &"barramundi"
display_name = "barramundi"
active = false
catalog_number = 7302
collection_group = &"Tropical estuary"
logbook_fact = "barramundi move between rivers and coasts and can breathe in low-oxygen water. many mature first as males and later become females."
allowed_water_types = 3
rarity = 2
base_catch_weight = 0.24
catch_profile = ExtResource("2_profile")
availability = SubResource("Availability")
weight_min_lb = 2.0
weight_max_lb = 45.0
sell_value_min = 15
sell_value_max = 38
sell_value_curve = 0.84

View file

@ -0,0 +1,29 @@
[gd_resource type="Resource" script_class="FishData" load_steps=4 format=3]
[ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"]
[ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"]
[ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"]
[sub_resource type="Resource" id="Availability"]
script = ExtResource("3_availability")
allow_day = false
require_fog = true
[resource]
script = ExtResource("1_fish_data")
id = &"barreleye_pacific"
display_name = "Pacific barreleye"
active = false
catalog_number = 1804
collection_group = &"Deep-sea oddities"
logbook_fact = "pacific barreleyes peer upward through transparent shields covering the head. tubular eyes rotate forward when the fish turns to feed."
allowed_water_types = 2
rarity = 4
base_catch_weight = 0.045
catch_profile = ExtResource("2_profile")
availability = SubResource("Availability")
weight_min_lb = 0.2
weight_max_lb = 2.5
sell_value_min = 42
sell_value_max = 88
sell_value_curve = 0.9

View file

@ -14,6 +14,10 @@ preferred_bait_weight_multiplier = 1.4
script = ExtResource("1_fish_data") script = ExtResource("1_fish_data")
id = &"bass" id = &"bass"
display_name = "striped bass" display_name = "striped bass"
active = true
catalog_number = 6701
collection_group = &"Temperate coastal"
logbook_fact = "striped bass split their lives between salt and fresh water, returning upriver to spawn. a long-lived striper may see three decades."
allowed_water_types = 2 allowed_water_types = 2
rarity = 1 rarity = 1
base_catch_weight = 4.0 base_catch_weight = 4.0

View file

@ -0,0 +1,29 @@
[gd_resource type="Resource" script_class="FishData" load_steps=4 format=3]
[ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"]
[ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"]
[ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"]
[sub_resource type="Resource" id="Availability"]
script = ExtResource("3_availability")
allow_night = false
require_rain = true
[resource]
script = ExtResource("1_fish_data")
id = &"betta_siamese"
display_name = "Siamese fighting fish"
active = false
catalog_number = 7508
collection_group = &"Tropical freshwater fish"
logbook_fact = "siamese fighting fish breathe surface air with a labyrinth organ. males build bubble nests and guard the eggs beneath them."
allowed_water_types = 1
rarity = 1
base_catch_weight = 1.0
catch_profile = ExtResource("2_profile")
availability = SubResource("Availability")
weight_min_lb = 0.01
weight_max_lb = 0.15
sell_value_min = 5
sell_value_max = 10
sell_value_curve = 1.0

View file

@ -0,0 +1,28 @@
[gd_resource type="Resource" script_class="FishData" load_steps=4 format=3]
[ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"]
[ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"]
[ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"]
[sub_resource type="Resource" id="Availability"]
script = ExtResource("3_availability")
allow_day = false
[resource]
script = ExtResource("1_fish_data")
id = &"black_drum"
display_name = "black drum"
active = false
catalog_number = 6802
collection_group = &"Temperate estuary"
logbook_fact = "black drum crush oysters and crabs with rounded throat teeth. large adults develop dark vertical bars that fade with age."
allowed_water_types = 2
rarity = 1
base_catch_weight = 0.7
catch_profile = ExtResource("2_profile")
availability = SubResource("Availability")
weight_min_lb = 1.0
weight_max_lb = 70.0
sell_value_min = 8
sell_value_max = 27
sell_value_curve = 0.82

View file

@ -0,0 +1,29 @@
[gd_resource type="Resource" script_class="FishData" load_steps=4 format=3]
[ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"]
[ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"]
[ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"]
[sub_resource type="Resource" id="Availability"]
script = ExtResource("3_availability")
allow_day = false
require_fog = true
[resource]
script = ExtResource("1_fish_data")
id = &"blobfish_smooth_head"
display_name = "smooth-head blobfish"
active = false
catalog_number = 1805
collection_group = &"Deep-sea oddities"
logbook_fact = "smooth-head blobfish rest on deep slopes where pressure supports their soft bodies. they conserve energy by waiting for edible matter nearby."
allowed_water_types = 2
rarity = 4
base_catch_weight = 0.04
catch_profile = ExtResource("2_profile")
availability = SubResource("Availability")
weight_min_lb = 0.5
weight_max_lb = 5.0
sell_value_min = 42
sell_value_max = 90
sell_value_curve = 0.86

View file

@ -0,0 +1,28 @@
[gd_resource type="Resource" script_class="FishData" load_steps=4 format=3]
[ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"]
[ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"]
[ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"]
[sub_resource type="Resource" id="Availability"]
script = ExtResource("3_availability")
allow_night = false
[resource]
script = ExtResource("1_fish_data")
id = &"bluefish"
display_name = "bluefish"
active = false
catalog_number = 702
collection_group = &"Coastal pelagic fish"
logbook_fact = "bluefish race in coordinated schools while pursuing smaller fish. sharp teeth and powerful jaws make their feeding bursts especially fierce."
allowed_water_types = 2
rarity = 1
base_catch_weight = 0.85
catch_profile = ExtResource("2_profile")
availability = SubResource("Availability")
weight_min_lb = 0.5
weight_max_lb = 25.0
sell_value_min = 7
sell_value_max = 19
sell_value_curve = 0.85

View file

@ -9,6 +9,10 @@
script = ExtResource("1_fish_data") script = ExtResource("1_fish_data")
id = &"bluegill" id = &"bluegill"
display_name = "bluegill" display_name = "bluegill"
active = true
catalog_number = 3102
collection_group = &"Freshwater panfish"
logbook_fact = "bluegill fathers sweep shallow bowls into the bottom for nests, then stand guard. whole neighborhoods of nests can crowd together."
allowed_water_types = 1 allowed_water_types = 1
rarity = 0 rarity = 0
base_catch_weight = 10.0 base_catch_weight = 10.0

View file

@ -0,0 +1,29 @@
[gd_resource type="Resource" script_class="FishData" load_steps=4 format=3]
[ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"]
[ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"]
[ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"]
[sub_resource type="Resource" id="Availability"]
script = ExtResource("3_availability")
allow_night = false
forbid_fog = true
[resource]
script = ExtResource("1_fish_data")
id = &"bonefish"
display_name = "bonefish"
active = false
catalog_number = 7401
collection_group = &"Tropical flats fish"
logbook_fact = "bonefish sweep tropical flats in silvery schools and root for buried prey. their speed and pale bodies make them difficult to follow in shallow water."
allowed_water_types = 2
rarity = 2
base_catch_weight = 0.25
catch_profile = ExtResource("2_profile")
availability = SubResource("Availability")
weight_min_lb = 0.5
weight_max_lb = 15.0
sell_value_min = 13
sell_value_max = 31
sell_value_curve = 0.86

View file

@ -0,0 +1,29 @@
[gd_resource type="Resource" script_class="FishData" load_steps=4 format=3]
[ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"]
[ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"]
[ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"]
[sub_resource type="Resource" id="Availability"]
script = ExtResource("3_availability")
allow_day = false
require_fog = true
[resource]
script = ExtResource("1_fish_data")
id = &"bowfin"
display_name = "bowfin"
active = false
catalog_number = 101
collection_group = &"Ancient freshwater fish"
logbook_fact = "bowfin can gulp air at the surface when warm backwaters run low on oxygen. a long dorsal fin ripples as they stalk prey."
allowed_water_types = 1
rarity = 2
base_catch_weight = 0.28
catch_profile = ExtResource("2_profile")
availability = SubResource("Availability")
weight_min_lb = 1.0
weight_max_lb = 20.0
sell_value_min = 13
sell_value_max = 30
sell_value_curve = 0.85

View file

@ -0,0 +1,28 @@
[gd_resource type="Resource" script_class="FishData" load_steps=4 format=3]
[ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"]
[ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"]
[ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"]
[sub_resource type="Resource" id="Availability"]
script = ExtResource("3_availability")
allow_night = false
[resource]
script = ExtResource("1_fish_data")
id = &"boxfish_yellow"
display_name = "yellow boxfish"
active = false
catalog_number = 5608
collection_group = &"Reef oddities"
logbook_fact = "yellow boxfish juveniles are bright cubes covered in black spots. rigid body armor leaves small fins to provide careful steering."
allowed_water_types = 2
rarity = 2
base_catch_weight = 0.32
catch_profile = ExtResource("2_profile")
availability = SubResource("Availability")
weight_min_lb = 0.03
weight_max_lb = 0.8
sell_value_min = 10
sell_value_max = 22
sell_value_curve = 0.96

View file

@ -0,0 +1,27 @@
[gd_resource type="Resource" script_class="FishData" load_steps=4 format=3]
[ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"]
[ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"]
[ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"]
[sub_resource type="Resource" id="Availability"]
script = ExtResource("3_availability")
[resource]
script = ExtResource("1_fish_data")
id = &"bream_common"
display_name = "common bream"
active = false
catalog_number = 2502
collection_group = &"Freshwater coarse fish"
logbook_fact = "common bream gather in slow rivers and lakes with silvery, deep-sided bodies. protruding mouths sift insect larvae from soft bottoms."
allowed_water_types = 1
rarity = 0
base_catch_weight = 1.8
catch_profile = ExtResource("2_profile")
availability = SubResource("Availability")
weight_min_lb = 0.3
weight_max_lb = 15.0
sell_value_min = 4
sell_value_max = 12
sell_value_curve = 0.88

Some files were not shown because too many files have changed in this diff Show more