Index: ps/trunk/binaries/data/mods/public/simulation/components/StatusEffectsReceiver.js =================================================================== --- ps/trunk/binaries/data/mods/public/simulation/components/StatusEffectsReceiver.js +++ ps/trunk/binaries/data/mods/public/simulation/components/StatusEffectsReceiver.js @@ -32,9 +32,8 @@ */ StatusEffectsReceiver.prototype.ApplyStatus = function(effectData, attacker, attackerOwner) { - let attackerData = { "entity": attacker, "owner": attackerOwner }; for (let effect in effectData) - this.AddStatus(effect, effectData[effect], attackerData); + this.AddStatus(effect, effectData[effect], attacker, attackerOwner); // TODO: implement loot? @@ -46,9 +45,10 @@ * * @param {string} statusCode - The code of the status effect. * @param {Object} data - The various effects and timings. - * @param {Object} attackerData - The attacker and attackerOwner. + * @param {number} attacker - optional, the entity ID of the attacker. + * @param {number} attackerOwner - optional, the player ID of the attacker. */ -StatusEffectsReceiver.prototype.AddStatus = function(baseCode, data, attackerData) +StatusEffectsReceiver.prototype.AddStatus = function(baseCode, data, attacker = INVALID_ENTITY, attackerOwner = INVALID_PLAYER) { let statusCode = baseCode; if (this.activeStatusEffects[statusCode]) @@ -101,7 +101,7 @@ status._timeElapsed = 0; status._firstTime = true; - status.source = attackerData; + status.source = { "entity": attacker, "owner": attackerOwner }; let cmpTimer = Engine.QueryInterface(SYSTEM_ENTITY, IID_Timer); status._timer = cmpTimer.SetInterval(this.entity, IID_StatusEffectsReceiver, "ExecuteEffect", 0, +(status.Interval || status._interval), statusCode); Index: ps/trunk/binaries/data/mods/public/simulation/components/tests/test_StatusEffectsReceiver.js =================================================================== --- ps/trunk/binaries/data/mods/public/simulation/components/tests/test_StatusEffectsReceiver.js +++ ps/trunk/binaries/data/mods/public/simulation/components/tests/test_StatusEffectsReceiver.js @@ -44,10 +44,9 @@ [statusName]: 1 } }, -{ - "entity": enemyEntity, - "owner": enemy, -}); +enemyEntity, +enemy +); cmpTimer.OnUpdate({ "turnLength": 1 }); TS_ASSERT_EQUALS(dealtDamage, 1); // 1 sec @@ -111,10 +110,9 @@ [statusName]: 1 } }, -{ - "entity": enemyEntity, - "owner": enemy, -}); +enemyEntity, +enemy +); cmpTimer.OnUpdate({ "turnLength": 1 }); TS_ASSERT_EQUALS(dealtDamage, 1); // 1 sec @@ -154,10 +152,9 @@ } } }, -{ - "entity": enemyEntity, - "owner": enemy, -}); +enemyEntity, +enemy +); let cmpHealth = Engine.QueryInterface(target, IID_Health); // Test that the modification is applied. @@ -186,10 +183,9 @@ } } }, -{ - "entity": enemyEntity, - "owner": enemy, -}); +enemyEntity, +enemy +); // Test that the addition modification is applied. TS_ASSERT_EQUALS(cmpHealth.GetMaxHitpoints(), maxHealth + addition); @@ -217,10 +213,9 @@ } } }, -{ - "entity": enemyEntity, - "owner": enemy, -}); +enemyEntity, +enemy +); // Test that the replacement modification is applied. TS_ASSERT_EQUALS(cmpHealth.GetMaxHitpoints(), newValue);