Ticket #3769: aurapatch.8.diff
File aurapatch.8.diff, 4.0 KB (added by , 8 years ago) |
---|
-
binaries/data/mods/public/simulation/components/AuraManager.js
170 170 if (!template || !template.Identity) 171 171 return value; 172 172 var classes = GetIdentityClasses(template.Identity); 173 174 173 var usedKeys = new Set(); 175 174 var add = 0; 176 175 var multiply = 1; 177 for (let c incache)176 for (let [className, mods] of cache) 178 177 { 179 if (!MatchesClassList(classes, c ))178 if (!MatchesClassList(classes, className)) 180 179 continue; 181 182 for (let key in cache.get(c))180 181 for (let [key, mod] of mods) 183 182 { 184 183 // don't add an aura with the same key twice 185 184 if (usedKeys.has(key)) 186 185 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; 190 188 usedKeys.add(key); 191 189 } 192 190 } 193 value *= multiply; 194 value += add; 191 value = value*multiply + add; 195 192 return value; 196 193 }; 197 194 -
binaries/data/mods/public/simulation/components/Cost.js
65 65 return costs; 66 66 }; 67 67 68 Cost.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 68 82 Cost.prototype.OnOwnershipChanged = function(msg) 69 83 { 70 84 if (msg.from != -1) -
binaries/data/mods/public/simulation/components/Foundation.js
27 27 this.owner = owner; 28 28 29 29 // 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 33 35 this.maxProgress = 0; 34 35 36 this.initialised = true; 36 37 }; 37 38 -
binaries/data/mods/public/simulation/helpers/Commands.js
969 969 Engine.DestroyEntity(ent); 970 970 } 971 971 972 // We need the cost after tech modifications972 // We need the cost after tech and aura modifications 973 973 // 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 984 977 if (!cmpPlayer.TrySubtractResources(costs)) 985 978 { 986 979 if (g_DebugCommands)