Ticket #3769: aurapatch.8.diff

File aurapatch.8.diff, 4.0 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, mods] of cache)
    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, mod] of mods)
    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 += mod.add;
     187            multiply *= mod.multiply;
    190188            usedKeys.add(key);
    191189        }
    192190    }
    193     value *= multiply;
    194     value += add;
     191    value = value*multiply + add;
    195192    return value;
    196193};
    197194
  • binaries/data/mods/public/simulation/components/Cost.js

     
    6565    return costs;
    6666};
    6767
     68Cost.prototype.GetResourceCostsFromTemplate = function(owner)
     69{
     70    let cmpTemplateManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_TemplateManager);
     71    let entityTemplateName = cmpTemplateManager.GetCurrentTemplateName(this.entity);
     72    let entityTemplate = cmpTemplateManager.GetTemplate(entityTemplateName);
     73    let costs = {};
     74    for (let r in this.template.Resources)
     75    {
     76        costs[r] = +this.template.Resources[r];
     77        costs[r] = ApplyValueModificationsToTemplate("Cost/Resources/"+r, costs[r], owner, entityTemplate);
     78    };
     79    return costs;
     80};
     81
    6882Cost.prototype.OnOwnershipChanged = function(msg)
    6983{
    7084    if (msg.from != -1)
  • binaries/data/mods/public/simulation/components/Foundation.js

     
    2727    this.owner = owner;
    2828
    2929    // Remember our cost here, so if it changes after construction begins (from technologies)
    30     //  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();
     30    // we will use the correct values to refund partial construction costs
     31
     32    let cmpCost = Engine.QueryInterface(this.entity, IID_Cost);
     33    this.costs = cmpCost.GetResourceCostsFromTemplate(owner);
     34
    3335    this.maxProgress = 0;
    34 
    3536    this.initialised = true;
    3637};
    3738
  • 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);
    976     var costs = {};
    977     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     }
    983    
     974    let cmpCost = Engine.QueryInterface(ent, IID_Cost);
     975    let costs = cmpCost.GetResourceCostsFromTemplate(player);   
     976       
    984977    if (!cmpPlayer.TrySubtractResources(costs))
    985978    {
    986979        if (g_DebugCommands)