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

MNAI 2.71 release

Discussion in 'More Naval AI Modmod' started by Tholal, Aug 6, 2017.

  1. Felis catus

    Felis catus Chieftain

    Joined:
    Sep 10, 2018
    Messages:
    17
    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?
     
  2. LightAcolyte

    LightAcolyte Chieftain

    Joined:
    Aug 4, 2013
    Messages:
    5
    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: Sep 10, 2018
  3. omegaflames

    omegaflames Warlord

    Joined:
    Sep 21, 2012
    Messages:
    163
    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)
     
  4. omegaflames

    omegaflames Warlord

    Joined:
    Sep 21, 2012
    Messages:
    163
    Edit: nevermind
     
    Last edited: Apr 29, 2019
  5. omegaflames

    omegaflames Warlord

    Joined:
    Sep 21, 2012
    Messages:
    163
    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.
     
  6. lfgr

    lfgr King

    Joined:
    Feb 6, 2010
    Messages:
    900
    Good catch.

    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.
     

Share This Page