Using this lua code:
local race
for k,v in pairs(df.global.world.populations) do
if (df.global.world.populations[k].type==1) and (df.global.world.populations[k].race==430) then
print(v)
race = df.global.world.populations[k].race
print(df.global.world.raws.creatures.all[race].creature_id)
print(df.global.world.populations[k].quantity)
print(" ")
end
end
I have been able to track the decreasing population of fish in a surface stream. In particular, I had a test embark where only mussels were extracted from the stream. You get results like this:
<local_population: 0x040f1748>
MUSSEL
298
<local_population: 0x040f37e0>
MUSSEL
311
<local_population: 0x040fdd40>
MUSSEL
306 --------- this one decreases by 3 if someone removed mussel[3] from the stream
<local_population: 0x04100468>
MUSSEL
366
<local_population: 0x04110eb0>
MUSSEL
349
<local_population: 0x041135d8>
MUSSEL
436
Now I found that I could accelerate the arrival of "There is nothing to catch in the river" by reducing the quantity, or forestall it by increasing the quantity. However once there were no mussels left, the area became unfishable even if I set the population high again. Unfishable= you see zero fishing tiles when painting the fishing zone. The unfishable thing only applies to the one embark tile that everyone was fishing in, but not other parts of the map.
When looking at cave fish (race=510 in vanilla 0.34.11), there is a population of 1-2 cave fish, which can be seen teleporting around the underground lake. Fishing in the underground lake gets the "nothing to catch" message, without catching that one fish and without making the area unfishable. Increasing the cave fish populations using dfhack doesn't allow fisherdwarves to actually catch anything, but greatly increases the number of fish that can be seen teleporting around the underground lake.
Therefore each embark tile (those 48*48*Z areas of the map) or perhaps the river features have some kind of flag that informs the game that it has been fished out.
Unrelatedly, cave fishing doesn't behave the same way as river fishing, and something is causing cave fish populations to be very low despite what the raw files indicate.
If I multiply the cave fish pops in the raw files by 100, and generate a new world, some of the quantities in the list outputted by my lua code are between 90-110, while others are still 1. However I still got the "nothing to catch" message when fishing in several cavern locations, despite the visible teleporting cave fish.