News

Partial Success need some help with xsd schema hacking (making non-tradable techs)

Posted on Monday, February 9, 2015

I feel like this can  be done & that all the pieces to accomplish an untradable tech exist, , but I'm having a little trouble getting them to click together & think I'm having trouble getting the xsd to validate

UPResolutions.xml has enttries in it that BlockTechTrading,  BlockTechBrokering, AND using a special modifier to reduce the cost of specifically tagged techs.  I feel like this should work:


<Tech>
<InternalName>YorTestTech</InternalName>
<GenericName>YorTestTech</GenericName>
<DisplayName>YorPropagationTech_Name</DisplayName>
<TechTree>Yor_Tree</TechTree>
<ShortDescription>YorPropagationTech_ShortDec</ShortDescription>
<Description>YorPropagationTech_Dec</Description>
<ColorDef>TechGreen</ColorDef>
<Icon>GC3_Colonization_Icon.png</Icon>
<Bink>GC3_Colonization_Temp.bk2</Bink>
<ResearchCost>0</ResearchCost>
<Tags>TestTech</Tags>
<AICategoryWeight>
<Military>12</Military>
<Growth>20</Growth>
<Tech>18</Tech>
<Diplomacy>6</Diplomacy>
<Expansion>16</Expansion>
<Wealth>8</Wealth>
<Influence>10</Influence>
<Fortification>14</Fortification>
</AICategoryWeight>

[/quote]

 

That however returns:

D:\SteamLibrary\steamapps\common\Galactic Civilizations III/Data/Game\YorTechDefs.xml(59,19): error: 

no declaration found for element 'SpecialValue'

D:\SteamLibrary\steamapps\common\Galactic Civilizations III/Data/Game\YorTechDefs.xml(70,10): error:
element 'SpecialValue' is not allowed for content model '(InternalName,GenericName?,DisplayName,TechTree,ShortDescription?,Description?,ColorDef?,Icon?,Bink?,RootNode?,ResearchCost,TechPoints?,Tags*,Specialization?,AICategoryWeight?,Stats*,Prerequ?,Disabled?)'

[/quote]

 

If I copy the relevant section out of UPResolutionTypes.xsd into TechDefs.xsd


<xs:simpleType name="SpecialBehaviorTypes">
<xs:restriction base="xs:string">
<xs:enumeration value="UnitedPlanetsHQ"/>
<xs:enumeration value="BlockDeclaringWar"/>
<xs:enumeration value="BlockRebellionStatus"/>
<xs:enumeration value="BlockTechBrokering"/>
<xs:enumeration value="BlockTechTrading"/>
<xs:enumeration value="BlockColonizationInOtherPlayerZOC"/>
<xs:enumeration value="BlockColonization"/>
<xs:enumeration value="BlockResearch"/>
<xs:enumeration value="PatentBoard"/>
<xs:enumeration value="ResearchDiscount"/>
</xs:restriction>
</xs:simpleType>

 

The best I can manage is ether ctd on validate or this:

D:\SteamLibrary\steamapps\common\Galactic Civilizations III/Data/Schema/UPResolutionDefs.xsd(12,46): error:
global type 'simpleType:SpecialBehaviorTypes' declared more than once or also declared as complexType

OR this:

../Data/Schema\TechDefs.xsd(0,0): error:
Could not resolve size for member 'Behavior' type 'SpecialBehaviorTypes'.

 

 

 

Where I place it doesn't seem to matter.  The ctd is probably because doing things like telling Techdefs.xsd to include UPResolutions.xsd (which includes techtefs.xsd itself) is creating a loop?

Is anyone out there more familiar with xsl that  can help where I'm getting stuck

 

With that said,,, This works


<Tech>
<InternalName>YorTestTech</InternalName>
<GenericName>YorTestTech</GenericName>
<DisplayName>Test_Name</DisplayName>
<TechTree>Yor_Tree</TechTree>
<ShortDescription>TestTech_ShortDec</ShortDescription>
<Description>TestTech_Dec</Description>
<ColorDef>TechGreen</ColorDef>
<Icon>GC3_Colonization_Icon.png</Icon>
<RootNode>true</RootNode>
<ResearchCost>0</ResearchCost>
<Tags>TestTech</Tags>
<AICategoryWeight>
<Military>12</Military>
<Growth>20</Growth>
<Tech>18</Tech>
<Diplomacy>6</Diplomacy>
<Expansion>16</Expansion>
<Wealth>8</Wealth>
<Influence>10</Influence>
<Fortification>14</Fortification>
</AICategoryWeight>

at least if you need a gateway tech that a race starts with.  For a test I tried gating a hulltype with that YorTestTech as a prerequ, Yor could begin construction on it on turn 0 but not altarians (who didn't have that tech).  Giving it a ResearchCost but keeping RootNode==true results in gettingit researched to start with from what I could tell

<Tech>
<InternalName>YorTestTech</InternalName>
<GenericName>YorTestTech</GenericName>
<DisplayName>Test_Name</DisplayName>
<TechTree>Yor_Tree</TechTree>
<ShortDescription>TestTech_ShortDec</ShortDescription>
<Description>TestTech_Dec</Description>
<ColorDef>TechGreen</ColorDef>
<Icon>GC3_Colonization_Icon.png</Icon>
<RootNode>true</RootNode>
<ResearchCost>10</ResearchCost>
<Tags>TestTech</Tags>
<AICategoryWeight>
<Military>12</Military>
<Growth>20</Growth>
<Tech>18</Tech>
<Diplomacy>6</Diplomacy>
<Expansion>16</Expansion>
<Wealth>8</Wealth>
<Influence>10</Influence>
<Fortification>14</Fortification>
</AICategoryWeight>
<Prerequ>
<Techs>
<Option>PropagationTech</Option>
</Techs>
<TechAge>
<Option>AgeOfExpansion</Option>
</TechAge>
</Prerequ>

</Tech>