Differential D2281 Diff 11073 binaries/data/mods/public/simulation/components/tests/test_StatusEffectsReceiver.js
Changeset View
Changeset View
Standalone View
Standalone View
binaries/data/mods/public/simulation/components/tests/test_StatusEffectsReceiver.js
Engine.LoadComponentScript("interfaces/StatusEffectsReceiver.js"); | Engine.LoadComponentScript("interfaces/StatusEffectsReceiver.js"); | ||||
Engine.LoadComponentScript("interfaces/Timer.js"); | Engine.LoadComponentScript("interfaces/Timer.js"); | ||||
Engine.LoadComponentScript("StatusEffectsReceiver.js"); | Engine.LoadComponentScript("StatusEffectsReceiver.js"); | ||||
Engine.LoadComponentScript("Timer.js"); | Engine.LoadComponentScript("Timer.js"); | ||||
var target = 42; | var target = 42; | ||||
var cmpStatusReceiver; | var cmpStatusReceiver; | ||||
var cmpTimer; | var cmpTimer; | ||||
var dealtDamage; | var dealtDamage; | ||||
var enemyEntity = 4; | |||||
var enemy = 2; | |||||
function setup() | function setup() | ||||
{ | { | ||||
cmpStatusReceiver = ConstructComponent(target, "StatusEffectsReceiver"); | cmpStatusReceiver = ConstructComponent(target, "StatusEffectsReceiver"); | ||||
cmpTimer = ConstructComponent(SYSTEM_ENTITY, "Timer"); | cmpTimer = ConstructComponent(SYSTEM_ENTITY, "Timer"); | ||||
dealtDamage = 0; | dealtDamage = 0; | ||||
} | } | ||||
function testInflictEffects() | function testInflictEffects() | ||||
{ | { | ||||
setup(); | setup(); | ||||
let statusName = "Burn"; | let statusName = "Burn"; | ||||
let Attacking = { | let Attacking = { | ||||
"HandleAttackEffects": (_, attackData) => { dealtDamage += attackData.Damage[statusName]; } | "HandleAttackEffects": (_, attackData) => { dealtDamage += attackData.Damage[statusName]; } | ||||
}; | }; | ||||
Engine.RegisterGlobal("Attacking", Attacking); | Engine.RegisterGlobal("Attacking", Attacking); | ||||
// damage scheduled: 0, 10, 20 sec | // damage scheduled: 0, 10, 20 sec | ||||
cmpStatusReceiver.AddStatus(statusName, { | cmpStatusReceiver.AddStatus(statusName, { | ||||
"Duration": 20000, | "Duration": 20000, | ||||
"Interval": 10000, | "Interval": 10000, | ||||
"Damage": { | "Damage": { | ||||
[statusName]: 1 | [statusName]: 1 | ||||
} | } | ||||
}, | |||||
{ | |||||
"entity": enemyEntity, | |||||
"owner": enemy, | |||||
}); | }); | ||||
cmpTimer.OnUpdate({ "turnLength": 1 }); | cmpTimer.OnUpdate({ "turnLength": 1 }); | ||||
TS_ASSERT_EQUALS(dealtDamage, 1); // 1 sec | TS_ASSERT_EQUALS(dealtDamage, 1); // 1 sec | ||||
cmpTimer.OnUpdate({ "turnLength": 8 }); | cmpTimer.OnUpdate({ "turnLength": 8 }); | ||||
TS_ASSERT_EQUALS(dealtDamage, 1); // 9 sec | TS_ASSERT_EQUALS(dealtDamage, 1); // 9 sec | ||||
Show All 16 Lines | let Attacking = { | ||||
"HandleAttackEffects": (_, attackData) => { | "HandleAttackEffects": (_, attackData) => { | ||||
if (attackData.Damage.Burn) dealtDamage += attackData.Damage.Burn; | if (attackData.Damage.Burn) dealtDamage += attackData.Damage.Burn; | ||||
if (attackData.Damage.Poison) dealtDamage += attackData.Damage.Poison; | if (attackData.Damage.Poison) dealtDamage += attackData.Damage.Poison; | ||||
}, | }, | ||||
}; | }; | ||||
Engine.RegisterGlobal("Attacking", Attacking); | Engine.RegisterGlobal("Attacking", Attacking); | ||||
// damage scheduled: 0, 1, 2, 10 sec | // damage scheduled: 0, 1, 2, 10 sec | ||||
cmpStatusReceiver.GiveStatus({ | cmpStatusReceiver.ApplyStatus({ | ||||
"Burn": { | "Burn": { | ||||
"Duration": 20000, | "Duration": 20000, | ||||
"Interval": 10000, | "Interval": 10000, | ||||
"Damage": { | "Damage": { | ||||
"Burn": 10 | "Burn": 10 | ||||
} | } | ||||
}, | }, | ||||
"Poison": { | "Poison": { | ||||
Show All 31 Lines | function testRemoveStatus() | ||||
// damage scheduled: 0, 10, 20 sec | // damage scheduled: 0, 10, 20 sec | ||||
cmpStatusReceiver.AddStatus(statusName, { | cmpStatusReceiver.AddStatus(statusName, { | ||||
"Duration": 20000, | "Duration": 20000, | ||||
"Interval": 10000, | "Interval": 10000, | ||||
"Damage": { | "Damage": { | ||||
[statusName]: 1 | [statusName]: 1 | ||||
} | } | ||||
}, | |||||
{ | |||||
"entity": enemyEntity, | |||||
"owner": enemy, | |||||
}); | }); | ||||
cmpTimer.OnUpdate({ "turnLength": 1 }); | cmpTimer.OnUpdate({ "turnLength": 1 }); | ||||
TS_ASSERT_EQUALS(dealtDamage, 1); // 1 sec | TS_ASSERT_EQUALS(dealtDamage, 1); // 1 sec | ||||
cmpStatusReceiver.RemoveStatus(statusName); | cmpStatusReceiver.RemoveStatus(statusName); | ||||
cmpTimer.OnUpdate({ "turnLength": 10 }); | cmpTimer.OnUpdate({ "turnLength": 10 }); | ||||
TS_ASSERT_EQUALS(dealtDamage, 1); // 11 sec | TS_ASSERT_EQUALS(dealtDamage, 1); // 11 sec | ||||
} | } | ||||
testRemoveStatus(); | testRemoveStatus(); |
Wildfire Games · Phabricator