RevolutionDCM for BTS

1) We have art icons for our woc module like the nextwar pinked out icons for example. If we put them into the module and reference them with xml, does the woc-engine install them, or do they have to be put into the base mod hard coded because the woc-engine does not install them.

They either have to be part of the base CIV install (like all standard units, LHs and icons) or part of the mod, just like for any other non-WoC mod.

There is no issue with WoC accessing default art. The pink icons in Next War were due to my xml refering to icons in my mod, not the default art (as the 3.17 upgrade changed those in the Next War mod, not the standard as well - so the standard does not include those icons).

EDIT: I am not sure what you mean by 'hard coded in the base mod' and 'installing them via WoC'. Art works no different in WoC than in regular mods, if that answers your question.

In theory you could have art in a subdir of the xml instead of a subdir of Assets (e.g. Assets/Modules/NextWar/Units/BattleMech/Art/.... instead of Assets/Art/...) but I prefer to keep them in Assets/Art as that allows for FPK-ing it.

As long as any WoC mod includes the art it needs beyond what standard CIV provides, there should not be an issue, no matter where the module keeps its art.

1) Afforess says there is a white space issue and that is a BUG problem inhibiting woc modules from loading art
2) Mamba has some very significant modules like diversica that must be made to work in the RevDCM woc engine. Do they need art installed into the base mod?

I am not aware of any whitespace issue in WoC, I have not tried WoC + BUG however, the Next War icons are not an indication of this, these are just plain missing (and their paths do not contain spaces).

Yes please Mamba bring across the example next war missing icons and xml, in case I need to work something out in the RevDCM code to make this pinked out issue fixed.

Here it is
 
Could someone who knows WoC please explain to Vortilex how to use WoC to add his custom leaderheads to LoR? He's added the leaders to BtS with custom assets, but he asked me how to add them to LoR. LoR can't use custom assets, as that'll break things but since LoR uses a RevDCM core he should be able to convert his custom assets stuff to WoC format. I don't know how to do that though, and I know some of you here use WoC and will know the steps in creating a WoC module, especially since he already has stuff decently compartmentalized in custom assets. I also would like to know myself in a way, as I may want to create some optional WoC modules in the future. Also you guys, all of our WoC stuff should be cross mod compatible, so it might be a cool idea to have a list of available RevDCM WoC components so players can add modules regardless of the specific RevDCM based mod they are using.

Well, since he has the xml for the leaderhead in place already, here is how you turn it into a WoC leaderhead.

Have the xml for the leaderhead art, text and info in separate xml files (unchanged from how they usually look).

Have a minimal civ info file which just adds the LH to the respective civ, as a separate file.

In theory you could have all xml (of one type) for your 'custom' LHs like in one file, but I prefer separate files per LH.

Place all xml in one or several (e.g. one per leader) subdirs of Assets/Modules.

As an example, here is Nebuchadrezzar or the Babylonians.

Standard, unchanged xml for

Babylon_Nebuchadrezzar_CIV4ArtDefines_Leaderhead.xml
Babylon_Nebuchadrezzar_CIV4LeaderHeadInfos.xml
Babylon_Nebuchadrezzar_CIV4GameText.xml

Minimal CivInfo xml :

Spoiler :
Code:
<?xml version="1.0"?>
<!-- edited with XMLSPY v2004 rel. 2 U (http://www.xmlspy.com) by Firaxis Games (Firaxis Games) -->
<!-- Sid Meier's Civilization 4 -->
<!-- Copyright Firaxis Games 2005 -->
<!-- -->
<!-- Civilization Infos -->
<Civ4CivilizationInfos xmlns="x-schema:CIV4CivilizationsSchema.xml">
	<CivilizationInfos>
		<CivilizationInfo>
			<Type>CIVILIZATION_BABYLON</Type>
			<bTypeDependency>1</bTypeDependency>
			<Leaders>
				<Leader>
					<LeaderName>LEADER_BABYLON_NEBUCHADREZZAR</LeaderName>
					<bLeaderAvailability>1</bLeaderAvailability>
				</Leader>
			</Leaders>
		</CivilizationInfo>
	</CivilizationInfos>
</Civ4CivilizationInfos>
 
Another assert bug report. Just playing along, actually playing too not just AI autoplay bug testing. An AI cancelled a deal with me, and got this assert:

Code:
Assert Failed

File:  CvTeam.cpp
Line:  4245
Expression:  eIndex >= 0
Message:  eIndex is expected to be non-negative (invalid Index)

clicking ignore once and game progressed fine.
 
@Mamba
Thanks for the explanations. Sounds like WoC is fine, so will not touch it.

@Afforess
You have probably highlighted a small issue in BUG/BULL which EmperorFool may be interested in.

@Phungus
I'll have a look at your asserts at some point. The makefile situation is stuffed. The solution is simple with fresh eyes but I cannot tell you how sick I am of working on it. I'll probably release two makefiles which will have to be exchanged around for us freeware toolkit people:
1) makefile for final release (which will be Jdog's BULL makefile with cximage)
2) makefile for debug (which will be my refar style makefile without cximage)

You good people (including myself) will have to swap the makefile over when you want to build a debug version. If nothing get's sorted on that matter in the next 24 hours, that is what I will do and in the meantime go fishing in the local swamp for eel which cooks up well with a lot of vinegar. The eye watering taste of muddy swamp eel is a divine experience compared to working on makefiles for nothin.

Cheers.
 
Fair enough. I think you should show Emperor Fool the BULL based makefile and see if he can't fix it. The last time me and afforess asked him for help he said we should try to follow BULL's makefile as a template, jdog has done that, so maybe EF can figure out what's going on.

As for the two assert's reported. This one:
Code:
Assert Failed

File:  CvTeam.cpp
Line:  4245
Expression:  eIndex >= 0
Message:  eIndex is expected to be non-negative (invalid Index)
Occurs when a peace treaty is cancelled. Specifically the first peace treaty after getting peace in a Start as Minors game. Haven't checked other peace treaty cancellations, but so far I'm 3/3 on this assert firing when this occurs.

The other assert, I think it might be the culture bar instead of the build queue that causes it to fire. Just noticed it's acting wierd, and the cursor passes through the culture bar on the way to the build queue box.

Thanks for taking a look at everything, hopefully EF has some insight into fixing the makefile and then 2.6 should be good to go.

Edit:
Found another assert, this time it's triggered by being in anarchy (switching government types) in a city with wonders/specialists where Great People Points are being generated:
Code:
Assert Failed

File:  CvGameTextMgr.cpp
Line:  17192
Expression:  iModGreatPeople == city.getGreatPeopleRate()
Message:  Great person rate does not match actual value
I'm sure this is caused by BULL. Also it trips the same way as the building assert, so I'm positive that's a BULL introduced assert also. Having checked that one, I now know it's not triggered by draging the cursor into the build queue, it's caused by dragging the cursor over the culture bar, just every time I went to remove something from teh build queue it went over the culture bar, so I thought this was the cause.
 
Sorry, I should be more specific. It directly affects buttons, since they are the ones being resized. The buttons will appear to be fine in the civilopedia, but after the building is built, and you hover over the city, and get the icons of built buildings, you will get pink icons for every button path that contains whitespace. This is because of the way Civ4 deals with resizing buttons, and the new functionality/resizing and hover icons BULL adds.

So, rule of thumb, deal with all buttons like you deal with Promotion buttons, never use whitespace.

I can confirm this issue. I use BULL component in my mod, and I had the exact same issue - buildings getting pink squares instead of proper icons in the city hover text. The solution is, as Afforess points out, to remove all whitespaces from building filenames.
 
On the makefile issue, we can get Refar's makefile to compile the sentry code properly just by referencing the cximage code. This would allow debugging. However it would be nice to sort out the BULL makefile issue and hopefully something will happen on that in the next day or two.

I believe the reason the sentry buttons aren't in when building with Refar's DLL is simply a compiler flag. BULL has several features which are only built if flags are passed to the compiler:

_MOD_SENTRY
_MOD_FRACTRADE
_MOD_GOVWORKERS

So, for Final_Release_GLOBAL_CFLAGS and Debug_GLOBAL_CFLAGS (where CFLAG means compiler flag), we should add /D_MOD_SENTRY.

I'm trying this out adding this flag now, will also see what I can figure out on the reported asserts.
 
...will also see what I can figure out on the reported asserts.
To clarify these are the three asserts I've found, and their behavior (how to reproduce them). All asserts were noticed after playing about 40 or so turns in a custom game on quick speed with Start as Minors, Revolutions, Inquisitions, Super Spys, and Barbarian World enabled:

  • To reproduce go into the city screen, and move the cursor down the left side of the screen, over the culture bar into the build queue. Must click always ignore to continue, no other noticeable effects (though the culture bar pop up seems to display incorrect information)
    Code:
    File:  CvPlayer.cpp
    Line:  6683
    Expression:  GC.getCivilizationInfo(getCivilizationType()).getCivilizationBuildings(eBuildingClass) == eBuilding
    Message:
  • To reproduce, make peace with a civ that comes out of Minor status. At the begining of the turn where the peace treaty cancels automatically, the assert should trip. Clicking ignore once allows the game to progress, no other noticeable effects.
    Code:
    Assert Failed
    
    File:  CvTeam.cpp
    Line:  4245
    Expression:  eIndex >= 0
    Message:  eIndex is expected to be non-negative (invalid Index)
  • To reproduce switch civics with a non spiritual leader so your civ goes into temporary anarchy. Drag cursor over Great Person bar in city screen that has Wonders and Specialists. Clicking ignore once a couple of times allows the game to continue, no other noticeable effects.
    Code:
    Assert Failed
    
    File:  CvGameTextMgr.cpp
    Line:  17192
    Expression:  iModGreatPeople == city.getGreatPeopleRate()
    Message:  Great person rate does not match actual value
 
So how do I mod the WoC to allow me to add custom assets? Leaderheads specifically?
 
So how do I mod the WoC to allow me to add custom assets? Leaderheads specifically?

WoC has nothing to do with custom assets. If you want to load custom assets you need to enable them in the mod's ini file. Specifically the NoCustomAssets line, change from a 1 to a 0. RevDCM allows custom assets by default (which causes problems and should probably be changed). For LoR if you do this, I can almost gauruntee it'll break things, as the custom assets will conflict, but it'll load the custom assets if you do it.

To use WoC you need to take your modifications and put them in modular format. Look back through the past 3 pages in this thread, there are some posts specifically about how to do this, or at least giving direction on how to go about modularising modifications for WoC.
 
Oh, I see. Thanks, I was just really confused :confused:
 
The sentry button issue has been fixed! Tiny tweaks to the Refar-based Makefile uploaded.

phungus:

Thanks for the breakdown, here's what I've figured out:

1) Fixed. This was a BULL issue where a loop was set up incorrectly. It worked fine, but the Assert indicated Firaxis wanted it set up another way.

Fixed six instances (would happen mousing over health and happiness displays too).

2) Confirmed, non-critical. This is definitely spawned by Python when a deal is canceled. Given the circumstances around this assert, it must be coming from BUG code. My bet is this assert triggers whenever a deal is canceled in BUG (start as minors just makes it happen earlier).

I'll poke around, but it's hard to track these things down.

3) Confirmed, non-critical. This actually happens in plain BTS too with debugging ... the Assert condition isn't valid in Anarchy. Ignore this one and others like it (mousing over culture bar in anarchy does similar thing)
 
The sentry button issue has been fixed! Tiny tweaks to the Refar-based Makefile uploaded.
Nice, I will rebuild it and retest. I'm glad to get those sentry functions back, they are nice additions.
phungus:

Thanks for the breakdown, here's what I've figured out:
And thank you for the quick response with a breakdown of the causes.
1) Fixed. This was a BULL issue where a loop was set up incorrectly. It worked fine, but the Assert indicated Firaxis wanted it set up another way.

Fixed six instances (would happen mousing over health and happiness displays too).
You should post the fixes for this in the BUG forums, EF would be happy to patch them into the BULL code, especially since you've already done the hard work.
2) Confirmed, non-critical. This is definitely spawned by Python when a deal is canceled. Given the circumstances around this assert, it must be coming from BUG code. My bet is this assert triggers whenever a deal is canceled in BUG (start as minors just makes it happen earlier).

I'll poke around, but it's hard to track these things down.
Again, I'd bring this up in the BUG forums. EF is more likely to know the causes and figure out the solutions, since he wrote the code. Also he'd want the solutions to fix them anyway.
3) Confirmed, non-critical. This actually happens in plain BTS too with debugging ... the Assert condition isn't valid in Anarchy. Ignore this one and others like it (mousing over culture bar in anarchy does similar thing)
Wouldn't the best thing to do in this situation be to wrap the assert in an if clause to ensure it's not checked while in anarchy? I don't really care, but I've seen EF and xienwolf both say it's never good to get in the habit of ignoring asserts, you should either fix the issue, or mute the assert according to them. Being a non coder myself I don't know what's the "right" way to deal with it, but I figured I should bring that up.
 
More on Assert #2:

I found it ... BUG creates a "DealCanceled" event, but it can only tell if a deal is canceled and not who canceled it or even what deal was canceled. From DealUtil.py, line 158:

Code:
		g_eventManager.fireEvent("DealCanceled", -1, -1, None)

Those -1's are the fill-ins for the player and other player on the deal, so it seems like an incomplete idea. Then, in Civ4lerts.py in the onDealCanceled function, there's no check for whether eOfferPlayer, eTargetPlayer are != -1 before they're used.

I'll check in some fixes which should really find their way into BUG.
 
Thanks for checking those out, your fixes work. Sentry actions work and I've played a game up until the middle of the classical era and no issues. Had AI autoplay running up until middle ages and no asserts have popped up (other then the "shouldn't call this function on ourselves" asserts when you first go into AI autoplay).

Here is the current list of bugs/issues I have found:

  • The text XML in BULL City Bar Options.xml is incorrect for TXT_KEY_BUG_OPT_MISCHOVER__BUILDINGACTUALEFFECTS_HOVER, shows TXT_KEY_BUG_OPT_CITYBAR_BUILIDINGACTUALEFFECTS_HOVER not found when you hover over the option in the BUG options menu
  • The hover box for Culture and Great People seems wierd. I guess this is intended, but I don't like it, maybe I should bring it up with EF though. Basically the hover text lists the culture/GP points you could earn from buildings you don't have... Which with the way it's set up is very counterintuitive.
  • The barbarian civ component has been turned down where it is good in the early game. Pretty much the Barbarian civ component is now perfectly balanced in the Ancient and Classical Era. However the newly created barb civs become weaker as the game progressess, (the other side of the coin). By the time the middle ages comes around Barbarian civs are pretty much pointless. Is there any chance you could buff barbarian civs in an exponential function based on time in game?
  • The map scripts Perfect World and Terra do not take into account the GameOption Barbarian World. Would it be possible to have the barbarian cities be placed in the old world only on these map types? Otherwise with the combination of Barbarian Civ and Barbarian World, the New World can become just as advanced as the Old World, and basically makes the game play out like a Continents map.
  • The new RevIdx display is still ommiting transient effects like loosing a city or building a wonder, it would be nice to have these heavy effects listed for the few turns they effect the RevIdx bar.


That's all I can find that's pertinent for the 2.6 release. Only one thing in that list is a true bug, everything else is opinion; so take everything except the first bullet as phungus's list of 2.6 suggested finalization issues. Again thanks for taking the time to illicit feedback from the end users, I'm very happy thus far with how 2.6 is turning out.
 
It seems the global tech rate has been reduced a bit. I remember you saying you were removing the bonus for knowing a tech that leads into another tech (which in effect increased the cost for all techs except isolated ones like Astronomy), jdog. How much of an increase in cost was that across the board? I ask because I need to cut back all tech costs by this much, as in my last test it's 1600AD and no one is even close to the renessaince (I think this global tech cost increase has had a cumulative effect and slowed things down considerably as time goes on).
 
I'm going to complain again here:

Earlier in the BetterAI build, the AI started working at conquering neighbors, and got pretty good at it.

With the recent builds, the AI is once again back to "Attack the player, even though I had to have open borders with 3 people to get near the player", and AI on AI conquest wars are nearly non-existent.

Could SOMEONE please check what is causing the AI to not declare war on neighbors who SHOULD be blood enemies in favor of attacking the player? The game is entirely too static right now, with wars being rare events between the AI.
 
Here is the current list of bugs/issues I have found:

  • The text XML in BULL City Bar Options.xml is incorrect for TXT_KEY_BUG_OPT_MISCHOVER__BUILDINGACTUALEFFECTS_HOVER, shows TXT_KEY_BUG_OPT_CITYBAR_BUILIDINGACTUALEFFECTS_HOVER not found when you hover over the option in the BUG options menu

That's all I can find that's pertinent for the 2.6 release. Only one thing in that list is a true bug, everything else is opinion; so take everything except the first bullet as phungus's list of 2.6 suggested finalization issues. Again thanks for taking the time to illicit feedback from the end users, I'm very happy thus far with how 2.6 is turning out.

@Glider Looks like with this last bug, it looks like the masses are satisfied and ready for a 2.6 release! Everyone's done a great job -- so let's make it live!! :goodjob:
 
Yeah, that one is the only true bug. The issue with the Perfect World and Terra maps placing barbarian cities on the new world is very annoying though. If this can be fixed in either the dll, or the map scripts themselves, this should also be considered a "true bug", because it really does destroy the concept of a new world. In fact in testing I've found the strongest civilizations end up being new world civs because of this.
 
@dude and phungi
You are correct that there is not much to go. Jdog the magnificent is chasing one more assert with the inquisitor which would be nice to sort as well. Yes barb city placement should be restricted to the old world if that option is selected and this could be considered a bug true in my humble as well as the text issue with BULL/BUG.

Although release is important, it would be nice not to have to do anymore single player releases for a while, as every single player release just distracts from what it the holy grail for this mod, true multiplayer capability.

Cheers.
 
Top Bottom