Ticket #4082: ptol-teambonus.patch
File ptol-teambonus.patch, 5.0 KB (added by , 8 years ago) |
---|
-
binaries/data/mods/public/simulation/components/Auras.js
210 210 continue; 211 211 } 212 212 213 // When only Player class affected, we do not need a rangeQuery as applicable only to player entity 214 // and templates TODO maybe add a new type "player" 215 if (this.IsGlobalAura(name) && this.GetClasses(name).length == 1 && this.GetClasses(name)[0] == "Player") 216 { 217 this.ApplyTemplateBonus(name, affectedPlayers); 218 let cmpPlayerManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_PlayerManager); 219 let playerEnts = affectedPlayers.map(player => cmpPlayerManager.GetPlayerByID(player)); 220 this.ApplyBonus(name, playerEnts); 221 continue; 222 } 223 213 224 this[name].rangeQuery = cmpRangeManager.CreateActiveQuery( 214 225 this.entity, 215 226 0, -
binaries/data/mods/public/simulation/components/ResourceTrickle.js
32 32 33 33 ResourceTrickle.prototype.Init = function() 34 34 { 35 this.ComputeRates(); 35 36 // Call the timer 36 varcmpTimer = Engine.QueryInterface(SYSTEM_ENTITY, IID_Timer);37 let cmpTimer = Engine.QueryInterface(SYSTEM_ENTITY, IID_Timer); 37 38 cmpTimer.SetInterval(this.entity, IID_ResourceTrickle, "Trickle", this.GetTimer(), this.GetTimer(), undefined); 38 39 }; 39 40 40 41 ResourceTrickle.prototype.GetTimer = function() 41 42 { 42 var interval = +this.template.Interval; 43 return interval; 43 return +this.template.Interval; 44 44 }; 45 45 46 46 ResourceTrickle.prototype.GetRates = function() 47 47 { 48 var rates = {}; 49 for (var resource in this.template.Rates) 50 rates[resource] = ApplyValueModificationsToEntity("ResourceTrickle/Rates/"+resource, +this.template.Rates[resource], this.entity); 48 return this.rates; 49 }; 51 50 52 return rates; 51 ResourceTrickle.prototype.ComputeRates = function() 52 { 53 this.rates = {}; 54 for (let resource in this.template.Rates) 55 this.rates[resource] = ApplyValueModificationsToEntity("ResourceTrickle/Rates/"+resource, +this.template.Rates[resource], this.entity); 53 56 }; 54 57 55 58 // Do the actual work here 56 59 ResourceTrickle.prototype.Trickle = function(data, lateness) 57 60 { 58 var cmpPlayer = QueryOwnerInterface(this.entity); 61 // The player entity may also be a ResourceTrickle component 62 let cmpPlayer = QueryOwnerInterface(this.entity) || Engine.QueryInterface(this.entity, IID_Player); 59 63 if (!cmpPlayer) 60 64 return; 61 65 62 var rates = this.GetRates(); 63 for (var resource in rates) 64 cmpPlayer.AddResource(resource, rates[resource]); 66 for (let resource in this.rates) 67 cmpPlayer.AddResource(resource, this.rates[resource]); 65 68 }; 66 69 70 ResourceTrickle.prototype.OnValueModification = function(msg) 71 { 72 if (msg.component != "ResourceTrickle") 73 return; 74 75 this.ComputeRates(); 76 }; 77 67 78 Engine.RegisterComponentType(IID_ResourceTrickle, "ResourceTrickle", ResourceTrickle); -
binaries/data/mods/public/simulation/data/auras/teambonuses/ptol_player_teambonus.json
1 { 2 "type": "global", 3 "affects": ["Player"], 4 "affectedPlayers": ["ExclusiveMutualAlly"], 5 "modifications": [ 6 { "value": "ResourceTrickle/Rates/food", "add": 1.5 } 7 ], 8 "auraName": "Breadbasket of the Mediterranean", 9 "auraDescription": "All allies automatically gain a slow trickle of food income." 10 } -
binaries/data/mods/public/simulation/templates/special/player.xml
60 60 <SharedLosTech>unlock_shared_los</SharedLosTech> 61 61 <SharedDropsitesTech>unlock_shared_dropsites</SharedDropsitesTech> 62 62 </Player> 63 <ResourceTrickle> 64 <Rates> 65 <food>0.0</food> 66 <wood>0.0</wood> 67 <stone>0.0</stone> 68 <metal>0.0</metal> 69 </Rates> 70 <Interval>1000</Interval> 71 </ResourceTrickle> 63 72 <StatisticsTracker/> 64 73 <TechnologyManager/> 65 74 </Entity> -
binaries/data/mods/public/simulation/templates/special/player_ptol.xml
1 1 <?xml version="1.0" encoding="utf-8"?> 2 2 <Entity parent="special/player"> 3 <Auras datatype="tokens">teambonuses/ptol_player_teambonus</Auras> 3 4 <EntityLimits> 4 5 <LimitRemovers> 5 6 <CivilCentre>