I have tested it and it seems that it is indeed a purchase callback in OpenTTD. So this seems either an NML bug, or we missed some implementation details in NML.
Hence I am raising this issue and hopefully someone more familiar with NML's codebase could decide whether this is an actual bug.
Hi,
During the discussion of a grf-py PR, we noticed that NML treats station availability as a default callback, not a purchase one.
https://github.com/OpenTTD/nml/blob/a139540406bdae9281e43277d8f435a0b362bd39/nml/actions/action3_callbacks.py#L141
I have tested it and it seems that it is indeed a purchase callback in OpenTTD. So this seems either an NML bug, or we missed some implementation details in NML.
Hence I am raising this issue and hopefully someone more familiar with NML's codebase could decide whether this is an actual bug.