Ticket #2877: limit-v2.diff

File limit-v2.diff, 29.4 KB (added by mimo, 10 years ago)
  • binaries/data/mods/public/simulation/components/BuildRestrictions.js

     
    3232            "</oneOrMore>" +
    3333        "</list>" +
    3434    "</element>" +
    35     "<element name='Category' a:help='Specifies the category of this building, for satisfying special constraints. Choices include: CivilCentre, House, DefenseTower, Farmstead, Market, Barracks, Dock, Fortress, Field, Temple, Wall, Fence, Storehouse, Stoa, Resource, Special, Wonder, Apadana, Embassy, Monument'>" +
     35    "<element name='Category' a:help='Specifies the category of this building, for satisfying special constraints. Choices include: CivilCentre, Colony, House, DefenseTower, Farmstead, Market, Barracks, Dock, Fortress, Field, Temple, Wall, Fence, Storehouse, Stoa, Resource, Special, Wonder, Apadana, Embassy, Monument'>" +
    3636        "<text/>" +
    3737    "</element>" +
    3838    "<optional>" +
  • binaries/data/mods/public/simulation/components/Builder.js

     
    77        "<Entities datatype='tokens'>" +
    88            "\n    structures/{civ}_barracks\n    structures/{civ}_civil_centre\n    structures/celt_sb1\n  " +
    99        "</Entities>" +
     10        "<ConditionalEntities>" +
     11            "<Colony>" +
     12                "<Template>structures/sele_military_colony</Template>" +
     13                "<Condition>Greater</Condition>" +
     14                "<Category>CivilCentre</Category>" +
     15                    "<Number>0</Number>" +
     16            "</Colony>" +
     17        "</ConditionalEntities>" +
    1018    "</a:example>" +
    1119    "<element name='Rate' a:help='Construction speed multiplier (1.0 is normal speed, higher values are faster)'>" +
    1220        "<ref name='positiveDecimal'/>" +
     
    1624            "<value>tokens</value>" +
    1725        "</attribute>" +
    1826        "<text/>" +
    19     "</element>";
     27    "</element>" +
     28    "<optional>" +
     29        "<element name='ConditionalEntities' a:help='entity template name that this unit can build under some condition'>" +
     30            "<zeroOrMore>" +
     31                "<element a:help='Name of this condition'>" +
     32                    "<anyName />" +
     33                    "<interleave>" +
     34                        "<element name='Template' a:help='Specifies the template name'><text/></element>" +
     35                        "<element name='Condition' a:help='Specifies the condition (can be Smaller or Greater)'><text/></element>" +
     36                        "<element name='Category' a:help='Specifies a category of building/unit for the condition. See BuildRestrictions/TrainingRestrictions for possible categories'><text/></element>" +
     37                        "<element name='Number' a:help='Numerical value for the condition'><data type='integer'/></element>" +
     38                    "</interleave>" +
     39                "</element>" +
     40            "</zeroOrMore>" +
     41        "</element>" +
     42    "</optional>";
    2043
    2144Builder.prototype.Init = function()
    2245{
     46    this.conditional = [];
     47    if (this.template.ConditionalEntities)
     48    {
     49        for (var condition in this.template.ConditionalEntities)
     50        {
     51            let cond = this.template.ConditionalEntities[condition];
     52            this.conditional.push( {"template": cond.Template, "condition": cond.Condition, "category": cond.Category, "number": cond.Number, "added": false} );
     53        }
     54    }
    2355};
    2456
    2557Builder.prototype.Serialize = null; // we have no dynamic state to save
     
    3567        if (cmpIdentity)
    3668            string = string.replace(/\{civ\}/g, cmpIdentity.GetCiv());
    3769        entities = string.split(/\s+/);
    38        
    39         // Remove disabled entities
    40         var cmpPlayer = QueryOwnerInterface(this.entity, IID_Player)
    41         var disabledEntities = cmpPlayer.GetDisabledTemplates();
    42        
    43         for (var i = entities.length - 1; i >= 0; --i)
    44             if (disabledEntities[entities[i]])
    45                 entities.splice(i, 1);
    4670    }
     71
     72    // Add the possible conditional entities
     73    if (this.conditional.length)
     74    {
     75        var cmpPlayerEntityLimits = QueryOwnerInterface(this.entity, IID_EntityLimits);
     76        var cmpIdentity = Engine.QueryInterface(this.entity, IID_Identity);
     77        if (cmpPlayerEntityLimits && cmpIdentity)
     78        {
     79            for (let cond of this.conditional)
     80            {
     81                if (!cond.added)   // Add it in EntityLimits counts
     82                {
     83                    cmpPlayerEntityLimits.AddConditionalCategory(cond.category);
     84                    cond.added = true;
     85                }
     86                let count = cmpPlayerEntityLimits.GetCounts();
     87                if ((cond.condition == "Smaller" && count[cond.category] < cond.number) ||
     88                    (cond.condition == "Greater" && count[cond.category] > cond.number))
     89                    entities.push( cond.template.replace(/\{civ\}/g, cmpIdentity.GetCiv()) );
     90            }
     91        }
     92    }
     93
     94    if (!entities.length)
     95        return entities;
     96
     97    // Remove disabled entities
     98    var cmpPlayer = QueryOwnerInterface(this.entity, IID_Player)
     99    var disabledEntities = cmpPlayer.GetDisabledTemplates();
     100   
     101    for (var i = entities.length - 1; i >= 0; --i)
     102        if (disabledEntities[entities[i]])
     103            entities.splice(i, 1);
     104
    47105    return entities;
    48106};
    49107
  • binaries/data/mods/public/simulation/components/EntityLimits.js

     
    1313        "</Limits>" +
    1414        "<LimitChangers>" +
    1515            "<Monument>" +
    16                 "<CivCentre>2</CivCentre>" +
     16                "<CivilCentre>2</CivilCentre>" +
    1717            "</Monument>" +
    1818        "</LimitChangers>" +
     19        "<LimitRemovers>" +
     20            "<CivilCentre>town_phase</CivilCentre>" +
     21        "</LimitRemovers>" +
    1922    "</a:example>" +
    2023    "<element name='Limits'>" +
    2124        "<zeroOrMore>" +
     
    3740                "</zeroOrMore>" +
    3841            "</element>" +
    3942        "</zeroOrMore>" +
     43    "</element>" +
     44    "<element name='LimitRemovers'>" +
     45        "<zeroOrMore>" +
     46            "<element a:help='Specifies a category of building/unit on which to apply this limit. See BuildRestrictions/TrainingRestrictions for possible categories'>" +
     47                "<anyName />" +
     48                "<text/>" +
     49            "</element>" +
     50        "</zeroOrMore>" +
    4051    "</element>";
    4152
    4253
     
    5263    this.limit = {};
    5364    this.count = {};
    5465    this.changers = {};
     66    this.removers = {};
     67    this.conditional = new Set();
    5568    for (var category in this.template.Limits)
    5669    {
    5770        this.limit[category] = +this.template.Limits[category];
    5871        this.count[category] = 0;
    59         if (!(category in this.template.LimitChangers))
    60             continue;
    61         this.changers[category] = {};
    62         for (var c in this.template.LimitChangers[category])
    63             this.changers[category][c] = +this.template.LimitChangers[category][c];
     72        if (category in this.template.LimitChangers)
     73        {
     74            this.changers[category] = {};
     75            for (var c in this.template.LimitChangers[category])
     76                this.changers[category][c] = +this.template.LimitChangers[category][c];
     77        }
     78        if (category in this.template.LimitRemovers)
     79            this.removers[category] = this.template.LimitRemovers[category];
    6480    }
    6581};
    6682
     83EntityLimits.prototype.AddConditionalCategory = function(category)
     84{
     85    if (this.count[category] === undefined)
     86    {
     87        // category not yet registred in this.count, add it.
     88        var cmpPlayer = Engine.QueryInterface(this.entity, IID_Player);
     89        var cmpRangeManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_RangeManager);
     90        var entities = cmpRangeManager.GetEntitiesByPlayer(cmpPlayer.GetPlayerID());
     91        var count = 0;
     92        for (let entity of entities)
     93        {
     94            var cmpBuildRestrictions = Engine.QueryInterface(entity, IID_BuildRestrictions);
     95            if (cmpBuildRestrictions && cmpBuildRestrictions.GetCategory() == category)
     96            {
     97                count++;
     98                continue;
     99            }
     100            var cmpTrainingRestrictions = Engine.QueryInterface(entity, IID_TrainingRestrictions);
     101            if (cmpTrainingRestrictions && cmpTrainingRestrictions.GetCategory() == category)
     102                count++;
     103        }
     104        this.count[category] = count;
     105    }
     106
     107    this.conditional.add(category);
     108};
     109
    67110EntityLimits.prototype.ChangeLimit = function(category, value)
    68111{
    69112    this.limit[category] += value;
     
    71114
    72115EntityLimits.prototype.ChangeCount = function(category, value)
    73116{
    74     if (this.count[category] !== undefined)
    75         this.count[category] += value;
     117    // Categories without limits may not have been initialised, but should be kept for possible conditional limits
     118    if (this.count[category] === undefined)
     119        this.count[category] = 0;
     120       
     121    this.count[category] += value;
     122
     123    if (this.conditional.has(category))
     124    {
     125        var cmpGuiInterface = Engine.QueryInterface(SYSTEM_ENTITY, IID_GuiInterface);
     126        var cmpPlayer = Engine.QueryInterface(this.entity, IID_Player);
     127        cmpGuiInterface.PushNotification({"type": "resetselectionpannel", "players": [cmpPlayer.GetPlayerID()]});
     128    }
    76129};
    77130
    78131EntityLimits.prototype.GetLimits = function()
     
    161214    if (cmpTrainingRestrictions)
    162215        category = cmpTrainingRestrictions.GetCategory();
    163216    if (category)
    164         this.ChangeCount(category,modifier);
     217        this.ChangeCount(category, modifier);
    165218
    166219    // Update entity limits
    167220    var cmpIdentity = Engine.QueryInterface(msg.entity, IID_Identity);
     
    178231                this.ChangeLimit(category, modifier * this.changers[category][c]);
    179232};
    180233
     234EntityLimits.prototype.RemoveLimits = function(tech)
     235{
     236    for (var category in this.removers)
     237        if (this.removers[category] === tech)
     238            this.limit[category] = undefined;
     239};
     240
    181241Engine.RegisterComponentType(IID_EntityLimits, "EntityLimits", EntityLimits);
  • binaries/data/mods/public/simulation/components/TechnologyManager.js

     
    346346    var cmpRangeManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_RangeManager);
    347347    var ents = cmpRangeManager.GetEntitiesByPlayer(playerID);
    348348
     349    // Change the EntityLimit if any
     350    var cmpPlayerEntityLimits = QueryPlayerIDInterface(playerID, IID_EntityLimits);
     351    if (cmpPlayerEntityLimits)
     352        cmpPlayerEntityLimits.RemoveLimits(tech);
     353
    349354    // Call the related trigger event
    350355    var cmpTrigger = Engine.QueryInterface(SYSTEM_ENTITY, IID_Trigger);
    351356    cmpTrigger.CallEvent("ResearchFinished", {"player": playerID, "tech": tech});
  • binaries/data/mods/public/simulation/templates/special/player.xml

     
    1515  </BattleDetection>
    1616  <EntityLimits>
    1717    <Limits>
     18      <CivilCentre>1</CivilCentre>
     19      <Colony>0</Colony>
    1820      <DefenseTower>30</DefenseTower>
    1921      <Fortress>10</Fortress>
    2022      <Wonder>1</Wonder>
     
    4143        <PtolemyIV>4</PtolemyIV>
    4244      </Juggernaut>
    4345    </LimitChangers>
     46    <LimitRemovers>
     47      <CivilCentre>phase_town</CivilCentre>
     48      <Colony>phase_town</Colony>
     49    </LimitRemovers>
    4450  </EntityLimits>
    4551  <Player/>
    4652  <StatisticsTracker/>
  • binaries/data/mods/public/simulation/templates/structures/ptol_military_colony.xml

     
    33  <Attack disable=""/>
    44  <BuildRestrictions>
    55    <Territory>own neutral</Territory>
     6    <Category>Colony</Category>
    67    <Distance>
    78      <FromClass>Colony</FromClass>
    89      <MinDistance>120</MinDistance>
     
    2728  <Identity>
    2829    <Civ>ptol</Civ>
    2930    <GenericName>Military Colony</GenericName>
    30     <SpecificName>Klēroukhia</SpecificName>
     31    <SpecificName>Klēroukhia</SpecificName>
    3132    <Classes datatype="tokens">Town Colony</Classes>
    3233    <History>The Ptolemaic kings invited Greeks, Macedonians, Galatians (Gauls), Cretans, and Thracians alike to settle within Egypt in military colonies called cleruchies (klēroukhia). Under this arrangement, the settlers were given a plot of land, or a kleros, and in return were required to serve in the great king's army when called to duty. This created a upper-middle class of military settlers who owed their livelihoods and fortunes to the Ptolemaic kings and helped grow the available manpower for the imperial Ptolemaic army. A side effect of this system was that it drained the Greek homeland of military-aged men, a contributing factor to Greece's eventual conquest by Rome.</History>
    3334    <Tooltip>This is the Ptolemaic expansion building, similar to Civic Centers for other factions. It is weaker and carries a smaller territory influence, but is cheaper and built faster.
     
    4243  <ProductionQueue>
    4344    <Entities datatype="tokens">
    4445      units/ptol_infantry_spearman_2_b
    45       units/ptol_infantry_swordsman_b
     46      units/ptol_infantry_swordsman_b
    4647      units/ptol_cavalry_spearman_b
    4748      units/ptol_cavalry_javelinist_b
    4849    </Entities>
  • binaries/data/mods/public/simulation/templates/structures/sele_military_colony.xml

     
    33  <Attack disable=""/>
    44  <BuildRestrictions>
    55    <Territory>own neutral</Territory>
     6    <Category>Colony</Category>
    67    <Distance>
    78      <FromClass>Colony</FromClass>
    89      <MinDistance>120</MinDistance>
     
    2728  <Identity>
    2829    <Civ>sele</Civ>
    2930    <GenericName>Military Colony</GenericName>
    30     <SpecificName>Klēroukhia</SpecificName>
     31    <SpecificName>Klēroukhia</SpecificName>
    3132    <Classes datatype="tokens">Town Colony</Classes>
    3233    <History>The Seleucid kings invited Greeks, Macedonians, Galatians (Gauls), Cretans, and Thracians alike to settle in within the vast territories of the empire. They settled in military colonies called cleruchies (klēroukhia). Under this arrangement, the settlers were given a plot of land, or a kleros, and in return were required to serve in the great king's army when called to duty. This created a upper-middle class of military settlers who owed their livelihoods and fortunes to the Syrian kings and helped grow the available manpower for the imperial Seleucid army. A side effect of this system was that it drained the Greek homeland of military-aged men, a contributing factor to Greece's eventual conquest by Rome.</History>
    3334    <Tooltip>This is the Seleucid expansion building, similar to Civic Centers for other factions. It is weaker and carries a smaller territory influence, but is cheaper and built faster.
     
    3435- Train settler-soldiers of various nationalities.
    3536- Min. distance from other Military Colonies: 120 meters.</Tooltip>
    3637    <Icon>structures/military_settlement.png</Icon>
    37     <RequiredTechnology>phase_town</RequiredTechnology>
    3838  </Identity>
    3939  <Obstruction>
    4040    <Static width="23.0" depth="23.0"/>
     
    4141  </Obstruction>
    4242  <ProductionQueue>
    4343    <Entities datatype="tokens">
    44       units/sele_infantry_swordsman_b
    45       units/sele_infantry_archer_b
     44      units/sele_infantry_swordsman_b
     45      units/sele_infantry_archer_b
    4646      units/sele_cavalry_spearman_b
    4747    </Entities>
    4848    <Technologies datatype="tokens">
  • binaries/data/mods/public/simulation/templates/template_structure_civic_civil_centre.xml

     
    7070    </Classes>
    7171    <VisibleClasses datatype="tokens">CivilCentre</VisibleClasses>
    7272    <Icon>structures/civic_centre.png</Icon>
    73     <RequiredTechnology>phase_town</RequiredTechnology>
    7473  </Identity>
    7574  <Loot>
    7675    <xp>200</xp>
  • binaries/data/mods/public/simulation/templates/units/ptol_infantry_archer_b.xml

     
    33  <Builder>
    44    <Entities datatype="tokens">
    55      -structures/{civ}_civil_centre
    6       structures/ptol_military_colony
    76      structures/ptol_lighthouse
    87      structures/ptol_library
    98      structures/ptol_wonder
    109    </Entities>
     10    <ConditionalEntities>
     11      <CivilCentre>
     12        <Template>structures/ptol_civil_centre</Template>
     13        <Condition>Smaller</Condition>
     14        <Category>CivilCentre</Category>
     15        <Number>1</Number>
     16      </CivilCentre>
     17      <Colony>
     18        <Template>structures/ptol_military_colony</Template>
     19        <Condition>Greater</Condition>
     20        <Category>CivilCentre</Category>
     21        <Number>0</Number>
     22      </Colony>
     23    </ConditionalEntities>
    1124  </Builder>
    1225  <Cost>
    1326    <BuildTime>7</BuildTime>
  • binaries/data/mods/public/simulation/templates/units/ptol_infantry_javelinist_b.xml

     
    33  <Builder>
    44    <Entities datatype="tokens">
    55      -structures/{civ}_civil_centre
    6       structures/ptol_military_colony
    76      structures/ptol_lighthouse
    87      structures/ptol_library
    98      structures/ptol_wonder
    109    </Entities>
     10    <ConditionalEntities>
     11      <CivilCentre>
     12        <Template>structures/ptol_civil_centre</Template>
     13        <Condition>Smaller</Condition>
     14        <Category>CivilCentre</Category>
     15        <Number>1</Number>
     16      </CivilCentre>
     17      <Colony>
     18        <Template>structures/ptol_military_colony</Template>
     19        <Condition>Greater</Condition>
     20        <Category>CivilCentre</Category>
     21        <Number>0</Number>
     22      </Colony>
     23    </ConditionalEntities>
    1124  </Builder>
    1225  <Identity>
    1326    <Civ>ptol</Civ>
  • binaries/data/mods/public/simulation/templates/units/ptol_infantry_slinger_b.xml

     
    33  <Builder>
    44    <Entities datatype="tokens">
    55      -structures/{civ}_civil_centre
    6       structures/ptol_military_colony
    76      structures/ptol_lighthouse
    87      structures/ptol_library
    98      structures/ptol_wonder
    109    </Entities>
     10    <ConditionalEntities>
     11      <CivilCentre>
     12        <Template>structures/ptol_civil_centre</Template>
     13        <Condition>Smaller</Condition>
     14        <Category>CivilCentre</Category>
     15        <Number>1</Number>
     16      </CivilCentre>
     17      <Colony>
     18        <Template>structures/ptol_military_colony</Template>
     19        <Condition>Greater</Condition>
     20        <Category>CivilCentre</Category>
     21        <Number>0</Number>
     22      </Colony>
     23    </ConditionalEntities>
    1124  </Builder>
    1225  <Identity>
    1326    <Civ>ptol</Civ>
  • binaries/data/mods/public/simulation/templates/units/ptol_infantry_spearman_2_b.xml

     
    33  <Builder>
    44    <Entities datatype="tokens">
    55      -structures/{civ}_civil_centre
    6       structures/ptol_military_colony
    76      structures/ptol_lighthouse
    87      structures/ptol_library
    98      structures/ptol_wonder
    109    </Entities>
     10    <ConditionalEntities>
     11      <CivilCentre>
     12        <Template>structures/ptol_civil_centre</Template>
     13        <Condition>Smaller</Condition>
     14        <Category>CivilCentre</Category>
     15        <Number>1</Number>
     16      </CivilCentre>
     17      <Colony>
     18        <Template>structures/ptol_military_colony</Template>
     19        <Condition>Greater</Condition>
     20        <Category>CivilCentre</Category>
     21        <Number>0</Number>
     22      </Colony>
     23    </ConditionalEntities>
    1124  </Builder>
    1225  <Cost>
    1326    <Resources>
  • binaries/data/mods/public/simulation/templates/units/ptol_infantry_spearman_b.xml

     
    33  <Builder>
    44    <Entities datatype="tokens">
    55      -structures/{civ}_civil_centre
    6       structures/ptol_military_colony
    76      structures/ptol_lighthouse
    87      structures/ptol_library
    98      structures/ptol_wonder
    109    </Entities>
     10    <ConditionalEntities>
     11      <CivilCentre>
     12        <Template>structures/ptol_civil_centre</Template>
     13        <Condition>Smaller</Condition>
     14        <Category>CivilCentre</Category>
     15        <Number>1</Number>
     16      </CivilCentre>
     17      <Colony>
     18        <Template>structures/ptol_military_colony</Template>
     19        <Condition>Greater</Condition>
     20        <Category>CivilCentre</Category>
     21        <Number>0</Number>
     22      </Colony>
     23    </ConditionalEntities>
    1124  </Builder>
    1225  <Identity>
    1326    <Civ>ptol</Civ>
  • binaries/data/mods/public/simulation/templates/units/ptol_infantry_swordsman_b.xml

     
    33  <Builder>
    44    <Entities datatype="tokens">
    55      -structures/{civ}_civil_centre
    6       structures/ptol_military_colony
    76      structures/ptol_lighthouse
    87      structures/ptol_library
    98      structures/ptol_wonder
    109    </Entities>
     10    <ConditionalEntities>
     11      <CivilCentre>
     12        <Template>structures/ptol_civil_centre</Template>
     13        <Condition>Smaller</Condition>
     14        <Category>CivilCentre</Category>
     15        <Number>1</Number>
     16      </CivilCentre>
     17      <Colony>
     18        <Template>structures/ptol_military_colony</Template>
     19        <Condition>Greater</Condition>
     20        <Category>CivilCentre</Category>
     21        <Number>0</Number>
     22      </Colony>
     23    </ConditionalEntities>
    1124  </Builder>
    1225  <Cost>
    1326    <Resources>
  • binaries/data/mods/public/simulation/templates/units/ptol_support_female_citizen.xml

     
    44    <Entities datatype="tokens">
    55      -structures/{civ}_civil_centre
    66    </Entities>
     7    <ConditionalEntities>
     8      <CivilCentre>
     9        <Template>structures/ptol_civil_centre</Template>
     10        <Condition>Smaller</Condition>
     11        <Category>CivilCentre</Category>
     12        <Number>1</Number>
     13      </CivilCentre>
     14    </ConditionalEntities>
    715  </Builder>
    816  <Identity>
    917    <Civ>ptol</Civ>
  • binaries/data/mods/public/simulation/templates/units/sele_infantry_archer_b.xml

     
    33  <Builder>
    44    <Entities datatype="tokens">
    55      -structures/{civ}_civil_centre
    6       structures/sele_military_colony
    76      structures/sele_library
    87      structures/sele_wonder
    98    </Entities>
     9    <ConditionalEntities>
     10      <CivilCentre>
     11        <Template>structures/sele_civil_centre</Template>
     12        <Condition>Smaller</Condition>
     13        <Category>CivilCentre</Category>
     14        <Number>1</Number>
     15      </CivilCentre>
     16      <Colony>
     17        <Template>structures/sele_military_colony</Template>
     18        <Condition>Greater</Condition>
     19        <Category>CivilCentre</Category>
     20        <Number>0</Number>
     21      </Colony>
     22    </ConditionalEntities>
    1023  </Builder>
    1124  <Identity>
    1225    <Civ>sele</Civ>
  • binaries/data/mods/public/simulation/templates/units/sele_infantry_javelinist_b.xml

     
    33  <Builder>
    44    <Entities datatype="tokens">
    55      -structures/{civ}_civil_centre
    6       structures/sele_military_colony
    76      structures/sele_library
    87      structures/sele_wonder
    98    </Entities>
     9    <ConditionalEntities>
     10      <CivilCentre>
     11        <Template>structures/sele_civil_centre</Template>
     12        <Condition>Smaller</Condition>
     13        <Category>CivilCentre</Category>
     14        <Number>1</Number>
     15      </CivilCentre>
     16      <Colony>
     17        <Template>structures/sele_military_colony</Template>
     18        <Condition>Greater</Condition>
     19        <Category>CivilCentre</Category>
     20        <Number>0</Number>
     21      </Colony>
     22    </ConditionalEntities>
    1023  </Builder>
    1124  <Identity>
    1225    <Civ>sele</Civ>
  • binaries/data/mods/public/simulation/templates/units/sele_infantry_spearman_2_b.xml

     
    33  <Builder>
    44    <Entities datatype="tokens">
    55      -structures/{civ}_civil_centre
    6       structures/sele_military_colony
    76      structures/sele_library
    87      structures/sele_wonder
    98    </Entities>
     9    <ConditionalEntities>
     10      <CivilCentre>
     11        <Template>structures/sele_civil_centre</Template>
     12        <Condition>Smaller</Condition>
     13        <Category>CivilCentre</Category>
     14        <Number>1</Number>
     15      </CivilCentre>
     16      <Colony>
     17        <Template>structures/sele_military_colony</Template>
     18        <Condition>Greater</Condition>
     19        <Category>CivilCentre</Category>
     20        <Number>0</Number>
     21      </Colony>
     22    </ConditionalEntities>
    1023  </Builder>
    1124  <Identity>
    1225    <Civ>sele</Civ>
  • binaries/data/mods/public/simulation/templates/units/sele_infantry_spearman_b.xml

     
    33  <Builder>
    44    <Entities datatype="tokens">
    55      -structures/{civ}_civil_centre
    6       structures/sele_military_colony
    76      structures/sele_library
    87      structures/sele_wonder
    98    </Entities>
     9    <ConditionalEntities>
     10      <CivilCentre>
     11        <Template>structures/sele_civil_centre</Template>
     12        <Condition>Smaller</Condition>
     13        <Category>CivilCentre</Category>
     14        <Number>1</Number>
     15      </CivilCentre>
     16      <Colony>
     17        <Template>structures/sele_military_colony</Template>
     18        <Condition>Greater</Condition>
     19        <Category>CivilCentre</Category>
     20        <Number>0</Number>
     21      </Colony>
     22    </ConditionalEntities>
    1023  </Builder>
    1124  <Identity>
    1225    <Civ>sele</Civ>
  • binaries/data/mods/public/simulation/templates/units/sele_infantry_swordsman_b.xml

     
    33  <Builder>
    44    <Entities datatype="tokens">
    55      -structures/{civ}_civil_centre
    6       structures/sele_military_colony
    76      structures/sele_library
    87      structures/sele_wonder
    98    </Entities>
     9    <ConditionalEntities>
     10      <CivilCentre>
     11        <Template>structures/sele_civil_centre</Template>
     12        <Condition>Smaller</Condition>
     13        <Category>CivilCentre</Category>
     14        <Number>1</Number>
     15      </CivilCentre>
     16      <Colony>
     17        <Template>structures/sele_military_colony</Template>
     18        <Condition>Greater</Condition>
     19        <Category>CivilCentre</Category>
     20        <Number>0</Number>
     21      </Colony>
     22    </ConditionalEntities>
    1023  </Builder>
    1124  <Identity>
    1225    <Civ>sele</Civ>
  • binaries/data/mods/public/simulation/templates/units/sele_support_female_citizen.xml

     
    44    <Entities datatype="tokens">
    55      -structures/{civ}_civil_centre
    66    </Entities>
     7    <ConditionalEntities>
     8      <CivilCentre>
     9        <Template>structures/sele_civil_centre</Template>
     10        <Condition>Smaller</Condition>
     11        <Category>CivilCentre</Category>
     12        <Number>1</Number>
     13      </CivilCentre>
     14    </ConditionalEntities>
    715  </Builder>
    816  <Identity>
    917    <Civ>sele</Civ>