2017-11-14 00:07:06 +00:00
|
|
|
module TK.SpaceTac.Specs {
|
2017-10-26 21:47:13 +00:00
|
|
|
testing("Engines", test => {
|
|
|
|
test.case("generates RocketEngine based on level", check => {
|
2017-11-14 00:07:06 +00:00
|
|
|
let template = new Equipments.RocketEngine();
|
2017-07-31 22:49:00 +00:00
|
|
|
|
|
|
|
let equipment = template.generate(1);
|
2017-10-26 21:47:13 +00:00
|
|
|
check.equals(equipment.requirements, { "skill_materials": 1 });
|
2017-11-14 00:07:06 +00:00
|
|
|
compare_effects(check, equipment.effects, [new AttributeEffect("maneuvrability", 2)]);
|
2017-10-26 21:47:13 +00:00
|
|
|
check.equals(equipment.cooldown, new Cooldown(2, 0));
|
2017-11-14 00:07:06 +00:00
|
|
|
compare_action(check, equipment.action, new MoveAction(equipment, 200, 120, 70));
|
2017-10-26 21:47:13 +00:00
|
|
|
check.equals(equipment.price, 120);
|
2017-07-31 22:49:00 +00:00
|
|
|
|
|
|
|
equipment = template.generate(2);
|
2017-10-26 21:47:13 +00:00
|
|
|
check.equals(equipment.requirements, { "skill_materials": 2 });
|
2017-11-14 00:07:06 +00:00
|
|
|
compare_effects(check, equipment.effects, [new AttributeEffect("maneuvrability", 2)]);
|
2017-10-26 21:47:13 +00:00
|
|
|
check.equals(equipment.cooldown, new Cooldown(2, 0));
|
2017-11-14 00:07:06 +00:00
|
|
|
compare_action(check, equipment.action, new MoveAction(equipment, 210, 120, 70));
|
2017-10-26 21:47:13 +00:00
|
|
|
check.equals(equipment.price, 420);
|
2017-07-31 22:49:00 +00:00
|
|
|
|
|
|
|
equipment = template.generate(3);
|
2017-10-26 21:47:13 +00:00
|
|
|
check.equals(equipment.requirements, { "skill_materials": 3 });
|
2017-11-14 00:07:06 +00:00
|
|
|
compare_effects(check, equipment.effects, [new AttributeEffect("maneuvrability", 3)]);
|
2017-10-26 21:47:13 +00:00
|
|
|
check.equals(equipment.cooldown, new Cooldown(2, 0));
|
2017-11-14 00:07:06 +00:00
|
|
|
compare_action(check, equipment.action, new MoveAction(equipment, 220, 120, 70));
|
2017-10-26 21:47:13 +00:00
|
|
|
check.equals(equipment.price, 1020);
|
2017-07-31 22:49:00 +00:00
|
|
|
|
|
|
|
equipment = template.generate(10);
|
2017-10-26 21:47:13 +00:00
|
|
|
check.equals(equipment.requirements, { "skill_materials": 17 });
|
2017-11-14 00:07:06 +00:00
|
|
|
compare_effects(check, equipment.effects, [new AttributeEffect("maneuvrability", 14)]);
|
2017-10-26 21:47:13 +00:00
|
|
|
check.equals(equipment.cooldown, new Cooldown(2, 0));
|
2017-11-14 00:07:06 +00:00
|
|
|
compare_action(check, equipment.action, new MoveAction(equipment, 290, 120, 70));
|
2017-10-26 21:47:13 +00:00
|
|
|
check.equals(equipment.price, 13620);
|
2017-07-31 22:49:00 +00:00
|
|
|
});
|
|
|
|
|
2017-10-26 21:47:13 +00:00
|
|
|
test.case("generates IonThruster based on level", check => {
|
2017-11-14 00:07:06 +00:00
|
|
|
let template = new Equipments.IonThruster();
|
2017-07-31 22:49:00 +00:00
|
|
|
|
|
|
|
let equipment = template.generate(1);
|
2017-10-26 21:47:13 +00:00
|
|
|
check.equals(equipment.requirements, { "skill_photons": 1 });
|
2017-11-14 00:07:06 +00:00
|
|
|
compare_effects(check, equipment.effects, [new AttributeEffect("maneuvrability", 1)]);
|
2017-10-26 21:47:13 +00:00
|
|
|
check.equals(equipment.cooldown, new Cooldown(3, 1));
|
2017-11-14 00:07:06 +00:00
|
|
|
compare_action(check, equipment.action, new MoveAction(equipment, 120, 120, 80));
|
2017-10-26 21:47:13 +00:00
|
|
|
check.equals(equipment.price, 150);
|
2017-07-31 22:49:00 +00:00
|
|
|
|
|
|
|
equipment = template.generate(2);
|
2017-10-26 21:47:13 +00:00
|
|
|
check.equals(equipment.requirements, { "skill_photons": 2 });
|
2017-11-14 00:07:06 +00:00
|
|
|
compare_effects(check, equipment.effects, [new AttributeEffect("maneuvrability", 2)]);
|
2017-10-26 21:47:13 +00:00
|
|
|
check.equals(equipment.cooldown, new Cooldown(3, 1));
|
2017-11-14 00:07:06 +00:00
|
|
|
compare_action(check, equipment.action, new MoveAction(equipment, 130, 120, 80));
|
2017-10-26 21:47:13 +00:00
|
|
|
check.equals(equipment.price, 525);
|
2017-07-31 22:49:00 +00:00
|
|
|
|
|
|
|
equipment = template.generate(3);
|
2017-10-26 21:47:13 +00:00
|
|
|
check.equals(equipment.requirements, { "skill_photons": 3 });
|
2017-11-14 00:07:06 +00:00
|
|
|
compare_effects(check, equipment.effects, [new AttributeEffect("maneuvrability", 3)]);
|
2017-10-26 21:47:13 +00:00
|
|
|
check.equals(equipment.cooldown, new Cooldown(3, 1));
|
2017-11-14 00:07:06 +00:00
|
|
|
compare_action(check, equipment.action, new MoveAction(equipment, 140, 120, 80));
|
2017-10-26 21:47:13 +00:00
|
|
|
check.equals(equipment.price, 1275);
|
2017-07-31 22:49:00 +00:00
|
|
|
|
|
|
|
equipment = template.generate(10);
|
2017-10-26 21:47:13 +00:00
|
|
|
check.equals(equipment.requirements, { "skill_photons": 17 });
|
2017-11-14 00:07:06 +00:00
|
|
|
compare_effects(check, equipment.effects, [new AttributeEffect("maneuvrability", 17)]);
|
2017-10-26 21:47:13 +00:00
|
|
|
check.equals(equipment.cooldown, new Cooldown(3, 1));
|
2017-11-14 00:07:06 +00:00
|
|
|
compare_action(check, equipment.action, new MoveAction(equipment, 210, 120, 80));
|
2017-10-26 21:47:13 +00:00
|
|
|
check.equals(equipment.price, 17025);
|
2017-07-31 22:49:00 +00:00
|
|
|
});
|
|
|
|
|
2017-10-26 21:47:13 +00:00
|
|
|
test.case("generates VoidhawkEngine based on level", check => {
|
2017-11-14 00:07:06 +00:00
|
|
|
let template = new Equipments.VoidhawkEngine();
|
2017-07-31 22:49:00 +00:00
|
|
|
|
|
|
|
let equipment = template.generate(1);
|
2017-10-26 21:47:13 +00:00
|
|
|
check.equals(equipment.requirements, { "skill_gravity": 2 });
|
2017-11-14 00:07:06 +00:00
|
|
|
compare_effects(check, equipment.effects, [new AttributeEffect("maneuvrability", -3)]);
|
2017-10-26 21:47:13 +00:00
|
|
|
check.equals(equipment.cooldown, new Cooldown(1, 0));
|
2017-11-14 00:07:06 +00:00
|
|
|
compare_action(check, equipment.action, new MoveAction(equipment, 2000, 270, 0));
|
2017-10-26 21:47:13 +00:00
|
|
|
check.equals(equipment.price, 300);
|
2017-07-31 22:49:00 +00:00
|
|
|
|
|
|
|
equipment = template.generate(2);
|
2017-10-26 21:47:13 +00:00
|
|
|
check.equals(equipment.requirements, { "skill_gravity": 3 });
|
2017-11-14 00:07:06 +00:00
|
|
|
compare_effects(check, equipment.effects, [new AttributeEffect("maneuvrability", -4)]);
|
2017-10-26 21:47:13 +00:00
|
|
|
check.equals(equipment.cooldown, new Cooldown(1, 0));
|
2017-11-14 00:07:06 +00:00
|
|
|
compare_action(check, equipment.action, new MoveAction(equipment, 2000, 245, 0));
|
2017-10-26 21:47:13 +00:00
|
|
|
check.equals(equipment.price, 1050);
|
2017-07-31 22:49:00 +00:00
|
|
|
|
|
|
|
equipment = template.generate(3);
|
2017-10-26 21:47:13 +00:00
|
|
|
check.equals(equipment.requirements, { "skill_gravity": 5 });
|
2017-11-14 00:07:06 +00:00
|
|
|
compare_effects(check, equipment.effects, [new AttributeEffect("maneuvrability", -4)]);
|
2017-10-26 21:47:13 +00:00
|
|
|
check.equals(equipment.cooldown, new Cooldown(1, 0));
|
2017-11-14 00:07:06 +00:00
|
|
|
compare_action(check, equipment.action, new MoveAction(equipment, 2000, 224, 0));
|
2017-10-26 21:47:13 +00:00
|
|
|
check.equals(equipment.price, 2550);
|
2017-07-31 22:49:00 +00:00
|
|
|
|
|
|
|
equipment = template.generate(10);
|
2017-10-26 21:47:13 +00:00
|
|
|
check.equals(equipment.requirements, { "skill_gravity": 26 });
|
2017-11-14 00:07:06 +00:00
|
|
|
compare_effects(check, equipment.effects, [new AttributeEffect("maneuvrability", -5)]);
|
2017-10-26 21:47:13 +00:00
|
|
|
check.equals(equipment.cooldown, new Cooldown(2, 0));
|
2017-11-14 00:07:06 +00:00
|
|
|
compare_action(check, equipment.action, new MoveAction(equipment, 2000, 155, 0));
|
2017-10-26 21:47:13 +00:00
|
|
|
check.equals(equipment.price, 34050);
|
2017-07-31 22:49:00 +00:00
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|