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

82 lines
3.4 KiB
TypeScript

module TS.SpaceTac.Equipments {
describe("DamageProtector", function () {
it("generates equipment based on level", function () {
let template = new DamageProtector();
let equipment = template.generate(1);
expect(equipment.requirements).toEqual({ "skill_time": 3 });
expect(equipment.action).toEqual(new ToggleAction(equipment, 2, 300, [
new DamageModifierEffect(-17)
]));
equipment = template.generate(2);
expect(equipment.requirements).toEqual({ "skill_time": 4 });
expect(equipment.action).toEqual(new ToggleAction(equipment, 2, 310, [
new DamageModifierEffect(-22)
]));
equipment = template.generate(3);
expect(equipment.requirements).toEqual({ "skill_time": 5 });
expect(equipment.action).toEqual(new ToggleAction(equipment, 2, 322, [
new DamageModifierEffect(-28)
]));
equipment = template.generate(10);
expect(equipment.requirements).toEqual({ "skill_time": 22 });
expect(equipment.action).toEqual(new ToggleAction(equipment, 8, 462, [
new DamageModifierEffect(-60)
]));
});
it("reduces damage around the ship", function () {
let battle = new Battle();
let ship1 = battle.fleets[0].addShip();
ship1.upgradeSkill("skill_time", 3);
let protector = ship1.addSlot(SlotType.Weapon).attach(new DamageProtector().generate(1));
let action = nn(protector.action);
TestTools.setShipAP(ship1, 10);
let ship2 = battle.fleets[0].addShip();
let ship3 = battle.fleets[0].addShip();
ship1.setArenaPosition(0, 0);
ship2.setArenaPosition(100, 0);
ship3.setArenaPosition(800, 0);
battle.playing_ship = ship1;
ship1.playing = true;
expect(ship1.getAvailableActions()).toEqual([action, new EndTurnAction()]);
TestTools.setShipHP(ship1, 100, 0);
TestTools.setShipHP(ship2, 100, 0);
TestTools.setShipHP(ship3, 100, 0);
iforeach(battle.iships(), ship => new DamageEffect(10).applyOnShip(ship, ship1));
expect(ship1.getValue("power")).toEqual(10);
expect(ship1.getValue("hull")).toEqual(90);
expect(ship2.getValue("hull")).toEqual(90);
expect(ship3.getValue("hull")).toEqual(90);
let result = action.apply(ship1);
expect(result).toBe(true);
expect((<ToggleAction>protector.action).activated).toBe(true);
iforeach(battle.iships(), ship => new DamageEffect(10).applyOnShip(ship, ship1));
expect(ship1.getValue("power")).toEqual(8);
expect(ship1.getValue("hull")).toEqual(82);
expect(ship2.getValue("hull")).toEqual(82);
expect(ship3.getValue("hull")).toEqual(80);
result = action.apply(ship1);
expect(result).toBe(true);
expect((<ToggleAction>protector.action).activated).toBe(false);
iforeach(battle.iships(), ship => new DamageEffect(10).applyOnShip(ship, ship1));
expect(ship1.getValue("power")).toEqual(8);
expect(ship1.getValue("hull")).toEqual(72);
expect(ship2.getValue("hull")).toEqual(72);
expect(ship3.getValue("hull")).toEqual(70);
});
});
}