entities = <|
"crab town" -> <|"residents" -> 20, "damage level" -> 0|>,
"fisherman" -> <|"behavior" -> "fishing"|>
|>;
rules = {
{"fisherman", "behavior", Switch[#,
"fishing", {"reeling",
If[#2["crab town", "residents"] > 0,
RandomChoice[{1, 3} -> {"caught", "empty"}], "empty"]},
{"reeling", _}, {"waiting", 2},
{"waiting", _?Positive}, {"waiting", #[[2]] - 1},
{"waiting", 0}, "casting",
"casting", "fishing"] &},
{"crab town", "residents",