TECH_FUNDAMENTALISM still exists. The in-game display name has been changed but the tech is still there. That part of the code works. I use CyInterface().addMessage to walk through the steps of a Python routine to figure out what's going on if it doesn't work right. I can get a message to trigger after that test.
That being said, I'm getting a -1 from the test ppCity.getNumActiveBuilding(self.iBUILDING_CRUSADE) as well. I don't know if we changed something in the DLL code, because that part of the Python code hasn't been touched in a long time, except for fixing a little bit of capitalization, and even that was about 5 years ago. Using AddMessages, I get a successful message just before the "if ppCity.getNumActiveBuilding(self.iBUILDING_CRUSADE) == True" test but not after it, so I think that is where the problem is.
I'm also getting a -1 from a ppCity.getNumBuildings() check, despite the city having a Palace and the Crusade. And if I add buildings in WorldBuilder, I still get -1. So the problem may be with getNumActiveBuilding, or it may be with how getCity works.