Hey, Melian, just a thought -- you say that the GetWaterLevel function returns an anomalously high or low value when called in a cell that has water unchecked? Does it do this in a "reliable" way, so to speak? As in, can we always expect it to be 10,000 units higher or lower than the highest static in the area?
I'm only guessing here, I haven't tested it, but I'm *assuming* that the default water level would be 0, and that this is in fact the problem since many cells have statics placed below 0 - sometimes (but not always) quite a long way below 0.
A side note to Red Eye: I guess it would be possible for MPP to set the cell to have water and set the water level low enough, but I'm not sure if that would be a reliable fix - wouldn't it be overwritten by any mod that changes the cell? If so it would be better to fix it in a mod that loads last or nearly last. Also, a great many modded cells have this problem, because the default position the editor puts stuff in when you create a new cell is well below 0 IIRC.
The most reliable water check I know of is the one I posted earlier. I use it for companions' z-pos fix while swimming (otherwise they only really follow on x,y, they don't move at all if you go straight down/up). Basically this would be quite reliable on systems where GetSoundPlaying is reliable (which is most). But like I said, you'll need a global script to figure out if the cell has water, because the sounds only play when the player moves. And it just won't work on some systems. But personally I'd say err on the side of false negatives rather than false positives.
I don't know of any check that would always be reliable, sorry.
I always loved testing absurd but possible things to see if the developers accounted for this or that -- it's why I heftily respected the Infocom designers for those old IF games. For me at least, it's not just about preventing the immersion-breaking effect of a player getting away with doing an inanely absurd thing, but rather about a tight ship, so to speak. It always greatly increases the value of the experience for me, aside from specific RP immersion issues, to see that a lot of thought went into accounting for situational variation.
Thank you for explaining this! I tend to think "If the player wants to cheat/do daft things they can always use the console, so why bother trying to stop them?". I never got why people bothered with that before.