1. We have added a Gift Upgrades feature that allows you to gift an account upgrade to another member, just in time for the holiday season. You can see the gift option when going to the Account Upgrades screen, or on any user profile screen.
    Dismiss Notice

Inquisition

Discussion in 'Civ4 - Mod Components' started by bmarnz, Oct 31, 2007.

  1. Trivas

    Trivas Chieftain

    Joined:
    Jan 8, 2008
    Messages:
    39
    Thank you for that. I was worried that I was having a problem.
     
  2. OrionVeteran

    OrionVeteran Deity

    Joined:
    Dec 25, 2003
    Messages:
    2,443
    Location:
    Newport News VA
    Most of the mod summary is on the download page. But, fair enough. I will repost it here for clarity and discussion. Perhaps there is still more we can do to make this mod even better.

    Orion's Inquisition Mod ver 1.01D

    1. Summary: This mod introduces a new unit called the Inquisitor to Civ4 BTS v3.17: While the missionary seeks to spread the state religion, the Inquisitor is used to remove all non-state religions from a city. Like the Missionary, the inquisitor is limited to a maximum of only 3 units a player can have at any one time. As the defender of the official state religious faith, the inquisitor is a very powerful unit. If an inquisition is successful, all non-state religions and their associated non-state religious buildings will be removed from the city. Whether the inquisition is successful or not, the unit is used up after executing an inquisition. Thus, the production of many inquisitors may be necessary to finally achieve religious unity. The mod has a new victory condition for the game called the religious victory. To win with a religious victory, a player must achieve total religious unity and influence through 6 prerequisites (see below).

    2. There are three options available in the GlobalDefinesAlt.xml file for this mod:

    a. Limited Religions -- If you want to play a game with Limited Religions, then simply change the default value to 1. If not, make sure the value is set to 0.

    b. Foreign inquisitions -- If you want to play a game with foreign inquisitions, then simply change the default value to 1. If not, make sure the value is set to 0. You can conduct a foreign inquisition, only if you meet all 3 prerequisites below.

    c. Bypass First to Discover Religion Rule -- If you want to play a game with the Bypass feature, then simply change the default value to 1. If not, make sure the value is set to 0. Make sure the Choose Religions game option is unchecked at the start of the game. Special thanks to Modifieda4 for the idea.

    3. Prerequisites for conducting an inquisition:

    a. To build an inquisitor: You must have researched Theology, have a state religion and have produced a “Holy Office” building in at least one city.

    b. To use an inquisitor in a city: You must have your state religion previously established in a city and there must be at least one non-state religion established in the same city.

    c. To use an inquisitor in a foreign city: The foreign civilization must have the same state religion as you, the foreign civilization must have an open borders agreement with you and the foreign city must also meet the requirements of prerequisite b above.

    4. Special Tech Theology: In limited religions: If you have not founded a Holy city and you are behind in research, Fear not! Theology will allow you to found a Holy City, if you do not have one and you don't have to be the first one to discover the tech. If there are any religions left from among the 7, you can found one.

    5. There are 6 prerequisites for achieving a religious victory:

    a. A player must have an official State Religion
    b. A player must have the Holy City for the official State Religion
    c. All of a player's cities must have the official state religion established.
    d. All of a player's cities must not have any non-state religions established.
    e. Religious influence must be at least 80%
    f. A player must have built the official State Religion Shrine.


    6. How this mod differs from BMARNZ' original mods:

    a. BMARNZ had two versions of the mod - One for limited religions and one without. This version combines both mods into one and provides game options for limitted religions and foreign inquisitions. Play the game the way you prefer to play it.

    b. BMARNZ did not have the capability to conduct foreign inquisitions, this mod has an option to conduct inquisitions in foreign territory with strict preconditions that make sense.

    c. BMARNZ did not have 6 prerequisites for achieving a religious victory. He had only 1 of the 6 we have now: Religious influence. The improved version now recognizes the importance of achieving Religious Unity and makes it a strict requirement for a religious victory. IMO this is the best improvment over the original BMARNZ mods.

    d. The BMARNZ version of limited religions had a bug that slowed down or even prevented the AI from founding a religion. That bug is fixed in this new improved version. The AI will found a religion right on time.

    e. BMARNZ did not have a prerequisite building to allow production of an inquisitor. The mod has a new building that recognizes the effects of conducting on going inquisitions and applies them logically (i.e. The Holy Office building simulates the confiscation of the victims property by the state, represented by gold and the slight loss in population, represented by unhealthiness.)

    f. BMARNZ did not have a modification to Theology that allows a player to found a Holy City, even if someone else discovered the tech first. This bypass feature defeats the religious tech exploit, without changing the rules on every religious tech. Both the Holy Office and the bypass feature, to allow the founding of a Holy City, makes Theology a very special tech.

    7. I think that about covers it. If there is something I may have left out, please let me know and I will edit my comments here for everyone's benefit.

    Sincerely,

    Orion Veteran :cool:
     
  3. modifieda4

    modifieda4 Chief Time Waster

    Joined:
    Sep 3, 2006
    Messages:
    385
    Location:
    Gold Coast
    Bmarnz original files rehosted

    plain:
    http://forums.civfanatics.com/./downloads.php?do=file&id=10894
    limited religions:
    http://forums.civfanatics.com/./downloads.php?do=file&id=10895

    Trivas:

    note these files had some bugs. Your best bet for playablity of a plain inquisition is to get Orion's first version of his inquisition and merge only the inquisition aspects of the files over into your own mod.

    Personally I like the holy office inquisition addition, which I merged into my Expanded Plus mod. so if you dont mind that you could do the same and/or download his latest version (with holy office) and turn everything off.
     
  4. OrionVeteran

    OrionVeteran Deity

    Joined:
    Dec 25, 2003
    Messages:
    2,443
    Location:
    Newport News VA
    Modifieda4,

    What do you think about the latest version?
     
  5. modifieda4

    modifieda4 Chief Time Waster

    Joined:
    Sep 3, 2006
    Messages:
    385
    Location:
    Gold Coast
    I havent tried it explicitly, but I like the holy office/inquisition changes (which i included in my mod). I also like the foriegn inquisition changes. I think both of these are great additions.

    per our previous posts, i think we have different approaches to the limited religions. i dont play for religious victories nor with the choose religion game option enabled. so those aspects dont interest me either.

    i think this mod is pretty mature now, not much else to do. Maybe a real mod component version of the inquisition. really basic without the other stuff so its easy to integrate into other people's mods.
     
  6. OrionVeteran

    OrionVeteran Deity

    Joined:
    Dec 25, 2003
    Messages:
    2,443
    Location:
    Newport News VA
    Thanks. I couldn't agree more. :)


    I'd like to discuss the differences and perhaps make a change that both of us can support. Correct me if I am wrong, I see the following differences to the "first person to research" bypass feature:

    1. Your appraoch is to have the bypass feature apply to every religious tech. This effectively allows a player to found a Holy City if the player does not have one and the default religion for the respective tech has not been founded yet. The "Choose Religions" option would be set to false.

    2. My existing approach is have the bypass feature only apply to the Tech Theology. Thus, normal rules apply to all other religious techs, whereby the first person to found the tech founds the religion, unless (in limited Religions)the player already has a Holy City. The "Choose Religions" option would be set to True.

    Here is the key question: Should bypass feature apply to a single tech, Theology, or all religious techs? What are the pros and cons?

    Perhaps an option can be made for the bypass feature. 1 to limit the Bypass feature to a single tech. 0 to have the Bypass feature work on all religious techs. I think being able to set an option allows the freedom of choice to play the game with the feature you desire.

    Your thoughts...

    Orion Veteran :cool:
     
  7. Trivas

    Trivas Chieftain

    Joined:
    Jan 8, 2008
    Messages:
    39
    Many thanks to both modifieda4 and OrionVeteran for your help. After reading what Orion just put up, I believe that may indeed be what I am looking for. I have reviewed the files that were in Orion's download and believe I can handle it from here. Unfortunately, I have enhanced (per se) several different minor things to customize my tastes and to fix what I believe are balance problems, so I will have to locate the code and manually ensure that my additions are not destroyed and are still usable in the mod. It shouldn't be too bad as I have a very tiny amount of experience in those things, but I will post here if I have problems.

    Thank you guys again, I have accomplished one of my two desires, now on to terraforming . . . .
     
  8. OrionVeteran

    OrionVeteran Deity

    Joined:
    Dec 25, 2003
    Messages:
    2,443
    Location:
    Newport News VA
    Care to share what those minor things, customizations or balance problems are?
     
  9. modifieda4

    modifieda4 Chief Time Waster

    Joined:
    Sep 3, 2006
    Messages:
    385
    Location:
    Gold Coast
    LOL! I felt the same way so i created my own mod :)
     
  10. The Capo

    The Capo godless Heathen

    Joined:
    Jan 29, 2001
    Messages:
    9,302
    Location:
    Washington, DC
    I'm pretty sure this is the same mod (maybe an older version though) I am using in a mod I am working on. Basically everything works perfectly fine but I was playtesting it and I think the AI was trying to build an Inquisitor, or did build an Inquisitor, or something to that effect and I got a python error pop-up. I am very new to modding so I can't recognize a problem based on the error pop-up itself, which brings me here. Here is the error message I got;

    file "CvGameInterface", line 180, in AI_chooseProduction
    file "CvGameUtils", line 269, in AI_chooseProduction

    Type Error: 'NoneType' object is not callable

    Which is why I assumed it was an AI issue (also I was not building an Inquisitor or anything like that myself. Now here is the code for the two files discussed.


    Alright, well in the mod I am using I don't have a CvGameInterface.py file, so I assume that refers to the vanilla BtS file. Here is the code surrounding and including line 180:

    Code:
    def AI_chooseProduction(argsList):
    	'AI chooses city production'
    	#CvUtil.pyPrint( "CvGameInterface.AI_chooseProduction" )
    	return gameUtils().AI_chooseProduction(argsList)
    
    In my mod this is the code I have surrounding and including line 180 in the CvGameUtils.py file:

    Code:
    		if not iStateReligion == -1 :
    			#if gc.getPlayer( iOwner ).getStateReligion( ) >= 0:
    			if pCity.canTrain( iTaoInq, 0, 0 ) or pCity.canTrain( iConInq, 0, 0 ) or pCity.canTrain( iJudInq, 0, 0 ) or pCity.canTrain( iHinInq, 0, 0 ) or pCity.canTrain( iBudInq, 0, 0 ) or pCity.canTrain( iIslInq, 0, 0 ) or pCity.canTrain( iChrInq, 0, 0 ) or pCity.canTrain( iOlyInq, 0, 0 ) or pCity.canTrain( iAseInq, 0, 0 ) or pCity.canTrain( iVooInq, 0, 0 ) or pCity.canTrain( iShiInq, 0, 0 ) or pCity.canTrain( iZorInq, 0, 0 ) or pCity.canTrain( iRaaInq, 0, 0 ) or pCity.canTrain( iTolInq, 0, 0 ):
    				lUnits = PyPlayer( pPlayer.getID( ) ).getUnitList( )
    				for iUnit in range( len( lUnits) ):
    					# if there are any Inquisitors, don't Build one
    					if pPlayer.getUnit( lUnits[ iUnit ].getID( ) ).getUnitType( ) == iJudInq or pPlayer.getUnit( lUnits[ iUnit ].getID( ) ).getUnitType( ) == iChrInq or pPlayer.getUnit( lUnits[ iUnit ].getID( ) ).getUnitType( ) == iIslInq or pPlayer.getUnit( lUnits[ iUnit ].getID( ) ).getUnitType( ) == iHinInq or pPlayer.getUnit( lUnits[ iUnit ].getID( ) ).getUnitType( ) == iBudInq or pPlayer.getUnit( lUnits[ iUnit ].getID( ) ).getUnitType( ) == iConInq or pPlayer.getUnit( lUnits[ iUnit ].getID( ) ).getUnitType( ) == iTaoInq or pPlayer.getUnit( lUnits[ iUnit ].getID( ) ).getUnitType( ) == iOlyInq or pPlayer.getUnit( lUnits[ iUnit ].getID( ) ).getUnitType( ) == iAseInq or pPlayer.getUnit( lUnits[ iUnit ].getID( ) ).getUnitType( ) == iVooInq or pPlayer.getUnit( lUnits[ iUnit ].getID( ) ).getUnitType( ) == iShiInq or pPlayer.getUnit( lUnits[ iUnit ].getID( ) ).getUnitType( ) == iZorInq or pPlayer.getUnit( lUnits[ iUnit ].getID( ) ).getUnitType( ) == iRaaInq or pPlayer.getUnit( lUnits[ iUnit ].getID( ) ).getUnitType( ) == iTolInq:
    						return False
    				if self.getRandomNumber( 2 ) == 0:
    					iInqVersions = { "1": gc.getMap( ).plot( pCity.getX( ), pCity.getY( ) ).getPlotCity( ).pushOrder( OrderTypes.ORDER_TRAIN, iJudInq, -1, False, False, False, True ), "2": gc.getMap( ).plot( pCity.getX( ), pCity.getY( ) ).getPlotCity( ).pushOrder( OrderTypes.ORDER_TRAIN, iChrInq, -1, False, False, False, True ), "3": gc.getMap( ).plot( pCity.getX( ), pCity.getY( ) ).getPlotCity( ).pushOrder( OrderTypes.ORDER_TRAIN, iIslInq, -1, False, False, False, True ), "4": gc.getMap( ).plot( pCity.getX( ), pCity.getY( ) ).getPlotCity( ).pushOrder( OrderTypes.ORDER_TRAIN, iHinInq, -1, False, False, False, True ), "5": gc.getMap( ).plot( pCity.getX( ), pCity.getY( ) ).getPlotCity( ).pushOrder( OrderTypes.ORDER_TRAIN, iBudInq, -1, False, False, False, True ), "6": gc.getMap( ).plot( pCity.getX( ), pCity.getY( ) ).getPlotCity( ).pushOrder( OrderTypes.ORDER_TRAIN, iConInq, -1, False, False, False, True ), "7": gc.getMap( ).plot( pCity.getX( ), pCity.getY( ) ).getPlotCity( ).pushOrder( OrderTypes.ORDER_TRAIN, iTaoInq, -1, False, False, False, True ), "8": gc.getMap( ).plot( pCity.getX( ), pCity.getY( ) ).getPlotCity( ).pushOrder( OrderTypes.ORDER_TRAIN, iOlyInq, -1, False, False, False, True ), "9": gc.getMap( ).plot( pCity.getX( ), pCity.getY( ) ).getPlotCity( ).pushOrder( OrderTypes.ORDER_TRAIN, iAseInq, -1, False, False, False, True ), "10": gc.getMap( ).plot( pCity.getX( ), pCity.getY( ) ).getPlotCity( ).pushOrder( OrderTypes.ORDER_TRAIN, iVooInq, -1, False, False, False, True ), "11": gc.getMap( ).plot( pCity.getX( ), pCity.getY( ) ).getPlotCity( ).pushOrder( OrderTypes.ORDER_TRAIN, iShiInq, -1, False, False, False, True ), "12": gc.getMap( ).plot( pCity.getX( ), pCity.getY( ) ).getPlotCity( ).pushOrder( OrderTypes.ORDER_TRAIN, iZorInq, -1, False, False, False, True ), "13": gc.getMap( ).plot( pCity.getX( ), pCity.getY( ) ).getPlotCity( ).pushOrder( OrderTypes.ORDER_TRAIN, iRaaInq, -1, False, False, False, True ), "14": gc.getMap( ).plot( pCity.getX( ), pCity.getY( ) ).getPlotCity( ).pushOrder( OrderTypes.ORDER_TRAIN, iTolInq, -1, False, False, False, True )}
    					iInqVersions.get( pPlayer.getStateReligion( ), ) ()
    					return True
    		return False
    
    Line 269 in this (the one in question) is the line that says:

    Code:
    					iInqVersions.get( pPlayer.getStateReligion( ), ) ()
    
    Can anybody help me with this?
     
  11. OrionVeteran

    OrionVeteran Deity

    Joined:
    Dec 25, 2003
    Messages:
    2,443
    Location:
    Newport News VA
    The Inquisition Mod has the same function, but it is coded differently in the CvGameUtils.py file:

    def AI_chooseProduction(self,argsList):

    You might want to compare the two functions.

    V/R,

    Orion Veteran :cool:
     
  12. modifieda4

    modifieda4 Chief Time Waster

    Joined:
    Sep 3, 2006
    Messages:
    385
    Location:
    Gold Coast
    you could always make another feature switch. unfortunately I dont think this mod will ever be played by itself (no offense)...there are just too many other good features in other mods out there.

    with that in mind, all the feature switching code makes it much harder to merge the good ideas and features of this mod into other mods.

    this is why i suggested offering the component parts of the mod stripped down. something like:
    • limited religions (my version - available in sig)
    • limited religions (your version)
    • domestic inquisition (with holy office)
    • domestic + foreign inquisition (with holy office)
    • religious unity

    I think if you started a new thread (linked to this one), and offered those 5 downloads as components in the first post it would be very popular :)

    of course you could still have the all in one mod :goodjob:
     
  13. OrionVeteran

    OrionVeteran Deity

    Joined:
    Dec 25, 2003
    Messages:
    2,443
    Location:
    Newport News VA
    Funny you should mention the effort to combine this into other mods, as I am currently attempting to create a cleaned up version and documenting where all the changes are to simplify the python conversion process. I have been wanting to do this for a long time -- again for everyone's benefit. Lastly, my preference is to stick with the all in one version and I will diligently work to include your version, as I think it deserves to be included in the finished product. With my schedule, it will take a several days to clean up the code, document it and retest all features.

    Sincerely,

    Orion Veteran :cool:
     
  14. glider1

    glider1 Deity

    Joined:
    May 29, 2006
    Messages:
    2,784
    Location:
    Where animals hop not run
    @OrionVeteran
    Thanks for your efforts on Inquisitions including making it simpler to incorporate your ideas into other mods. I know how much work is involved in designing and testing......
    Cheers.
     
  15. The Capo

    The Capo godless Heathen

    Joined:
    Jan 29, 2001
    Messages:
    9,302
    Location:
    Washington, DC
    It doesn't say that in my CvGameUtils.py file, where are you seeing this?
     
  16. OrionVeteran

    OrionVeteran Deity

    Joined:
    Dec 25, 2003
    Messages:
    2,443
    Location:
    Newport News VA
    In version 101D, CvGameUtils.py file: Look at line 239

    V/R,

    Orion Veteran :cool:
     
  17. The Capo

    The Capo godless Heathen

    Joined:
    Jan 29, 2001
    Messages:
    9,302
    Location:
    Washington, DC
    Alright, in our mod we added an Inquisitor for each religion. So there are different Inquisitors. Their actions and everything work perfectly fine, and this is what it says in my CvGameUtils.py:

    Code:
    	def AI_chooseProduction(self,argsList):
    		pCity = argsList[0]
    		iTaoInq = CvUtil.findInfoTypeNum( gc.getUnitInfo, gc.getNumUnitInfos(), "UNIT_TAOIST_INQUISITOR" )
    		iConInq = CvUtil.findInfoTypeNum( gc.getUnitInfo, gc.getNumUnitInfos(), "UNIT_CONFUCIAN_INQUISITOR" )
    		iBudInq = CvUtil.findInfoTypeNum( gc.getUnitInfo, gc.getNumUnitInfos(), "UNIT_BUDDHIST_INQUISITOR" )
    		iHinInq = CvUtil.findInfoTypeNum( gc.getUnitInfo, gc.getNumUnitInfos(), "UNIT_HINDU_INQUISITOR" )
    		iJudInq = CvUtil.findInfoTypeNum( gc.getUnitInfo, gc.getNumUnitInfos(), "UNIT_JEWISH_INQUISITOR" )
    		iChrInq = CvUtil.findInfoTypeNum( gc.getUnitInfo, gc.getNumUnitInfos(), "UNIT_CHRISTIAN_INQUISITOR" )
    		iIslInq = CvUtil.findInfoTypeNum( gc.getUnitInfo, gc.getNumUnitInfos(), "UNIT_ISLAMIC_INQUISITOR" )
    		iOlyInq = CvUtil.findInfoTypeNum( gc.getUnitInfo, gc.getNumUnitInfos(), "UNIT_OLYMP_INQUISITOR" )
    		iAseInq = CvUtil.findInfoTypeNum( gc.getUnitInfo, gc.getNumUnitInfos(), "UNIT_ASEN_INQUISITOR" )
    		iVooInq = CvUtil.findInfoTypeNum( gc.getUnitInfo, gc.getNumUnitInfos(), "UNIT_VOODOO_INQUISITOR" )
    		iShiInq = CvUtil.findInfoTypeNum( gc.getUnitInfo, gc.getNumUnitInfos(), "UNIT_SHINTO_INQUISITOR" )
    		iZorInq = CvUtil.findInfoTypeNum( gc.getUnitInfo, gc.getNumUnitInfos(), "UNIT_ZORO_INQUISITOR" )
    		iRaaInq = CvUtil.findInfoTypeNum( gc.getUnitInfo, gc.getNumUnitInfos(), "UNIT_RA_INQUISITOR" )
    		iTolInq = CvUtil.findInfoTypeNum( gc.getUnitInfo, gc.getNumUnitInfos(), "UNIT_TOLTEC_INQUISITOR" ) 
    		iOwner = pCity.getOwner( )
    		pPlayer = gc.getPlayer( iOwner )
    		iStateReligion = pPlayer.getStateReligion()
    
    As you can see we do have the AI_chooseProduction(self,argsList): present in our file. So are you saying that what I have to do is go into my CvGameInterface.py file and replace the part that says:

    Code:
    def AI_chooseProduction(argsList):
    	'AI chooses city production'
    	#CvUtil.pyPrint( "CvGameInterface.AI_chooseProduction" )
    	return gameUtils().AI_chooseProduction(argsList)
    
    With this?

    Code:
    def AI_chooseProduction(self,argsList):
    	'AI chooses city production'
    	#CvUtil.pyPrint( "CvGameInterface.AI_chooseProduction" )
    	return gameUtils().AI_chooseProduction(self,argsList)
    
    Sorry, I don't mean to be annoying I just want to get this right.
     
  18. The Capo

    The Capo godless Heathen

    Joined:
    Jan 29, 2001
    Messages:
    9,302
    Location:
    Washington, DC
    Also which one is your updated version? Its confusing you should put a link up
     
  19. Ninja2

    Ninja2 Great Engineer

    Joined:
    Nov 17, 2005
    Messages:
    1,142
    Location:
    Denmarkia
    Yes, you should put a download link in your sig. :)
     
  20. OrionVeteran

    OrionVeteran Deity

    Joined:
    Dec 25, 2003
    Messages:
    2,443
    Location:
    Newport News VA
    OK I have added the download to my signature.

    BTW: Testing of cleaned up version is going well.

    V/R,

    Orion Veteran :cool:
     

Share This Page