Shortly after posting this, I ended up trying my hand at some ACS anyway and got the problem mostly solved without such attempted XLAT hacks (or is that "hacx"?

). Guess we can mark it as a "nice to have but probably not doable."
While we're on the topic, I'm having some slight trouble with ZDoom's handling of mirrored polyobjects -- the engine is tossing up an "EV_OpenPolyDoor: Invalid polyobj num: x" error when trying to open a door if the corresponding "pseudo-mirrored" poly is missing. Is there any way to get the engine to suppress the message? Otherwise I'd have to make a third tag range for defining non-mirrored polyobjects, which leads to a lot of copypasta on the EE side. Might have to do that anyway, though, depending on whether or not EE prints an error in this case as well.
[EDIT] Eternity doesn't seem to mind if the mirrored poly is missing (it's actually set up as a legit mirror there, though the behavior is the same in either case). I wonder if it's possible to get away with just nulling the error message in LANGUAGE, as terrible a hack as that would be. Is there a way to check if a polyobject with a certain ID exists within ACS? That'd be better, of course.
[DOUBLE-EDIT] GetPolyobjX should do. I have an odd habit of asking a question then answering it myself.
Finally, is it safe for Hacx to actually implement Script #0? I figured it was engine-reserved for Strife so I'm just using a high number right now (#888) for the extra effects.
Thanks, by the way.
