Ticket #2445: teambonus.diff

File teambonus.diff, 3.2 KB (added by sanderd17, 10 years ago)
  • binaries/data/mods/public/simulation/components/TechnologyManager.js

     
    131131    if (!reqs)
    132132        return true;
    133133   
     134    // function to check the requirements on a different player, given a relation function
     135    // The relation is a string like "IsAlly", "IsEnemy" ...
     136    var otherPlayerCheck = function(relation, ent) {
     137        var cmpPlayerManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_PlayerManager);
     138        var numPlayers = cmpPlayerManager.GetNumPlayers();
     139        var cmpPlayer = Engine.QueryInterface(ent, IID_Player);
     140        for (var p = 1; p < numPlayers; p++)
     141        {
     142            if (!cmpPlayer[relation](p))
     143                continue;
     144            var playerEntID = cmpPlayerManager.GetPlayerByID(p)
     145            var cmpTechnologyManager = Engine.QueryInterface(playerEntID, IID_TechnologyManager);
     146            if (cmpTechnologyManager.CheckTechnologyRequirements(reqs.ally))
     147                return true;
     148        }
     149        return false;
     150    }
    134151    if (reqs.tech)
    135152    {
    136153        return this.IsTechnologyResearched(reqs.tech);
     
    178195        else
    179196            return false;
    180197    }
    181    
     198    else if (reqs.ally)
     199        return otherPlayerCheck("IsAlly", this.entity);
     200    else if (reqs.mutualAlly)
     201        return otherPlayerCheck("IsMutualAlly", this.entity);
     202    else if (reqs.enemy)
     203        return otherPlayerCheck("IsEnemyAlly", this.entity);
     204
    182205    // The technologies requirements are not a recognised format
    183206    error("Bad requirements " + uneval(reqs));
    184207    return false;
  • binaries/data/mods/public/simulation/data/technologies/iberians/teambonus_saripeko.json

     
     1{
     2    "description": "Reduces the cost for skirmishers with 20% for allies of Iberian players",
     3    "autoResearch": true,
     4    "requirements": {"mutualAlly": {"civ": "iber"}},
     5    "modifications": [
     6        {"value": "Cost/Resources/food", "multiply": 0.8},
     7        {"value": "Cost/Resources/wood", "multiply": 0.8},
     8        {"value": "Cost/Resources/metal", "multiply": 0.8},
     9        {"value": "Cost/Resources/stone", "multiply": 0.8}],
     10    "affects": ["CitizenSoldier Javelin"]
     11}
  • binaries/data/mods/public/simulation/data/technologies/successors/teambonus_syrian_tetrapolis.json

     
     1{
     2    "description": "Reduces the cost for civil centers with 20% for allies of Seleucid players",
     3    "autoResearch": true,
     4    "requirements": {"mutualAlly": {"civ": "sele"}},
     5    "modifications": [
     6        {"value": "Cost/Resources/food", "multiply": 0.8},
     7        {"value": "Cost/Resources/wood", "multiply": 0.8},
     8        {"value": "Cost/Resources/metal", "multiply": 0.8},
     9        {"value": "Cost/Resources/stone", "multiply": 0.8}],
     10    "affects": ["CivCenter"]
     11}