MNAI 2.71 release

I hope I'm not too late for this shiny mod. Thank you Tholal, It's a truly great mod! I appreciate your many years of effort.

Here's some issues from Advanced Tactics diplomacy, it might be discussed before though.
AI civs can be exploited by human players. If we give resources, they sell their techs. But we can destroy the corresponding improvement(i.e. the plantation for Dye) right after the deal. Then the AI civ gains nothing while the human already took the techs. The improvement can be rebuild at anytime.
Also during Stasis(Illian's world spell) happiness/health resources are totally useless but Ais accept those and give us their technology. We can cancel the deal right after 10 turns. Stasis is long and we can use this cheat twice to every neighbor civ theoretically.:D

And some question. I love Technology diffusion but am not a big fan of Super Fort(Fort-spamming on every resource tile in unowned territory is not my flavour however AIs are doing that very very well...). Is there any way to enable only the tech diffusion OR to disable only the super fort?
 
AI civs can be exploited by human players. If we give resources, they sell their techs. But we can destroy the corresponding improvement(i.e. the plantation for Dye) right after the deal. Then the AI civ gains nothing while the human already took the techs. The improvement can be rebuild at anytime.
Also during Stasis(Illian's world spell) happiness/health resources are totally useless but Ais accept those and give us their technology. We can cancel the deal right after 10 turns. Stasis is long and we can use this cheat twice to every neighbor civ theoretically.:D

And some question. I love Technology diffusion but am not a big fan of Super Fort(Fort-spamming on every resource tile in unowned territory is not my flavour however AIs are doing that very very well...). Is there any way to enable only the tech diffusion OR to disable only the super fort?

I second this concern with Advanced Diplomacy. I think an improvement might be a diplomatic penalty when the traded resources are cancelled for any reason during the trade-locked turns and requiring a longer commitment on trade of the resources. I think disabling trade for happiness/health resources during Stasis would be a good idea also.

I really like the Technology Diffusion and Super Forts, but maybe you could put in a separate option to disable Super Forts for those that don't like them. Please don't take them out entirely though! The AI is much more difficult with them, and let's face it: the AI needs all the help they can get. This was a feature in BTS I've longed to see in FFH2.

Thanks again for developing this great mod! I enjoy playing it on LAN with friends. Now I just need to get it working on Linux Mint also. Civ IV BTS works, and so do official mods like FFH...just for some reason not FFH2.

Also: can you have an option to disable the Landmarks on Unique Features so you can't cheat the Fog of War to find them? Also preventing the Hidden Nationality units from destroying Brigit on capture at the Ring of Carcer would be great! Finally, do you have plans to prevent the disappearance of Unique Features after Explore Lair is used on Bradeline's Well, the Pyre of the Seraphic, Broken Sepulcher, and the Aifon Isle/Maenalus that can be explored? Either using the Unique Feature cooldown and swap to the non-explorer version or the bGraphicalOnly change with disabled improvements similar to ExtraModMod or MagisterModMod?
 
Last edited:
I found a sailors dirge sitting in an ice field 2 tiles from open water so it's stuck there. seems there is nothing actually checking if the plot it spawns on is ice or not
Code:
def doSailorsDirge(argsList):
    kTriggeredData = argsList[0]
    iUnit = gc.getInfoTypeForString('UNIT_SAILORS_DIRGE')
    if CyGame().getUnitCreatedCount(iUnit) == 0:
        pBestPlot = -1
        iBestPlot = -1
        for i in range (CyMap().numPlots()):
            pPlot = CyMap().plotByIndex(i)
            iPlot = -1
            if pPlot.isWater():
                if pPlot.getNumUnits() == 0:
                    iPlot = CyGame().getSorenRandNum(500, "Sailors Dirge")
                    iPlot = iPlot + (pPlot.area().getNumTiles() * 10)
                    if pPlot.isOwned():
                        iPlot = iPlot / 2
                    if iPlot > iBestPlot:
                        iBestPlot = iPlot
                        pBestPlot = pPlot
        if iBestPlot != -1:
            bPlayer = gc.getPlayer(gc.getBARBARIAN_PLAYER())
            newUnit = bPlayer.initUnit(iUnit, pBestPlot.getX(), pBestPlot.getY(), UnitAITypes.NO_UNITAI, DirectionTypes.DIRECTION_SOUTH)
            iSkeleton = gc.getInfoTypeForString('UNIT_SKELETON')
            bPlayer.initUnit(iSkeleton, newUnit.getX(), newUnit.getY(), UnitAITypes.NO_UNITAI, DirectionTypes.DIRECTION_SOUTH)
            bPlayer.initUnit(iSkeleton, newUnit.getX(), newUnit.getY(), UnitAITypes.NO_UNITAI, DirectionTypes.DIRECTION_SOUTH)
            bPlayer.initUnit(iSkeleton, newUnit.getX(), newUnit.getY(), UnitAITypes.NO_UNITAI, DirectionTypes.DIRECTION_SOUTH)
 
1.In CustomFunction.py under def snowgenesis the following code is called twice. It doesn't/shouldn't hurt anything but it's not needed twice.
Code:
pPlot.changePlotCounter(-100)
2.In CvEventManager.py at line 446 used to be just 1 line instead of 3. Same thing happens at line 1374. I was curious if anyone knew why the change from 1 line to 3?
Spoiler :
new
Code:
            FLAT_WORLDS = [ # map scripts with wrapping but no equator
                "ErebusWrap", "Erebus", "Erebus_mst",
            ]
old
Code:
            FLAT_WORLDS = ["ErebusWrap", "Erebus"]            # map scripts with wrapping but no equator
new
Code:
            CvUtil.pyPrint('Player %d Civilization %s unit %s is moving to %d, %d'
                %(player.getID(), player.getCivilizationName(), unitInfo.getDescription(),
                pUnit.getX(), pUnit.getY()))
old
Code:
            CvUtil.pyPrint('Player %d Civilization %s unit %s is moving to %d, %d' %(player.getID(), player.getCivilizationName(), unitInfo.getDescription(), pUnit.getX(), pUnit.getY()))
3. I feel that this should not be a thing.
Spoiler :
Custom game. I picked Arendel as my leader noble difficulty. Pangea, huge, temperate, low sea level, ancient era, marathon, random shoreline, cylindrical worldmap, standard resources. Nothing turned on under options and all victory conditions except for cultural are on.
 
1.In CustomFunction.py under def snowgenesis the following code is called twice. It doesn't/shouldn't hurt anything but it's not needed twice.

Good catch.

2.In CvEventManager.py at line 446 used to be just 1 line instead of 3. Same thing happens at line 1374. I was curious if anyone knew why the change from 1 line to 3?

This is just coding style. You generally don't want lines that long you can't read them without scrolling horizontally. At least in the first case, someone changed something and in the process adapted the coding style.
 
Top Bottom