Herbivores have a vision range...
BigJoe, Geoff, is that easily do-able?
Moster movement is done with an effect (defined as part of their body, which is internally a hull type), which uses a condition to select the destination. Conditions can by arbitrarily complex, and distance or starlane jumps tests can be used.
Current monsters use something similar to this to move:
scope = And [
activation = Random probability = 0.3
stackinggroup = "MONSTER_FLEET_MOVE_STACK"
effects = SetDestination destination = And [
WithinStarlaneJumps 1 Source
Not Contains Source
The relevant condition for selecting where to move is the one after destination =. This condition can include anything from this list
, assuming it's been updated recently and correctly. In this case, it selects systems that are starlane-adjacent to the monster's current system (within 1 jump away, but not the system that currently contains the monster).
However, doing a lot of WithinStarlaneJumps tests with large jumps limits, or doing many WithinDistance not after other very restrictive conditions, is generally not a good idea because it can slow down turn processing significantly.
Note also that monster movement could be made dependent on the locations of player-controlled or non-player-controlled buildings or ships, or what focus a planet is using, or star type, or the monster's health. Other things could also be made usable on request, such as monster age in turns.
Is our Gaian special actually used? I can't recall finding one in several years of testing.
Not by the engine. It can be added by effects, or could be moved from specials.txt into planet_specials.txt if it was desired to randomly appear on planets.