2017-04-24 17:59:16 +00:00
|
|
|
module TS.SpaceTac.Specs {
|
|
|
|
describe("DamageEffect", function () {
|
|
|
|
it("applies damage and wear", function () {
|
|
|
|
var ship = new Ship();
|
|
|
|
|
|
|
|
TestTools.setShipHP(ship, 150, 400);
|
|
|
|
let hull = ship.listEquipment(SlotType.Hull)[0];
|
|
|
|
let shield = ship.listEquipment(SlotType.Shield)[0];
|
|
|
|
ship.restoreHealth();
|
|
|
|
|
|
|
|
expect(ship.getValue("hull")).toEqual(150);
|
|
|
|
expect(ship.getValue("shield")).toEqual(400);
|
|
|
|
expect(hull.wear).toBe(0);
|
|
|
|
expect(shield.wear).toBe(0);
|
|
|
|
|
2017-05-28 22:16:50 +00:00
|
|
|
new DamageEffect(50).applyOnShip(ship, ship);
|
2017-04-24 17:59:16 +00:00
|
|
|
expect(ship.getValue("hull")).toEqual(150);
|
|
|
|
expect(ship.getValue("shield")).toEqual(350);
|
|
|
|
expect(hull.wear).toBe(0);
|
|
|
|
expect(shield.wear).toBe(1);
|
|
|
|
|
2017-05-28 22:16:50 +00:00
|
|
|
new DamageEffect(250).applyOnShip(ship, ship);
|
2017-04-24 17:59:16 +00:00
|
|
|
expect(ship.getValue("hull")).toEqual(150);
|
|
|
|
expect(ship.getValue("shield")).toEqual(100);
|
|
|
|
expect(hull.wear).toBe(0);
|
|
|
|
expect(shield.wear).toBe(4);
|
|
|
|
|
2017-05-28 22:16:50 +00:00
|
|
|
new DamageEffect(201).applyOnShip(ship, ship);
|
2017-04-24 17:59:16 +00:00
|
|
|
expect(ship.getValue("hull")).toEqual(49);
|
|
|
|
expect(ship.getValue("shield")).toEqual(0);
|
|
|
|
expect(hull.wear).toBe(2);
|
|
|
|
expect(shield.wear).toBe(5);
|
|
|
|
expect(ship.alive).toBe(true);
|
|
|
|
|
2017-05-28 22:16:50 +00:00
|
|
|
new DamageEffect(8000).applyOnShip(ship, ship);
|
2017-04-24 17:59:16 +00:00
|
|
|
expect(ship.getValue("hull")).toEqual(0);
|
|
|
|
expect(ship.getValue("shield")).toEqual(0);
|
|
|
|
expect(hull.wear).toBe(3);
|
|
|
|
expect(shield.wear).toBe(5);
|
|
|
|
expect(ship.alive).toBe(false);
|
|
|
|
});
|
2017-05-10 20:52:24 +00:00
|
|
|
|
|
|
|
it("gets a textual description", function () {
|
|
|
|
expect(new DamageEffect(10).getDescription()).toEqual("do 10 damage");
|
|
|
|
expect(new DamageEffect(10, 5).getDescription()).toEqual("do 10-15 damage");
|
|
|
|
});
|
2017-06-12 22:28:54 +00:00
|
|
|
|
|
|
|
it("applies damage modifiers", function () {
|
|
|
|
let ship = new Ship();
|
|
|
|
TestTools.setShipHP(ship, 1000, 1000);
|
|
|
|
let damage = new DamageEffect(200);
|
|
|
|
|
|
|
|
expect(damage.getEffectiveDamage(ship)).toEqual([200, 0]);
|
|
|
|
|
|
|
|
spyOn(ship, "ieffects").and.returnValues(
|
|
|
|
isingle(new DamageModifierEffect(-15)),
|
|
|
|
isingle(new DamageModifierEffect(20)),
|
|
|
|
isingle(new DamageModifierEffect(-150)),
|
|
|
|
isingle(new DamageModifierEffect(180)),
|
|
|
|
iarray([new DamageModifierEffect(10), new DamageModifierEffect(-15)]),
|
|
|
|
isingle(new DamageModifierEffect(3))
|
|
|
|
);
|
|
|
|
|
|
|
|
expect(damage.getEffectiveDamage(ship)).toEqual([170, 0]);
|
|
|
|
expect(damage.getEffectiveDamage(ship)).toEqual([240, 0]);
|
|
|
|
expect(damage.getEffectiveDamage(ship)).toEqual([0, 0]);
|
|
|
|
expect(damage.getEffectiveDamage(ship)).toEqual([400, 0]);
|
|
|
|
expect(damage.getEffectiveDamage(ship)).toEqual([190, 0]);
|
|
|
|
|
|
|
|
damage = new DamageEffect(40);
|
|
|
|
expect(damage.getEffectiveDamage(ship)).toEqual([41, 0]);
|
|
|
|
});
|
2017-04-24 17:59:16 +00:00
|
|
|
});
|
|
|
|
}
|