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

MagisterModmod

Discussion in 'FfH2 Modmods, Scenarios, and Maps' started by MagisterCultuum, Feb 27, 2012.

  1. Covr

    Covr Chieftain

    Joined:
    Jan 4, 2017
    Messages:
    23
    Gender:
    Male
    I am getting tons of "Assert Failed" errors and I am surprised that someone might not see them or not reproduce them. Is there a chance that it's connected to steam version +win10? I don't recall having so many problems with win7 and CD edtition of civIV.
    FYI - I have enabled the old 'Original beta unsupported' version of the CivIV in Steam properties, the mod is in the correct folder, installed with FFH final 'o' patch.
     
  2. Dominus the Mentat

    Dominus the Mentat Warlord

    Joined:
    Oct 29, 2018
    Messages:
    135
    Its nice to have this detail of the lore in the mod, because it shows more of the Calabim culture. However, shouldn't be better use latin nobiliary particles (de, di, d') ? As stated in the reddit forum, Patrian language is something close to (if not be) latin. The Calabim kingdom is one of the nations formed during the fragmentation of Patria. Certainly, they have inherited the language too.
    I have read the Fideism and Basium and the Boiling Sea stories and they show a different destiny of the one shown in The Black Tower scenario for Gosea. That means the scenario will have some changes ? Also, I suggest that you consider replace Gosea actual skin for this one in a future update. I think it matches her fisical caracteristics (described in the stories) more than the current one.
     
  3. OKSleeper

    OKSleeper Chieftain

    Joined:
    Jan 17, 2014
    Messages:
    56
    Location:
    Vernon B.C., Canada
    Doubtful. I'm getting them too with discs and Windows 7.
     
  4. MagisterCultuum

    MagisterCultuum Great Sage

    Joined:
    Feb 14, 2007
    Messages:
    16,341
    Location:
    Kael's head
    I think I may release a minor update for Thanksgiving.

    It fixes a few minor bugs I discovered.

    I am not positive, but I think that the random building asserts might have been caused by comments like <!-- RevolutionDCM Building Effects --> or <!--End Religion specific buildings --> inside CIV4BuildingInfos.xml. I have not gotten any more of those since deleting such comments, but was not getting them consistently before either so that does not prove anything.

    There were a couple missing text strings for discovering new equipment.

    There was a typo in the Ascension ritual python that forced Auric Ascended to cast Snowfall Greater.

    PROMOTION_CASWALLAWN was still found in a couple spots despite the promotion being deleted.

    The python portion of Purge Magic was not functional during the last release. It would remove Channeling 1, 2, & 3, but did not touch the spell spheres or buffs that it should have. It works now, as does its help string.

    I removed the Matron Essendi Pillar of Fire spell, as it was redundant once I deiced to let the equipment grant the Fire Affinity promotion.

    I decided that having Awaken Magic grant Mastery of Magic diminished the importance of the Tower of Mastery too much. Instead of adding Channeling 1 and Mastery, it now grants Channeling 1, Channeling 2, and Arcane. Channeling 2 and Arcane only given to UNITCOMBAT_ADEPT, while Channeling 1 goes to most unitcombats. The targets of this spell do not get free random spell spheres or affinities, as I'd have to use python for that and would rather keep it a super efficient xml only spell.

    I gave Govannon Divine 2, so that in addition to having the passive ability to teach magic and pass on Govanon's Ethics he may also cast Awaken Magic. If he is randomly granted another affinity or purchases it after gaining Mastery from the Tower of Mastery he may get access to the fourth tier spells in those spheres too. (I'm thinking I may change the name of Divine II to Channeling IV.)

    The art that Dominus the Mentat recomended for Gosea is actually in the game already, as at one point I added Os-Gabella as an avatar unit and later removed her without removing her art. I am not sure it is a great fit for Gosea but went ahead and used it anyway, as the current art does not fit any better.


    I don't think any of my changes so far would break any saved games.
    edit: i just tested with the saved games OKSleeper posted. They load just fine and are not crashing. I was disappointed to find that one of his saves still gave me some random building asserts the first time I tried to load it, but had no such issue the nest 4 times I tried.
     
  5. mrmcmoney

    mrmcmoney Chieftain

    Joined:
    Nov 4, 2015
    Messages:
    5
    Hey, does anyone know where in the files the restriction for lumbermill building for fellowship is? I can't find it.
     
  6. MagisterCultuum

    MagisterCultuum Great Sage

    Joined:
    Feb 14, 2007
    Messages:
    16,341
    Location:
    Kael's head
    it is in C:\Program Files (x86)\Firaxis Games\Sid Meier's Civilization 4\Beyond the Sword\Mods\Magister Modmod for FfH2\Assets\python\CvGameUtils.py
    Spoiler :
    Code:
    
       def canBuild(self,argsList):
           iX, iY, iBuild, iPlayer = argsList
           pPlot = CyMap().plot(iX, iY)
           pPlayer = gc.getPlayer(iPlayer)
           iImprovement = pPlot.getImprovementType()
           iImprovementNew = gc.getBuildInfo(iBuild).getImprovement()
           iBonus = pPlot.getBonusType(pPlot.getTeam())
           if iImprovement == iImprovementNew:
               return -1
           #I don't want mana nodes blocked by farms, mines, etc
    
           if iBuild == gc.getInfoTypeForString('BUILD_FARM'):
               if pPlayer.hasTrait(gc.getInfoTypeForString('TRAIT_FALLOW')):
                   return 0
               if pPlayer.getCivilizationType() == gc.getInfoTypeForString('CIVILIZATION_GRIGORI'):
                   return 0
           elif iBuild == gc.getInfoTypeForString('BUILD_HOMESTEAD'):
               if pPlayer.getCivilizationType() != gc.getInfoTypeForString('CIVILIZATION_GRIGORI'):
                   return 0
           elif iBuild == gc.getInfoTypeForString('BUILD_CITADEL_OF_LIGHT'):
               if pPlayer.getStateReligion() != gc.getInfoTypeForString('RELIGION_THE_EMPYREAN'):
                   return 0
               if iImprovement != gc.getInfoTypeForString('IMPROVEMENT_CITADEL'):
                   return 0
    
           if iImprovementNew > -1:
               if iBonus != -1:
                   if gc.getBonusInfo(iBonus).isMana():
                       iBonusNew = gc.getImprovementInfo(iImprovementNew).getBonusConvert()
                       if iBonusNew == -1:
                           return 0
               if pPlot.isOwned():
                   if pPlot.getTeam() == pPlayer.getTeam():
                       if iImprovement != -1:
                           if iImprovement == gc.getImprovementInfo(iImprovementNew).getImprovementPillage():
                               return 1
                       if pPlot.isPeak():
                           if iBuild in [gc.getInfoTypeForString('BUILD_MINE'), gc.getInfoTypeForString('BUILD_QUARRY')]:
                               if iImprovement == -1:
                                   if pPlayer.getCivics(gc.getInfoTypeForString('CIVICOPTION_LABOR')) == gc.getInfoTypeForString('CIVIC_ARETE'):
                                       return 1
                               if iBonus > -1:
                                   if gc.getImprovementInfo(iImprovementNew).isImprovementBonusTrade(iBonus):
                                       return 1
               return -1
           if iBuild == gc.getInfoTypeForString('BUILD_REMOVE_FOREST'):
               if pPlayer.getStateReligion() == gc.getInfoTypeForString('RELIGION_FELLOWSHIP_OF_LEAVES'):
                   if iImprovement != gc.getInfoTypeForString('IMPROVEMENT_SMOKE'):
                       return 0
           elif iBuild == gc.getInfoTypeForString('BUILD_LUMBERMILL'):
               if pPlayer.getStateReligion() == gc.getInfoTypeForString('RELIGION_FELLOWSHIP_OF_LEAVES'):
                   return 0
           elif iBuild == gc.getInfoTypeForString('BUILD_MANA_ICE'):
               if gc.getGame().getProjectCreatedCount(gc.getInfoTypeForString('PROJECT_THE_DRAW')) > 0:
                   iAuricPlayer = cf.getLeader(gc.getInfoTypeForString('LEADER_AURIC'))
                   if iAuricPlayer != -1:
                       pAuricPlayer = gc.getPlayer(iAuricPlayer)
                       if pAuricPlayer.getUnitClassCount(gc.getInfoTypeForString('UNITCLASS_AURIC')) > 0:
                           if gc.getTeam(pPlayer.getTeam()).isAtWar(pAuricPlayer.getTeam()):
                               return 0
           if pPlayer.isFullMember(gc.getInfoTypeForString('DIPLOVOTE_UNDERCOUNCIL')):
               if iBuild == gc.getInfoTypeForString('BUILD_MANA_SUN'):
                   if CyGame().isVotePassed(gc.getInfoTypeForString('VOTE_NO_SUN_MANA')):
                       return 0
           elif pPlayer.isFullMember(gc.getInfoTypeForString('DIPLOVOTE_OVERCOUNCIL')):
               if iBuild == gc.getInfoTypeForString('BUILD_MANA_CHAOS'):
                   if CyGame().isVotePassed(gc.getInfoTypeForString('VOTE_NO_CHAOS_MANA')):
                       return 0
               elif iBuild == gc.getInfoTypeForString('BUILD_MANA_DEATH'):
                   if CyGame().isVotePassed(gc.getInfoTypeForString('VOTE_NO_DEATH_MANA')):
                       return 0
               elif iBuild == gc.getInfoTypeForString('BUILD_MANA_DIMENSIONAL'):
                   if CyGame().isVotePassed(gc.getInfoTypeForString('VOTE_NO_DIMENSIONAL_MANA')):
                       return 0
               elif iBuild == gc.getInfoTypeForString('BUILD_MANA_ENTROPY'):
                   if CyGame().isVotePassed(gc.getInfoTypeForString('VOTE_NO_ENTROPY_MANA')):
                       return 0
               elif iBuild == gc.getInfoTypeForString('BUILD_MANA_SHADOW'):
                   if CyGame().isVotePassed(gc.getInfoTypeForString('VOTE_NO_SHADOW_MANA')):
                       return 0
               elif iBuild == gc.getInfoTypeForString('BUILD_PLANTATION'):
                   if iBonus == gc.getInfoTypeForString('BONUS_DESERT_ROSE'):
                       if CyGame().isVotePassed(gc.getInfoTypeForString('VOTE_NO_DESERT_ROSE')):
                           return 0
                   elif iBonus == gc.getInfoTypeForString('BONUS_GULAGARM'):
                       if CyGame().isVotePassed(gc.getInfoTypeForString('VOTE_NO_GULAGARM')):
                           return 0
                   elif iBonus == gc.getInfoTypeForString('BONUS_RAZORWEED'):
                       if CyGame().isVotePassed(gc.getInfoTypeForString('VOTE_NO_RAZORWEED')):
                           return 0
                   elif iBonus == gc.getInfoTypeForString('BONUS_SHEUT_STONE'):
                       if CyGame().isVotePassed(gc.getInfoTypeForString('VOTE_NO_SHEUT_STONE')):
                           return 0
           if not pPlayer.isHuman():
               iCiv = pPlayer.getCivilizationType()
               if iCiv in [gc.getInfoTypeForString('CIVILIZATION_LJOSALFAR'), gc.getInfoTypeForString('CIVILIZATION_SVARTALFAR')]:
                   if iBuild in [gc.getInfoTypeForString('BUILD_REMOVE_FOREST'), gc.getInfoTypeForString('BUILD_LUMBERMILL')]:
                       return 0
               elif iCiv == gc.getInfoTypeForString('CIVILIZATION_INFERNAL'):
                   if iBuild == gc.getInfoTypeForString('BUILD_MANA_LIFE'):
                       if pPlayer.getArcaneTowerVictoryFlag() != 1:
                           return 0
               elif iCiv == gc.getInfoTypeForString('CIVILIZATION_MERCURIANS'):
                   if iBuild in [gc.getInfoTypeForString('BUILD_MANA_CHAOS'), gc.getInfoTypeForString('BUILD_MANA_DEATH'), gc.getInfoTypeForString('BUILD_MANA_DIMENSIONAL'), gc.getInfoTypeForString('BUILD_MANA_ENTROPY')]:
                       if pPlayer.getArcaneTowerVictoryFlag() != 3:
                           return 0
    
           return -1# Returning -1 means ignore; 0 means Build cannot be performed; 1 or greater means it can
    
     
    Imp. Knoedel likes this.
  7. Calavente

    Calavente Richard's voice

    Joined:
    Jun 4, 2006
    Messages:
    2,861
    Location:
    France
    I noticed while playing (old may june version) that the Tower is very hard to build by Tall civilisations.
    the requirement of having the 4 towers + having all mana types is huge.
    It means that you need to have access to at least 21 mana sources (so 18 more than your palace). (and generally more than that).
    This means you need a relatively large empire. (or to have vassals / allies that won't declare war when you start the tower).
    further being in the Overcouncil blocks you from building the Tower.

    If you want to have an effect of possession of mana to the Tower of Mastery I would do the following:
    - make it a project (I would dislike it : but that way SoK and GE cannot rush its construction ... but the wonder would help it)
    - Raise it's price by 3, give +20% construction rate for access to each of the mana nodes : if you have 21 mana nodes you'll get a +400% building rate; thus while counting that we can have other multipliers (forge/wonders/other), would mean that you about triple the construction rate : rendering it about as easy as current system, while not having access to a mana node is not crippling but can become hard. (or you can x5 or x6 the cost, and +50% per mana type ; but that tweaks it toward large civs and farther from Tall civs ;
    alternatively some mana types "closer to the One" could give +50% and other "only" +20% )


    Further I re-state that I find that limiting trade / access to mana to the mana-tech is crippling the World Improvements (which become mere fixed-mana-nodes, instead of being an early access to a new mana)


    finally two "errors" :
    - Adventurers cannot bind GC... which is an issue (but they keep the GC if they downgrade to adventurers)...
    - Mercurians, upon summoning didn't move from the city they appeared : no beelining to build a city ; no beelining toward one of the 2 Evil-aligned enemy empires I was at war with.
     
  8. MagisterCultuum

    MagisterCultuum Great Sage

    Joined:
    Feb 14, 2007
    Messages:
    16,341
    Location:
    Kael's head
    Adventurers should not be allowed to bind with great commanders at all, in any of their forms. I thought I blocked it entirely, but see that I put that in reqCommanderJoinDecius() instead of the normal reqCommanderJoin(). Normal great commanders were only blocked from joining with civilians and world units, but not adventurers and other heroes. I just fixed that.

    I changed it a while back so that joining with a commander converts the commander to that unit, passing on its name, race, promotions, religion, etc. It also passes on the unit's Scenario Counter, which can mess things up when it comes to the sluagh resurrection code.


    Mercurians staying put is an old AI problem that I cannot do much about, except recommend that you either gift them a city or play with the control whole teams game option to make them fight.



    I am not quite sure what you mean by "Tall civs."

    I usually find that getting 21 types of mana is not that hard, due to the mana from relgious shrines. I guess if you do not rush to found religions (especially if you are Grigori or Illian) or capture the holy cities it could be hard though. Mana being banned by the councils (since the Undercoucnil can ban Sun now) is often a bigger issue.

    I am currently playing around with making Metamagic mana the only bonus prereq, making every mana type double the production rate, and increasing the base cost from 4,000 to 100,000.


    I may want to test this out a bit longer, and will be busy with family Thanksgiving once my sister and niece arrive, so I probably won't be releasing the new update today as I had planned. Next week seems more likely now. While playtesting I may also find more things I'd like to alter, but I still want to avoid changes that wouldbreak saved games this round.
     
  9. Calavente

    Calavente Richard's voice

    Joined:
    Jun 4, 2006
    Messages:
    2,861
    Location:
    France
    I'll be sad that GC cannot be bound to hero units... for grigori it'll mean that the "heros" are weaker than a GC-led unit... the +1str and the +50%xp go for a bigger bonus than the +1xp/turn.

    re Tall vs Wide:
    Tall means having lower number of cities 2-3-4 ... (or one city challenges) but you boost all the cities to be powerhouses. and aim for quality units and cities
    Wide means conquering lot of land (and not necessarily huge cities). and you aim for quantity of units and cities to win.
    sometime you can get both.

    Before then, the two Towers Victory (Altar & Tower) were the "tech-related victories". where the importance was Tech and construction, not land amount.
    Accordingly, with the use of metamagic mana, hoarding 3-4 mana nodes was sufficient to get the 4 towers and then the Tower.
    now it's much more complicated.
    Shrines give mana... but there are often recouping, and recouping with the "free mana" from palace, wonders and unique improvements.

    In my current game I had 9 cities and conquered 2 empires before mid game... I had 4 mana shrines (RoK, Empy, Order, FoL), 3 mana node and many wonders and UI... I had 25 manas.... but of only 16 Types (many were in double or even triple)

    the bigger issues were :
    - -2 minus mana from religion
    - mana ban from council.
    - getting 8 mana types that were not found in all my wonders, palace, UI and shrines--> this one was the most difficult. (remember... I was missing 5... while already having 3 mana nodes that were switchable, and 7 if you count that I had a -2 in air mana)

    to be able to build the Tower I had to :
    - Pwn a third civ (out of a total of 5 remaining)
    - get an ally that got me all his manas
    - Get a vassal (gifted me all his mana... often recurrent with the one I had)
    - build 3 more cities ... just to get 3 more mana nodes
    - I had to repudiate RoK (equivalent of +2Air) and repudiate the Councils (allowed to get entropy).
    - ... refrain from killing the two remaining civs (which I could easily have done)

    conclusion : winning by Tower was only doable because I was already able to win by Conquest.


    Last point :I found that 4000 was a bit too huge.
    I exepect that 100000 (*2 construction per mana type) will be much too huge.
    what about smaller continents ? (less mana nodes)
    what about smaller maps ? (less mana nodes)
    how are Tall civs supposed to win ?
     
  10. MagisterCultuum

    MagisterCultuum Great Sage

    Joined:
    Feb 14, 2007
    Messages:
    16,341
    Location:
    Kael's head
    I am currently in the process of uploading a new minor update.

    It consists mostly of minor bug fixes and should not break any saved games. It renames Divine 2 to Channeling IV and updates to icon to fit. In theory it allows arcane or disciple units to purchase the promotion, although a level 21 prereq makes that practically infeasible. The level prereqs for Channeling 1, 2, and 3 are reduced so they are easier for units to get back after losing their power to Purge Magic. Govanon and Hemah both gain Channeling IV, with Hemah losing his Divine spells and having a high miscast chance Awaken Magic no longer grants Mastery of Magic (so units may not purchase Affinities without the Tower of Mastery) but instead gives Adepts the Channeling 2 and Arcane promotions. The Tower of Mastery no longer requires 21 types of mana but instead has its production speed doubled with the possession of each mana type and its base price increased so that it is harder to rush or to finish without them.

    Edit: I just found one bug after the upload.
    Code:
    Traceback (most recent call last):
      File "BugEventManager", line 366, in _handleDefaultEvent
      File "CvEventManager", line 6964, in onPlayerChangeStateReligion
    UnboundLocalError: local variable 'iTeam' referenced before assignment 
    I should have added iTeam = pPlayer.getTeam() after pPlayer = gc.getPlayer(iPlayer) under onPlayerChangeStateReligion(
     
    Last edited: Dec 2, 2019
  11. Borgcube

    Borgcube Chieftain

    Joined:
    Jan 21, 2014
    Messages:
    19
    I have similar problems with "Assert Failed" messages, however it mostly works if I ignore them.

    But in the last two games I have a crash just as AI finishes building The White Hand. I built it myself in the game before that, and it worked fine.

    I have BUG logs enabled, and it seems Auric's AI starts making decisions.

    I can upload the save files later on.
     
  12. Borgcube

    Borgcube Chieftain

    Joined:
    Jan 21, 2014
    Messages:
    19
    Here are the save files, if that helps any.
     

    Attached Files:

  13. Smayo

    Smayo Chieftain

    Joined:
    Mar 1, 2019
    Messages:
    10
    Gender:
    Male
    Have had two great games since playing the december patch, no more Asset Failed crashes! One thing that I have noticed as Kuriotates is that casting Abundance, the T3 creation Affinity spell, and then making the unit leave the city, and removing Abundance actually removes the inherent 3 plot radius that the Kuriotates normally has.
     
  14. Borgcube

    Borgcube Chieftain

    Joined:
    Jan 21, 2014
    Messages:
    19
    Also did 2 games since installing the newest patch. No longer getting assertion failures, but my newest game keeps crashing just as the Illians finish The White Hand.
     
  15. Dominus the Mentat

    Dominus the Mentat Warlord

    Joined:
    Oct 29, 2018
    Messages:
    135
    I took the liberty to see and is the same issue I have a time ago. Both maps don't have the Letum Frigus present and the ritual needs it to create New Mulyr city and, if needed, a new Illian civ under Auric control. I resolved this putting Letum Frigus in the map when the Doviello or Illians are present (The AI of these ones do more frequently the White Hand ritual) and when I play with the Illians.
     
  16. Borgcube

    Borgcube Chieftain

    Joined:
    Jan 21, 2014
    Messages:
    19
    Seems you're right, it works after I added Letum Frigus in my newest game too. I just happened to have Letum Frigus when I built White Hand.
     
  17. Smayo

    Smayo Chieftain

    Joined:
    Mar 1, 2019
    Messages:
    10
    Gender:
    Male
    What settings are you guys using btw? I normally run World of Erebus on Epic and Large, with all default terrain settings. And I would never encounter that bug cause I always place all unique features.
     
  18. Dominus the Mentat

    Dominus the Mentat Warlord

    Joined:
    Oct 29, 2018
    Messages:
    135
    This only happens when playing the normal game, which does not give you access to custom map options. In the "Custom Game" option, you can choose to have all unique features on the map, thus eliminating the conditions for triggering the fault.
     
  19. Nothrazim

    Nothrazim Chieftain

    Joined:
    Oct 12, 2009
    Messages:
    79
    I can't get the Radiant Guard scenario to work.

    I seem to recall it using Advanced Start rules, but it starts right away and only gives you two Radiant Guard units.
    No infernal units spawn; it's only you and Basium.
    Finally, when Capria gives you the sidequest 10 turns in, not only does no units spawn for her, but the mission is immediately won as soon as you click away the message.

    This also means you cannot complete her sidequest, and consequentially cannot build Bannor cities in the Black Tower mission. (As a sidenote, does anyone have a workaround for that issue?)
     
  20. Smayo

    Smayo Chieftain

    Joined:
    Mar 1, 2019
    Messages:
    10
    Gender:
    Male
    Really enjoying the free specialist changes, and Jonas Endain actually feels good to play now Bhall-Orcs are a thing. One thing I have found is when playing as Luichuirp, anything that gives xp on building (like Apprenticeship), causes golems to have the promotion glow, and so their action is reset so you can promote them. Of course, they have no promotions, so this happens every turn and oddly makes playing Luichuirp golemless the best, if you dont want a headache. Its not gamebreaking,but is rather annoying.

    EDIT: I think I have worked out the cause of the Golem promotion glow, it is due to the free promotion pick offered by the Creation Affinity spell/building Muse, or the Tower of Alteration. Had a poke around in the files trying to see if I could make an exception for Golem unit types but was all greek to me.
     
    Last edited: Dec 26, 2019

Share This Page