WoC Lite(made for merging)

I'm considering merging the SDK portion of this into BULL and wanted to check that I'm doing it for the correct reason.

The BULL SDK code has several compile-time features which you enable by setting preprocessor flags. These are features which require changing constants or other core game info that would break saved game compatibility. For example, Sentry Actions require new Missions and Activity Types.

BULL puts the XML required for these features into the Optional folder. Some XML changes require inserting a block of XML into an existing file. Others require replacing a file entirely because one or two values are changed in many elements. I think this is where WoC Lite could really come in handy.

My hope is that I could change these XML files into modules that only changed the necessary data. The user would copy them into their Assets folder (or wherever they go) based on the BULL DLL version they chose. Is that correct?

Also, if two features add new Actions, they must line up exactly with the C++ constants in CvEnums.h. Thus, it is imperative that the user be able to specify module loading order. Is this where MLF files come into play?
 
BULL puts the XML required for these features into the Optional folder. Some XML changes require inserting a block of XML into an existing file. Others require replacing a file entirely because one or two values are changed in many elements. I think this is where WoC Lite could really come in handy.

My hope is that I could change these XML files into modules that only changed the necessary data. The user would copy them into their Assets folder (or wherever they go) based on the BULL DLL version they chose. Is that correct?

how do they do it in BUL now ? are there sevral versions at all ?

You are right in that wth WoC you could simply have only the changed lines instead of a full definition, assuming the particular file is suported by WoC (its schemas). If you / BULL add tags, you would also need to change the schame in WoC to include them there.

Also, if two features add new Actions, they must line up exactly with the C++ constants in CvEnums.h. Thus, it is imperative that the user be able to specify module loading order. Is this where MLF files come into play?

yes, MLF specifies loading order between files of the same type (or rather of the directories in which those files are stored). Load order between fils of different types (e.g. Unit art vs civilizations vs buildings) is determined by CIV and cannot be changed (but that should not bother you).
 
City artstyles and the WoC loading do not go together well in the latest version.

Any art style introduced by Cultural Citystyles and added to a civ in the Modules dir by just changing the corresponding line does not show up in game. Instead of seeing the new art style, you see NO art style at all (not even the old one), just a road, no buildings.

The same is true for new modular civs (where the entire definition is in the Modules dir, not just the one-line-change) using a new art style.

If you use a standard style (just changed by CC but not introduced by it) everything is ok (i.e. buildings do show up), it is just for the new styles that things go wrong.

If I do the same change (e.g. <ArtStyleType>ARTSTYLE_MESO_AMERICA</ArtStyleType>) in the XML\Civilizations\CIV4CivilizationInfos file (instead of modular), the art shows up as intended.

EDIT: tracked this down further, not sure whose problem it actually is, anyway, here is what happens :

CC does as of now have an ARTSTYLE_SOUTH_AMERICA which is not actually linked to anything (just a placeholder for the next version, right now anyone is supposed to use ARTSTYLE_MESO_AMERICA instead (or one of the other available styles).

Any civ which initially starts out with ARTSTYLE_SOUTH_AMERICA and later gets it replaced in Modules does not show building art. If I replace that style by one of the available ones in the XML dir right away (instead of doing so modular), the building art shows up correctly.
 
BULL does not alter gameplay, so it won't make use of any new XML elements.

As for loading order, I actually need to enforce the loading order between two modules. Say I have these files:

Code:
Modules/ (or whatever WoC calls the folder that holds all its modules)
  [B]GovWorkers/[/B]
    XML/
      Units/
        CIV4MissionInfos.xml
  [B]SentryActions/[/B]
    XML/
      Units/
        CIV4MissionInfos.xml

I need to make sure that the GovWorkers module's files are loaded before those for SentryAcctions. Can I do this inter-module ordering?
 
BULL does not alter gameplay, so it won't make use of any new XML elements.

As for loading order, I actually need to enforce the loading order between two modules. Say I have these files:

Code:
Modules/ (or whatever WoC calls the folder that holds all its modules)
  [B]GovWorkers/[/B]
    XML/
      Units/
        CIV4MissionInfos.xml
  [B]SentryActions/[/B]
    XML/
      Units/
        CIV4MissionInfos.xml

I need to make sure that the GovWorkers module's files are loaded before those for SentryAcctions. Can I do this inter-module ordering?

Yes, you place the two dirs (GovWorker and SentryActions) in an MLF file in the right order (i.e. GovWorker before SentryAction). Note that all other dirs you want to load also have to show up in the MLF file (any dir you do not list will be skipped, even though it exists).

If there is no MLF file, all dirs will be loaded in alphabetical order.

Usually you do not keep the XML/Units ... subdirs however, you simply place all xml in that dir directly. This does not make a difference however.
 
Just remembered something: about these two problems in RevDcm that some people imputed to the merging of Woc (that is, projects interdependencies and broken events), do they also happen with just the Woc lite, without any other change to the dll ? Or is it just the combination of WocLite and RevDcm ?
 
Just remembered something: about these two problems in RevDcm that some people imputed to the merging of Woc (that is, projects interdependencies and broken events), do they also happen with just the Woc lite, without any other change to the dll ? Or is it just the combination of WocLite and RevDcm ?

I am not sure, in the RevDCM someone (forgot who it was) said they do not happen in WoC Lite, but have not be playing all that much with it, so have little first hand experience.

I did have broken slave revolts (in that they just continued a long time) though, not sure what caues these however.
 
When starting a hotseat games, there are some error messages in my mod which do not pop up when playing a regular SP game.

See post 619 in my mod thread.

As they do not show up in SP, I doubt they are xml errors. Should the WoC Lite dll be multi-player and hotseat compatible ?
 
Just remembered something: about these two problems in RevDcm that some people imputed to the merging of Woc (that is, projects interdependencies and broken events), do they also happen with just the Woc lite, without any other change to the dll ? Or is it just the combination of WocLite and RevDcm ?

So far in the latest RevDCM 2.51 project interdependencies cannot be customised and a few broken random events that are interdependent, have been disabled. Johny has said that these issues have been fixed by Faichele and now work in this mod. Does anyone know where would I find those fixes? The latest woc lite RevDCM has not changed since 6/6/2009 I don't think, and thus at that date, the issue was not yet sorted.

Cheers.
 
I have not been posting for a while. I got some free time and I have 5 games I bought that I never played because I was too busy modding:). I wanted to play them and come back to modding afterwards.

Sorry for the lack of response, and I am not much of a person in the knowing of the code really. This is me trying to cut out the pieces from the WoC Full as I stated before. I would have to dig into it and figure it out. I did not write the original code.

The project bug fix that I had from faichele for RevDCM is here.

http://forums.civfanatics.com/attachment.php?attachmentid=220939&d=1247513457

It should be included in this I think. The events bug was never squashed, and the MLF's when disabled were not squashed. There is a new WoC dll made by faichele that I need to look at to see if these have been fixed, but he has been on it a while. He also included many other things in it. So anyway I need to look at it.

The WoC SVN has the new dll if anyone wants to look but I am confused myself at this point what is going on since taking a break. I may update this after it is finished. I know faichele said he was looking to merge the RevDCM SDK basically into the WoC. Don't know the status of it at this point though.

The big focus he began on again instead of just a merge was making moving nomadic cities for an earlier stone age which he did finish much of it. For example camp unit can build units, and domestication of plants and animals model. Anyway I will update the info when I know.

I will be back to modding again just taking a break. Sorry again for lack of responses. I hope when I can again the rest of the kinks will be worked out.
 
@Johny
Appreciate it. Makes total sense to take breaks from modding this great game, no matter how good it is! I wonder if you have now shelved those "five games" like I always end up doing, and coming back to civ, like I always end up doing!

I unfortunately contacted Faichele weeks after he did once post to the RevolutionDCM forum, but suspect he's pretty busy on other things now. From my perspective, the main thing is to get project dependencies working and possibly those few random events as well. You have highlighted another issue about MLF files that I have not been following, and no-one seems very concerned about it over in RevolutionDCM land.
Cheers.
 
Just curious. How hard would it be to merge BUG 4.0 into the current WoC Lite?

The DLL from WoC should work straight away with BUG 4.0 I think. I don't know what Python exists in WoC. That's where the trickiness lies, but I suspect BUG does what WoC needs in that regard.
 
A question about modular xml: in REVDcm (which includes the Woc lite), I'm trying to get some changes to the main game into a module. While some function perfectly (like adding a free gp to the first at divine right or moding the anti-tank infantry to make it require rocketry), some do not function at all. A common point: they all have and/or requirements, in resource and/or techs.

For example, with the following:
Spoiler :
In a first file:
<Civ4UnitInfos xmlns="x-schema:CIV4UnitSchema.xml">
<UnitInfos>
<UnitInfo>
<Class>UNITCLASS_ATTACK_SUBMARINE</Class>
<Type>UNIT_ATTACK_SUBMARINE</Type>
<AndDependencyTypes>
<DependencyType>UNITCLASS_ATTACK_SUBMARINE</DependencyType>
<DependencyType>BONUS_OIL</DependencyType>
<DependencyType>BONUS_URANIUM</DependencyType>
</AndDependencyTypes>
<PrereqTech>TECH_RADIO</PrereqTech>
<TechTypes>
<PrereqTech>NONE</PrereqTech>
<PrereqTech>NONE</PrereqTech>
<PrereqTech>NONE</PrereqTech>
</TechTypes>
<BonusType>NONE</BonusType>
<PrereqBonuses>
<BonusType>BONUS_OIL</BonusType>
<BonusType>BONUS_URANIUM</BonusType>
<BonusType>NONE</BonusType>
<BonusType>NONE</BonusType>
</PrereqBonuses>
</UnitInfo>
</UnitInfos>
</Civ4UnitInfos>

In the other one:
<Civ4UnitInfos xmlns="x-schema:CIV4UnitSchema.xml">
<UnitInfos>
<UnitInfo>
<Class>UNITCLASS_SUBMARINE</Class>
<Type>UNIT_SUBMARINE</Type>
<AndDependencyTypes>
<DependencyType>UNITCLASS_SUBMARINE</DependencyType>
<DependencyType>TECH_ROCKETRY</DependencyType>
<DependencyType>TECH_RADIO</DependencyType>
<DependencyType>TECH_COMBUSTION</DependencyType>
<DependencyType>BONUS_URANIUM</DependencyType>
</AndDependencyTypes>
<PrereqTech>TECH_ROCKETRY</PrereqTech>
<TechTypes>
<PrereqTech>TECH_RADIO</PrereqTech>
<PrereqTech>TECH_COMBUSTION</PrereqTech>
<PrereqTech>NONE</PrereqTech>
</TechTypes>
<BonusType>BONUS_URANIUM</BonusType>
<PrereqBonuses>
<BonusType>NONE</BonusType>
<BonusType>NONE</BonusType>
<BonusType>NONE</BonusType>
<BonusType>NONE</BonusType>
</PrereqBonuses>
</UnitInfo>
</UnitInfos>
</Civ4UnitInfos>

Basically, it should exchange the resource and tech requirements of the two submarines.
What it does is that now the attack submarine requires radio, radio (yes, two times) and combustion for techs, and "uranium and (oil and uranium)" for resources. The submarine, otoh, requires rocketry, radio and combustion, and "uranium and (oil and uranium)". Modifying for example <BonusType>NONE</BonusType> in <BonusType/> does not change anything. What it seems to do is that it does not erase the previous entries even though the file provide a new one (although equal to NONE).
 
Without the bForceOverwrite tag I wrote (which I do not know if WoC, WoCLite or DCM imported from Fall Further) you cannot remove any values from the base XML. With lists like these ones, you also cannot overwrite the old data with something new, so it is even harder to work with modules
 
Without the bForceOverwrite tag I wrote (which I do not know if WoC, WoCLite or DCM imported from Fall Further) you cannot remove any values from the base XML. With lists like these ones, you also cannot overwrite the old data with something new, so it is even harder to work with modules

I can do something about it if you would like.
Cheers

Glider1, I would be eternally grateful if you can get a bForceOverwrite tag from Xienwolf working. I tried myself, but it was too much for me.
 
I can do something about it if you would like.
Cheers

Isn't there somewhere a weloveglider1.com website or something? ;)

Another question to xienwolf: do your tag solve all these kind of problems? I only got some with techs and resources, but there could be others I did not notice.
Also, could you give some details about how it works? Does it overwrite in the case of a NONE like in <BonusType>NONE</BonusType> and/or in the case of nothing like in <BonusType/> ? What about tags requiring multiple entries like <TechTypes> ?
Of course, if you already explained all that somewhere just point me to a thread :)

I also have a problem with an xml text file, but I'm wondering if I should not just rename the file. Will see that, and come back if I still have a problem.
 
I'm looking to finally make BUG easier for modmodders by having it autoload config XML files rather than having to list them in init.xml. This will mean people will no longer need to modify any BUG files as best I can make it.

How does this relate to WoCLite? I'd like to have BUG load these files from within the Modules subfolders rather than requiring the user to move them to BUG's Config folder. Can someone please help me with these questions?

  1. How can the Modules folder be organized (can you have anything more complex than one-subfolder-per-modmod)? If so, why would one do that?
  2. Is there any facility for inter-modmod dependencies such as A won't load if B isn't loaded?
  3. Is there any facility to disable a modmod without removing its subfolder?
  4. WoCLite requires Modular XML Loading, right? If so, that means it only works with mods in the Mods folder, right? And if so, will it look for Modules in the CustomAssets folder or must everything be in the mod's own folder?
Furthermore, I'm hoping that I can also allow BUG to see Python files in a modmod's Python folder, again so users won't have to move files around.

In BugPath are a few functions to allow you to find various types of files (Assets, Settings, Config). The getAssetFile() function could be used to find artwork that is not pointed to by one of the XML files (the Great Person mod does this). Are there other file types that would benefit from these functions including Modules subfolders? Can you provide some concrete examples? I'd rather not add every subfolder of Modules to the path if I can avoid it.
 
Back
Top Bottom