2017-11-14 00:07:06 +00:00
|
|
|
/// <reference path="BaseBattleDiff.ts"/>
|
|
|
|
|
|
|
|
module TK.SpaceTac {
|
|
|
|
/**
|
|
|
|
* A ship takes damage (to hull or shield)
|
|
|
|
*
|
|
|
|
* This does not apply the damage on ship values (there are ShipValueDiff for this), but apply equipment wear.
|
|
|
|
*/
|
|
|
|
export class ShipDamageDiff extends BaseBattleShipDiff {
|
|
|
|
// Damage to hull
|
|
|
|
hull: number
|
|
|
|
|
|
|
|
// Damage to shield
|
|
|
|
shield: number
|
|
|
|
|
2017-12-08 00:18:15 +00:00
|
|
|
// Theoretical damage value
|
|
|
|
theoretical: number
|
|
|
|
|
|
|
|
constructor(ship: Ship, hull: number, shield: number, theoretical = hull + shield) {
|
2017-11-14 00:07:06 +00:00
|
|
|
super(ship);
|
|
|
|
|
|
|
|
this.hull = hull;
|
|
|
|
this.shield = shield;
|
2017-12-08 00:18:15 +00:00
|
|
|
this.theoretical = theoretical;
|
2017-11-14 00:07:06 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
protected applyOnShip(ship: Ship, battle: Battle): void {
|
|
|
|
if (this.shield > 0) {
|
|
|
|
ship.listEquipment(SlotType.Shield).forEach(equipment => equipment.addWear(Math.ceil(this.shield * 0.1)));
|
|
|
|
}
|
|
|
|
if (this.hull > 0) {
|
|
|
|
ship.listEquipment(SlotType.Hull).forEach(equipment => equipment.addWear(Math.ceil(this.hull * 0.1)));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
protected revertOnShip(ship: Ship, battle: Battle): void {
|
|
|
|
if (this.shield > 0) {
|
|
|
|
ship.listEquipment(SlotType.Shield).forEach(equipment => equipment.addWear(-Math.ceil(this.shield * 0.1)));
|
|
|
|
}
|
|
|
|
if (this.hull > 0) {
|
|
|
|
ship.listEquipment(SlotType.Hull).forEach(equipment => equipment.addWear(-Math.ceil(this.hull * 0.1)));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|