Thanks for the advice. I just looked and it's event driven, not adaptable.I'm no modder, so no idea if it'll help, and you may have already tried this, but you can look into how Unique City-States handles conditional removal of promotions.
I could write a lua function in fact but I find it silly to write (probably less well) the same function as the dll.