Changeset View
Changeset View
Standalone View
Standalone View
binaries/data/mods/public/simulation/components/tests/test_Attack.js
Engine.LoadHelperScript("DamageBonus.js"); | |||||
Engine.LoadHelperScript("Player.js"); | Engine.LoadHelperScript("Player.js"); | ||||
Engine.LoadHelperScript("ValueModification.js"); | Engine.LoadHelperScript("ValueModification.js"); | ||||
Engine.LoadComponentScript("interfaces/Auras.js"); | Engine.LoadComponentScript("interfaces/Auras.js"); | ||||
Engine.LoadComponentScript("interfaces/AuraManager.js"); | Engine.LoadComponentScript("interfaces/AuraManager.js"); | ||||
Engine.LoadComponentScript("interfaces/Capturable.js"); | Engine.LoadComponentScript("interfaces/Capturable.js"); | ||||
Engine.LoadComponentScript("interfaces/TechnologyManager.js"); | Engine.LoadComponentScript("interfaces/TechnologyManager.js"); | ||||
Engine.LoadComponentScript("interfaces/Formation.js"); | Engine.LoadComponentScript("interfaces/Formation.js"); | ||||
Engine.LoadComponentScript("interfaces/Attack.js"); | Engine.LoadComponentScript("interfaces/Attack.js"); | ||||
▲ Show 20 Lines • Show All 72 Lines • ▼ Show 20 Lines | "Ranged" : { | ||||
"Range": 10, | "Range": 10, | ||||
"FriendlyFire": "false", | "FriendlyFire": "false", | ||||
"Hack": 0.0, | "Hack": 0.0, | ||||
"Pierce": 15.0, | "Pierce": 15.0, | ||||
"Crush": 35.0, | "Crush": 35.0, | ||||
"Bonuses": { | "Bonuses": { | ||||
"BonusCav": { | "BonusCav": { | ||||
"Classes": "Cavalry", | "Classes": "Cavalry", | ||||
"Multiplier": 2 | "Multiplier": 3 | ||||
} | } | ||||
} | } | ||||
} | } | ||||
}, | }, | ||||
"Capture" : { | "Capture" : { | ||||
"Value": 8, | "Value": 8, | ||||
"MaxRange": 10, | "MaxRange": 10, | ||||
}, | }, | ||||
▲ Show 20 Lines • Show All 60 Lines • ▼ Show 20 Lines | TS_ASSERT_UNEVAL_EQUALS(cmpAttack.GetTimers("Capture"), { | ||||
"repeat": 1000 | "repeat": 1000 | ||||
}); | }); | ||||
TS_ASSERT_UNEVAL_EQUALS(cmpAttack.GetSplashDamage("Ranged"), { "hack": 0, "pierce": 15, "crush": 35, "friendlyFire": false, "shape": "Circular" }); | TS_ASSERT_UNEVAL_EQUALS(cmpAttack.GetSplashDamage("Ranged"), { "hack": 0, "pierce": 15, "crush": 35, "friendlyFire": false, "shape": "Circular" }); | ||||
}); | }); | ||||
for (let className of ["Infantry", "Cavalry"]) | for (let className of ["Infantry", "Cavalry"]) | ||||
attackComponentTest(className, true, (attacker, cmpAttack, defender) => { | attackComponentTest(className, true, (attacker, cmpAttack, defender) => { | ||||
TS_ASSERT_UNEVAL_EQUALS(cmpAttack.GetAttackBonus("Melee", defender), className == "Cavalry" ? 2 : 1); | |||||
TS_ASSERT_UNEVAL_EQUALS(cmpAttack.GetAttackBonus("Ranged", defender), 1); | TS_ASSERT_EQUALS(cmpAttack.GetBonusTemplate("Melee").BonusCav.Multiplier, 2); | ||||
TS_ASSERT_UNEVAL_EQUALS(cmpAttack.GetAttackBonus("Ranged.Splash", defender), className == "Cavalry" ? 2 : 1); | // Check that we don't leak data | ||||
TS_ASSERT_UNEVAL_EQUALS(cmpAttack.GetAttackBonus("Capture", defender), 1); | let bonus = cmpAttack.GetBonusTemplate("Melee"); | ||||
TS_ASSERT_UNEVAL_EQUALS(cmpAttack.GetAttackBonus("Slaughter", defender), 1); | bonus.BonusCav.Multiplier = 2.7; | ||||
TS_ASSERT_EQUALS(cmpAttack.GetBonusTemplate("Melee").BonusCav.Multiplier, 2); | |||||
TS_ASSERT(cmpAttack.GetBonusTemplate("Capture") === null); | |||||
let getAttackBonus = (t, e) => GetDamageBonus(e, cmpAttack.GetBonusTemplate(t)); | |||||
TS_ASSERT_UNEVAL_EQUALS(getAttackBonus("Melee", defender), className == "Cavalry" ? 2 : 1); | |||||
TS_ASSERT_UNEVAL_EQUALS(getAttackBonus("Ranged", defender), 1); | |||||
TS_ASSERT_UNEVAL_EQUALS(getAttackBonus("Ranged.Splash", defender), className == "Cavalry" ? 3 : 1); | |||||
TS_ASSERT_UNEVAL_EQUALS(getAttackBonus("Capture", defender), 1); | |||||
TS_ASSERT_UNEVAL_EQUALS(getAttackBonus("Slaughter", defender), 1); | |||||
}); | }); | ||||
// CanAttack rejects elephant attack due to RestrictedClasses | // CanAttack rejects elephant attack due to RestrictedClasses | ||||
attackComponentTest("Elephant", true, (attacker, cmpAttack, defender) => { | attackComponentTest("Elephant", true, (attacker, cmpAttack, defender) => { | ||||
TS_ASSERT_EQUALS(cmpAttack.CanAttack(defender), false); | TS_ASSERT_EQUALS(cmpAttack.CanAttack(defender), false); | ||||
}); | }); | ||||
function testGetBestAttackAgainst(defenderClass, bestAttack, isBuilding = false) | function testGetBestAttackAgainst(defenderClass, bestAttack, isBuilding = false) | ||||
▲ Show 20 Lines • Show All 102 Lines • Show Last 20 Lines |
Wildfire Games · Phabricator