2017-04-18 19:51:23 +00:00
|
|
|
module TS.SpaceTac.Equipments {
|
2017-02-05 21:41:06 +00:00
|
|
|
describe("PowerDepleter", () => {
|
2017-04-18 19:51:23 +00:00
|
|
|
it("generates equipment based on level", function () {
|
|
|
|
let template = new PowerDepleter();
|
|
|
|
|
|
|
|
let equipment = template.generate(1);
|
2017-06-12 22:28:54 +00:00
|
|
|
expect(equipment.requirements).toEqual({ "skill_antimatter": 1 });
|
2017-09-17 22:49:53 +00:00
|
|
|
expect(equipment.action).toEqual(new FireWeaponAction(equipment, 4, 460, 0, [
|
|
|
|
new StickyEffect(new AttributeLimitEffect("power_capacity", 3), 2, true)
|
|
|
|
]));
|
|
|
|
expect(equipment.price).toEqual(100);
|
2017-04-18 19:51:23 +00:00
|
|
|
|
|
|
|
equipment = template.generate(2);
|
2017-06-12 22:28:54 +00:00
|
|
|
expect(equipment.requirements).toEqual({ "skill_antimatter": 2 });
|
2017-09-17 22:49:53 +00:00
|
|
|
expect(equipment.action).toEqual(new FireWeaponAction(equipment, 4, 490, 0, [
|
|
|
|
new StickyEffect(new AttributeLimitEffect("power_capacity", 3), 2, true)
|
|
|
|
]));
|
|
|
|
expect(equipment.price).toEqual(350);
|
2017-04-18 19:51:23 +00:00
|
|
|
|
|
|
|
equipment = template.generate(3);
|
2017-09-17 22:49:53 +00:00
|
|
|
expect(equipment.requirements).toEqual({ "skill_antimatter": 4 });
|
|
|
|
expect(equipment.action).toEqual(new FireWeaponAction(equipment, 4, 526, 0, [
|
|
|
|
new StickyEffect(new AttributeLimitEffect("power_capacity", 3), 2, true)
|
|
|
|
]));
|
|
|
|
expect(equipment.price).toEqual(850);
|
2017-04-18 19:51:23 +00:00
|
|
|
|
|
|
|
equipment = template.generate(10);
|
2017-09-17 22:49:53 +00:00
|
|
|
expect(equipment.requirements).toEqual({ "skill_antimatter": 25 });
|
|
|
|
expect(equipment.action).toEqual(new FireWeaponAction(equipment, 4, 946, 0, [
|
|
|
|
new StickyEffect(new AttributeLimitEffect("power_capacity", 3), 2, true)
|
|
|
|
]));
|
|
|
|
expect(equipment.price).toEqual(11350);
|
2017-04-18 19:51:23 +00:00
|
|
|
});
|
|
|
|
|
2015-02-27 00:00:00 +00:00
|
|
|
it("limits target's AP", () => {
|
2017-04-18 19:51:23 +00:00
|
|
|
var template = new PowerDepleter();
|
|
|
|
var equipment = template.generate(1);
|
2015-02-27 00:00:00 +00:00
|
|
|
|
|
|
|
var ship = new Ship();
|
|
|
|
var target = new Ship();
|
2017-02-19 21:52:11 +00:00
|
|
|
TestTools.setShipAP(ship, 50);
|
2015-02-27 00:00:00 +00:00
|
|
|
TestTools.setShipAP(target, 7, 2);
|
|
|
|
|
2017-02-07 19:15:21 +00:00
|
|
|
expect(target.values.power.get()).toBe(7);
|
2017-01-23 23:07:54 +00:00
|
|
|
expect(target.sticky_effects).toEqual([]);
|
2015-02-27 00:00:00 +00:00
|
|
|
|
|
|
|
// Attribute is immediately limited
|
2017-09-19 15:09:06 +00:00
|
|
|
nn(equipment.action).apply(ship, Target.newFromShip(target));
|
2015-02-27 00:00:00 +00:00
|
|
|
|
2017-04-18 19:51:23 +00:00
|
|
|
expect(target.values.power.get()).toBe(3);
|
2017-01-23 23:07:54 +00:00
|
|
|
expect(target.sticky_effects).toEqual([
|
2017-04-18 19:51:23 +00:00
|
|
|
new StickyEffect(new AttributeLimitEffect("power_capacity", 3), 2, true, false)
|
2015-02-27 00:00:00 +00:00
|
|
|
]);
|
|
|
|
|
2017-02-16 00:17:09 +00:00
|
|
|
// Attribute is limited for two turns, and prevents AP recovery
|
2017-02-07 19:15:21 +00:00
|
|
|
target.values.power.set(6);
|
2017-01-24 00:14:04 +00:00
|
|
|
target.recoverActionPoints();
|
2015-02-27 00:00:00 +00:00
|
|
|
target.startTurn();
|
|
|
|
|
2017-04-18 19:51:23 +00:00
|
|
|
expect(target.values.power.get()).toBe(3);
|
2017-02-16 00:17:09 +00:00
|
|
|
expect(target.sticky_effects).toEqual([
|
2017-04-18 19:51:23 +00:00
|
|
|
new StickyEffect(new AttributeLimitEffect("power_capacity", 3), 1, true, false)
|
2017-02-16 00:17:09 +00:00
|
|
|
]);
|
|
|
|
|
|
|
|
target.endTurn();
|
|
|
|
target.recoverActionPoints();
|
2017-04-18 19:51:23 +00:00
|
|
|
expect(target.values.power.get()).toBe(3);
|
2017-02-16 00:17:09 +00:00
|
|
|
target.startTurn();
|
|
|
|
|
2017-01-24 00:14:04 +00:00
|
|
|
expect(target.sticky_effects).toEqual([]);
|
2015-02-27 00:00:00 +00:00
|
|
|
|
2017-01-24 00:14:04 +00:00
|
|
|
// Effect vanished, so AP recovery happens
|
2015-02-27 00:00:00 +00:00
|
|
|
target.endTurn();
|
|
|
|
|
2017-04-18 19:51:23 +00:00
|
|
|
expect(target.values.power.get()).toBe(5);
|
2017-01-23 23:07:54 +00:00
|
|
|
expect(target.sticky_effects).toEqual([]);
|
2015-02-27 00:00:00 +00:00
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|