Ticket #3769: aurapatch.5.diff

File aurapatch.5.diff, 3.1 KB (added by fatherbushido, 8 years ago)
  • binaries/data/mods/public/simulation/components/AuraManager.js

     
    170170    if (!template || !template.Identity)
    171171        return value;
    172172    var classes = GetIdentityClasses(template.Identity);
    173 
    174173    var usedKeys = new Set();
    175174    var add = 0;
    176175    var multiply = 1;
    177     for (let c in cache)
     176    for (let className of cache.keys())
    178177    {
    179         if (!MatchesClassList(classes, c))
     178        if (!MatchesClassList(classes, className))
    180179            continue;
    181 
    182         for (let key in cache.get(c))
     180       
     181        for (let key of cache.get(className).keys())
    183182        {
    184183            // don't add an aura with the same key twice
    185184            if (usedKeys.has(key))
    186185                continue;
    187 
    188             add += cache.get(c).get(key).add;
    189             multiply *= cache.get(c).get(key).multiply;
     186            add += cache.get(className).get(key).add;
     187            multiply *= cache.get(className).get(key).multiply;
    190188            usedKeys.add(key);
    191189        }
    192190    }
  • binaries/data/mods/public/simulation/components/Foundation.js

     
    2828
    2929    // Remember our cost here, so if it changes after construction begins (from technologies)
    3030    //  we will use the correct values to refund partial construction costs
    31     var cmpCost = Engine.QueryInterface(this.entity, IID_Cost);
    32     this.costs = cmpCost.GetResourceCosts();
     31    let cmpTemplateManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_TemplateManager);
     32    let templateFull = cmpTemplateManager.GetTemplate(template);
     33    this.costs = {};
     34    for (let r in templateFull.Cost.Resources)
     35        this.costs[r] = ApplyValueModificationsToTemplate("Cost/Resources/"+r, +templateFull.Cost.Resources[r], owner, templateFull);
    3336    this.maxProgress = 0;
    3437
    3538    this.initialised = true;
  • binaries/data/mods/public/simulation/helpers/Commands.js

     
    969969        Engine.DestroyEntity(ent);
    970970    }
    971971   
    972     // We need the cost after tech modifications
     972    // We need the cost after tech and aura modifications
    973973    // To calculate this with an entity requires ownership, so use the template instead
    974     var cmpTemplateManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_TemplateManager);
    975     var template = cmpTemplateManager.GetTemplate(foundationTemplate);
    976974    var costs = {};
    977975    for (var r in template.Cost.Resources)
    978     {
    979         costs[r] = +template.Cost.Resources[r];
    980         if (cmpTechnologyManager)
    981             costs[r] = cmpTechnologyManager.ApplyModificationsTemplate("Cost/Resources/"+r, costs[r], template);
    982     }
     976        costs[r] = ApplyValueModificationsToTemplate("Cost/Resources/"+r, +template.Cost.Resources[r], player, template);
    983977   
    984978    if (!cmpPlayer.TrySubtractResources(costs))
    985979    {