# Fish Properties
Possible traits: (Feel free to suggest more) For reference thes are not randomized (i guess they could be but eh)
`/datum/fishing_trait/wary` - Needs cloaked line or it gets difficulty mod
`/datum/fishing_trait/shiny_lover` - Needs shiny bait or it gets difficulty mod
`/datum/fishing_trait/picky_eater` - Bait needs to be of good/great quality for it to bite
`/datum/fishing_trait/heavy` - It sinks faster in minigame
`/datum/fishing_trait/xbox` - It's double the size visually, produces double the whatever it can be chopped up for < This one doesn't make much sense without randomisation
`/datum/fishing_trait/not_a_fish` - Isn't a fish, and doesn't actually respond to bait. Use whatever.
`/datum/fishing_trait/vegan` - Bait needs to be a grown item from botany.
`/datum/fishing_trait/carnivore` - Bait needs to be some form of meat. Already a thing as fav bait: foodtype, unless it's explicit 0 chance with anything else then i guess that works
Bait can be a trait, path, or foodtype. (Right now fav bait doubles the catch chance and lowers difficulty. Disliked inverse)
Diff mod should be in range of 0 to 50
Size is in cm, Weight in g
Fish AI is one of: Dumb, Slow, Zippy
| Fish | Avg Size | Avg Weight | Fav Bait | Disliked Bait | Fishing Traits | Difficulty Mod | Fish AI |
| ------------------------------- |:--------:|:----------:|:-------------:|:-------------:|:--------------------------------:|:--------------:|:-------:|
| /obj/item/fish/goldfish | 30 | 500 | Worms | Disliked | Traits | 0 | Dumb |
| /obj/item/fish/angelfish | 50 | 1000 | Fav | Disliked | Shiny | 0 | Dumb |
| /obj/item/fish/guppy | 25 | 1000 | Fav | Disliked | Traits | 0 | Dumb |
| /obj/item/fish/plasmatetra | 40 | 1000 | Plasma Sheets | Disliked | Traits | 1 | Dumb |
| /obj/item/fish/catfish | 30 | 1000 | JUNKFOOD | Disliked | Wary | 1 | Dumb |
| /obj/item/fish/clownfish | 50 | 1000 | Fav | Disliked | /datum/fishing_trait/picky_eater | 1 | Zippy |
| /obj/item/fish/cardinal | 50 | 1000 | Fav | Disliked | Vegan | 1 | Dumb |
| /obj/item/fish/greenchromis | 50 | 1000 | Fav | Disliked | Traits | 2 | Dumb |
| /obj/item/fish/firefish | 50 | 1000 | Chili Pepper | Disliked | Traits | 2 | Zippy |
| /obj/item/fish/pufferfish | 75 | 1000 | Fav | Disliked | Traits | 2 | Dumb |
| /obj/item/fish/lanternfish | 50 | 1000 | Fav | Disliked | Heavy | 3 | Slow |
| /obj/item/fish/dwarf_moonfish | 50 | 1000 | Mineral Ore | Disliked | Traits | 3 | Dumb |
| /obj/item/fish/gunner_jellyfish | 60 | 1000 | Fav | Disliked | Traits | 4 | Dumb |
| /obj/item/fish/needlefish | 20 | 1000 | Fav | Disliked | carnivore | 4 | Dumb |
| /obj/item/fish/armorfish | 40 | 1000 | Iron Sheets | Disliked | Heavy | 5 | Slow |
| /obj/item/fish/donkfish | 50 | 1000 | Fav | Disliked | Traits | 1 | Dumb |
| /obj/item/fish/emulsijack | 30 | 1https://hackmd.io/fg55of5WSSSLOojGjqkxNQ?view000 | Fav | Disliked | https://hackmd.io/fg55of5WSSSLOojGjqkxNQ?view Traits | 6 | Dumb |
| /obj/item/fish/ratfish | 50 | 1000 | DAIRY | Disliked | Shiny Lover | 1 | Dumb |
# Fishing Spots:
Feel free to add duds/things to fish out of there
```
/datum/fish_source/ocean
duds = list("this is where funny ocean related puns go")
fish_table = list(
FISHING_DUD = 15,
/obj/item/coin/gold = 5,
/obj/item/fish/clownfish = 15,
/obj/item/fish/pufferfish = 15,
/obj/item/fish/cardinal = 15,
/obj/item/fish/greenchromis = 15,
/obj/item/fish/lanternfish = 5
)
/datum/fish_source/ocean/beach
catalog_description = "Beach shore water"
/datum/fish_source/portal
fish_table = list(
FISHING_DUD = 5,
/obj/item/fish/goldfish = 10,
/obj/item/fish/guppy = 10,
)
catalog_description = "Fish dimension (Fishing portal generator)"
/datum/fish_source/lavaland
catalog_description = "Lava vents"
background = "fishing_background_lavaland"
fish_table = list(
FISHING_DUD = 5,
/obj/item/stack/ore/slag = 20,
/obj/structure/closet/crate/necropolis/tendril = 1,
/obj/effect/mob_spawn/corpse/human/charredskeleton = 1
)
fish_counts = list(
/obj/structure/closet/crate/necropolis/tendril = 1
)
/datum/fish_source/lavaland/can_fish(obj/item/fishing_rod/rod, mob/fisherman)
. = ..()
var/turf/approx = get_turf(fisherman) //todo pass the parent
if(!SSmapping.level_trait(approx.z, ZTRAIT_MINING))
return "There doesn't seem to be anything to catch here."
if(!rod.line || !(rod.line.fishing_line_traits & FISHING_LINE_REINFORCED))
return "You'll need reinforced fishing line to fish in there"
/datum/fish_source/moisture_trap
catalog_description = "moisture trap basins"
fish_table = list(
FISHING_DUD = 20,
/obj/item/fish/ratfish = 5
)
```