Differential D2092 Diff 9392 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/Damage.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; | ||||
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"; | ||||
AddMock(SYSTEM_ENTITY, IID_Damage, { | let Attacking = { | ||||
"CauseDamage": (data) => { dealtDamage += data.strengths[statusName]; } | "HandleAttackEffects": (_, attackData) => { dealtDamage += attackData.Damage[statusName]; } | ||||
}); | }; | ||||
Engine.RegisterGlobal("Attacking", Attacking); | |||||
// damage scheduled: 0, 10, 20 sec | // damage scheduled: 0, 10, 20 sec | ||||
cmpStatusReceiver.InflictEffects({ | cmpStatusReceiver.InflictEffects({ | ||||
[statusName]: { | [statusName]: { | ||||
"Duration": 20000, | "Duration": 20000, | ||||
"Interval": 10000, | "Interval": 10000, | ||||
"Damage": 1 | "Damage": 1 | ||||
} | } | ||||
Show All 15 Lines | function testInflictEffects() | ||||
TS_ASSERT_EQUALS(dealtDamage, 3); // 30 sec | TS_ASSERT_EQUALS(dealtDamage, 3); // 30 sec | ||||
} | } | ||||
testInflictEffects(); | testInflictEffects(); | ||||
function testMultipleEffects() | function testMultipleEffects() | ||||
{ | { | ||||
setup(); | setup(); | ||||
AddMock(SYSTEM_ENTITY, IID_Damage, { | let Attacking = { | ||||
"CauseDamage": (data) => { | "HandleAttackEffects": (_, attackData) => { | ||||
if (data.strengths.Burn) dealtDamage += data.strengths.Burn; | if (attackData.Damage.Burn) dealtDamage += attackData.Damage.Burn; | ||||
if (data.strengths.Poison) dealtDamage += data.strengths.Poison; | if (attackData.Damage.Poison) dealtDamage += attackData.Damage.Poison; | ||||
} | }, | ||||
}); | }; | ||||
Engine.RegisterGlobal("Attacking", Attacking); | |||||
// damage scheduled: 0, 1, 2, 10 sec | // damage scheduled: 0, 1, 2, 10 sec | ||||
cmpStatusReceiver.InflictEffects({ | cmpStatusReceiver.InflictEffects({ | ||||
"Burn": { | "Burn": { | ||||
"Duration": 20000, | "Duration": 20000, | ||||
"Interval": 10000, | "Interval": 10000, | ||||
"Damage": 10 | "Damage": 10 | ||||
}, | }, | ||||
Show All 18 Lines | |||||
} | } | ||||
testMultipleEffects(); | testMultipleEffects(); | ||||
function testRemoveEffect() | function testRemoveEffect() | ||||
{ | { | ||||
setup(); | setup(); | ||||
let statusName = "Poison"; | let statusName = "Poison"; | ||||
AddMock(SYSTEM_ENTITY, IID_Damage, { | let Attacking = { | ||||
"CauseDamage": (data) => { dealtDamage += data.strengths[statusName]; } | "HandleAttackEffects": (_, attackData) => { dealtDamage += attackData.Damage[statusName]; } | ||||
}); | }; | ||||
Engine.RegisterGlobal("Attacking", Attacking); | |||||
// damage scheduled: 0, 10, 20 sec | // damage scheduled: 0, 10, 20 sec | ||||
cmpStatusReceiver.InflictEffects({ | cmpStatusReceiver.InflictEffects({ | ||||
[statusName]: { | [statusName]: { | ||||
"Duration": 20000, | "Duration": 20000, | ||||
"Interval": 10000, | "Interval": 10000, | ||||
"Damage": 1 | "Damage": 1 | ||||
} | } | ||||
Show All 12 Lines |
Wildfire Games · Phabricator