Orion's Inquisition Mod

Hey Orion, I was wondering if you could help me with this bug:

In my mod, I've included this modcomp, and had no problems until now. The only changes I've made since I last had a working copy that could be relevant are:

1) I changed the position of the Holy Office Building in the XML so it's right after the monasteries

2) I deleted the Holy Offices of all religions except Judaism, Christianity, and Islam (Judaism=Protestantism in my mod)

3) I added a religion (Zoroastrianism)

So here's the bug:

Code:
Traceback (most recent call last):

  File "CvScreensInterface", line 736, in forceScreenRedraw

  File "CvMainInterface", line 789, in redraw

  File "CvMainInterface", line 1712, in updateSelectionButtons

  File "OIM", line 799, in showInquisitionButton

  File "OIM", line 144, in getReligionInquisitor

  File "OIM", line 129, in getReligionHolyOffice

AttributeError: 'NoneType' object has no attribute 'getPrereqReligion'
ERR: Python function forceScreenRedraw failed, module CvScreensInterface

And the offending bit of code:

Code:
def getReligionHolyOffice(iPlayer, iReligion):
	# Orion's Inquisition Mod
	# Returns the Holy Office Name for the specified Religion
	pPlayer = gc.getPlayer(iPlayer)
	pCivilization = gc.getCivilizationInfo(pPlayer.getCivilizationType())
	
	for iBuildingClass in range(gc.getNumBuildingClassInfos()):
		kBuilding = gc.getBuildingInfo(pCivilization.getCivilizationBuildings(iBuildingClass))
		if kBuilding.getPrereqReligion() == iReligion:			
			iBuilding = pCivilization.getCivilizationBuildings(iBuildingClass)
			#CyInterface().addImmediateMessage("C", "")
			if gc.getBuildingInfo(iBuilding).getSpecialBuildingType() == gc.getInfoTypeForString("SPECIALBUILDING_HOLY_OFFICE"):
				MyHolyOfficeName = gc.getBuildingInfo(iBuilding).getType()
				#CyInterface().addImmediateMessage(str(MyHolyOfficeName), "")
				return MyHolyOfficeName
				break

Any ideas?

Yup. Put the Holy Offices back in. Failure to do so would require some Python changes.
 
Alright thanks. I already decided to just change the python. Thanks for the great modcomp!
 
Yes, I did. However as far as I can see, the methods checking for the religion's monastery, temple, etc. aren't actually used anywhere. Any reason?
 
Yes, I did. However as far as I can see, the methods checking for the religion's monastery, temple, etc. aren't actually used anywhere. Any reason?

1. The getReligionMonastery code in OIM was put there for reference. It is actually used for the Petra Monastery World Wonder.

2. The getReligionTemple code in OIM is use by the addStateReligionTempleAllCities function. This funtion is used by the Witches Hammer World Wonder.
 
fyi, i think your inquisition mod is broken in RoM : AND. the AI never does inquisitions (that I can tell). The reason I think so, is because in my original version of the inquisition code there was an announcement everytime a player performed an inquisition. Does your code have this feature? I never see any announcements.

Also, when an AI does an inquisition does it anger other AIs of the target religion? My code never did that, but it certainly would be an improvement.

The reason im bringing this up now, it that I think I am going to resurrect my mod and update it for 3.19. RoM : AND doesnt work for me...the AI is broken. Perhaps I'll refresh my inquisition code unless your mod now has these features.
 
fyi, i think your inquisition mod is broken in RoM : AND. the AI never does inquisitions (that I can tell). The reason I think so, is because in my original version of the inquisition code there was an announcement everytime a player performed an inquisition. Does your code have this feature? I never see any announcements.

Also, when an AI does an inquisition does it anger other AIs of the target religion? My code never did that, but it certainly would be an improvement.

The reason im bringing this up now, it that I think I am going to resurrect my mod and update it for 3.19. RoM : AND doesnt work for me...the AI is broken. Perhaps I'll refresh my inquisition code unless your mod now has these features.

If you try OGI 255E, the inquisition component works perfectly, both for the AI and human players. You should know that in ROM and RevDCM some of the inquisition functions were moved to SDK. In contrast, my component does not have any SDK functions, as I made the choice to keep the mod generic. Just in case I missed something, I will look over the actual inquisition component and if needed, I will update it, for you tonight.
 
If you try OGI 255E, the inquisition component works perfectly, both for the AI and human players. You should know that in ROM and RevDCM some of the inquisition functions were moved to SDK. In contrast, my component does not have any SDK functions, as I made the choice to keep the mod generic. Just in case I missed something, I will look over the actual inquisition component and if needed, I will update it, for you tonight.

cool, good to know...im caught up in trying to get my mod merged with BUG. its not going well, lol.
 
cool, good to know...im caught up in trying to get my mod merged with BUG. its not going well, lol.

Since OIM is now merged with BUG and Better BTS AI (BBAI), you can see how to properly merge OIM in your big mod. There is a DLL required by BBAI, but OIM does not require the DLL to run, if you were to extract it to standard format. I like the merge with BUG & BBAI, as it makes testing very easy using AI Autoplay. Good luck with your mod!
 
Since OIM is now merged with BUG and Better BTS AI (BBAI), you can see how to properly merge OIM in your big mod. There is a DLL required by BBAI, but OIM does not require the DLL to run, if you were to extract it to standard format. I like the merge with BUG & BBAI, as it makes testing very easy using AI Autoplay. Good luck with your mod!

thanks man! I used OGI as a reference to get BUG to work. This was my issue. I rewrote that event handler like 50times :cry:

thanks again!
 
Orion, I am adding your inquisition component to my IIW War mod. I'm going to add it as a KGB agent that removes religions. So I need to remove religions even if I don't have a state religion. Would I change all instances of the following code?
Code:
iStateReligion = ?????
to
Code:
iStateReligion = -1
 
Orion, I am adding your inquisition component to my IIW War mod. I'm going to add it as a KGB agent that removes religions. So I need to remove religions even if I don't have a state religion. Would I change all instances of the following code?
Code:
iStateReligion = ?????
to
Code:
iStateReligion = -1

Any check that is made to see if the player has a state religion (i.e. iStateReligion = -1), can be removed for the KGB agent. You would want to make your KGB agent work like the inquisitor, with one difference. The KGB agent would remove all religions no matter what they are. There would be no exceptions for a state religion, if one exists. All instances, where the religion removal code skips over the state religion, must be removed to make the KGB agent purge all religions in the city. Good Luck!
 
Time for another status update. Mines can now enter foriegn territory if the two players are at war. Code specifically prevents mines from arming within 2 plots of any enemy city. Again, you can only arm the mine outside the 2 plot radius of an enemy city and only if you are at war. When a human player's mine detonates, the plot is given a detonation label to help see the result of mine combat. The AI sweeper code is very effective at scanning and removing mines. After extensive play testing, several difficult to find bugs were all fixed. In the late game on a huge map, multiple mine explosions and sweeper actions were taking place for every civ on every turn. I now consider the SDK version of mine warfare to be complete and the next step is to merge it with my new OGI project. Finally! The amount of hours spent on this project has been enormous. The race is on to complete the entire project in time for Thanksgiving. A tall order, but I believe it is achievable.
 
If the Mine Warfare Project is complete and not merged yet, is it possible to release it or let us get our hands on it as an attachment?:)
I have done so with all of my mods up to this point. There are 37 new SDK functions to make Mine Warfare work and most importantly to make the AI know how to use it very effectively. Since this version of Mine Warfare revolutionizes the game in such a big way, I have decided to make it the carrot to encourage people to play the ultimate game of Civ4, OGI (IMHO). The Mine warfare SDK code is well documented and could be extracted, if you really want it. So, to build up the excitement for OGI, I will not release the stand alone SDK version of Mine Warfare at this time. You will have to wait until OGI is released to get your hands on the SDK. I appologize, but this idea was recommended to me by the historian to foster excitement and encourage people to play OGI.

BTW, I ran another interesting test. I wanted to determine what would occur first on a plot, combat or the detonation of a mine. It turns out that combat occurs first and then the detonation of the mine. So if you attack an enemy unit that sits on a plot with an enemy mine; combat with the unit on the plot occurs first. If you loose, the enemy mine does not detonate. If you win combat, then the mine will be detonated. So, if the attacking unit suffers damage from combat, it will still suffer more damage or even destruction from the detonation of the enemy mine after combat. This sets up an interesting tactic to lure a would be attacker to a mine plot by sentrying an old weaker unit on the plot. The strategy in Mine Warfare is endless!
 
.

BTW, I ran another interesting test. I wanted to determine what would occur first on a plot, combat or the detonation of a mine. It turns out that combat occurs first and then the detonation of the mine. So if you attack an enemy unit that sits on a plot with an enemy mine; combat with the unit on the plot occurs first. If you loose, the enemy mine does not detonate. If you win combat, then the mine will be detonated. So, if the attacking unit suffers damage from combat, it will still suffer more damage or even destruction from the detonation of the enemy mine after combat. This sets up an interesting tactic to lure a would be attacker to a mine plot by sentrying an old weaker unit on the plot. The strategy in Mine Warfare is endless!

Now that makes mine warfare sound interesting and exciting! So I can use some obsolete units to thwart enemy minesweeper units and to draw advanced enemy units to their doom? :mischief::spear::high5:
 
Back
Top Bottom