1
0
Fork 0
spacetac/src/core/equipments/Hulls.spec.ts

108 lines
5.1 KiB
TypeScript

module TK.SpaceTac.Specs {
testing("Hulls", test => {
test.case("generates IronHull based on level", check => {
let template = new Equipments.IronHull();
let equipment = template.generate(1);
check.equals(equipment.requirements, { "skill_materials": 1 });
compare_effects(check, equipment.effects, [new AttributeEffect("hull_capacity", 100)]);
check.equals(equipment.price, 100);
equipment = template.generate(2);
check.equals(equipment.requirements, { "skill_materials": 2 });
compare_effects(check, equipment.effects, [new AttributeEffect("hull_capacity", 140)]);
check.equals(equipment.price, 350);
equipment = template.generate(3);
check.equals(equipment.requirements, { "skill_materials": 3 });
compare_effects(check, equipment.effects, [new AttributeEffect("hull_capacity", 188)]);
check.equals(equipment.price, 850);
equipment = template.generate(10);
check.equals(equipment.requirements, { "skill_materials": 17 });
compare_effects(check, equipment.effects, [new AttributeEffect("hull_capacity", 748)]);
check.equals(equipment.price, 11350);
});
test.case("generates HardCoatedHull based on level", check => {
let template = new Equipments.HardCoatedHull();
let equipment = template.generate(1);
check.equals(equipment.requirements, { "skill_materials": 2 });
compare_effects(check, equipment.effects, [
new AttributeEffect("hull_capacity", 130),
new AttributeEffect("maneuvrability", -2),
]);
check.equals(equipment.price, 124);
equipment = template.generate(2);
check.equals(equipment.requirements, { "skill_materials": 5 });
compare_effects(check, equipment.effects, [
new AttributeEffect("hull_capacity", 182),
new AttributeEffect("maneuvrability", -3),
]);
check.equals(equipment.price, 434);
equipment = template.generate(3);
check.equals(equipment.requirements, { "skill_materials": 8 });
compare_effects(check, equipment.effects, [
new AttributeEffect("hull_capacity", 244),
new AttributeEffect("maneuvrability", -5),
]);
check.equals(equipment.price, 1054);
equipment = template.generate(10);
check.equals(equipment.requirements, { "skill_materials": 50 });
compare_effects(check, equipment.effects, [
new AttributeEffect("hull_capacity", 972),
new AttributeEffect("maneuvrability", -19),
]);
check.equals(equipment.price, 14074);
});
test.case("generates FractalHull based on level", check => {
let template = new Equipments.FractalHull();
let equipment = template.generate(1);
check.equals(equipment.requirements, { "skill_quantum": 1 });
compare_effects(check, equipment.effects, [
new AttributeEffect("hull_capacity", 60),
new AttributeEffect("precision", 2),
]);
compare_trigger_action(check, equipment.action, new TriggerAction(equipment, [new ValueEffect("hull", 60)], 1));
check.equals(equipment.cooldown, new Cooldown(1, 4));
check.equals(equipment.price, 250);
equipment = template.generate(2);
check.equals(equipment.requirements, { "skill_quantum": 3 });
compare_effects(check, equipment.effects, [
new AttributeEffect("hull_capacity", 84),
new AttributeEffect("precision", 2),
]);
compare_trigger_action(check, equipment.action, new TriggerAction(equipment, [new ValueEffect("hull", 84)], 1));
check.equals(equipment.cooldown, new Cooldown(1, 4));
check.equals(equipment.price, 875);
equipment = template.generate(3);
check.equals(equipment.requirements, { "skill_quantum": 5 });
compare_effects(check, equipment.effects, [
new AttributeEffect("hull_capacity", 112),
new AttributeEffect("precision", 3),
]);
compare_trigger_action(check, equipment.action, new TriggerAction(equipment, [new ValueEffect("hull", 112)], 1));
check.equals(equipment.cooldown, new Cooldown(1, 4));
check.equals(equipment.price, 2125);
equipment = template.generate(10);
check.equals(equipment.requirements, { "skill_quantum": 33 });
compare_effects(check, equipment.effects, [
new AttributeEffect("hull_capacity", 448),
new AttributeEffect("precision", 14),
]);
compare_trigger_action(check, equipment.action, new TriggerAction(equipment, [new ValueEffect("hull", 448)], 2));
check.equals(equipment.cooldown, new Cooldown(1, 4));
check.equals(equipment.price, 28375);
});
});
}