Fixed battle stats always adding to defender fleet
This commit is contained in:
parent
37bb85e773
commit
eec499dbd5
1
TODO.md
1
TODO.md
|
@ -31,7 +31,6 @@ Character sheet
|
||||||
Battle
|
Battle
|
||||||
------
|
------
|
||||||
|
|
||||||
* Fix stats only filling for one fleet
|
|
||||||
* Display shield (and its (dis)appearance)
|
* Display shield (and its (dis)appearance)
|
||||||
* Display estimated damage and displacement in targetting mode
|
* Display estimated damage and displacement in targetting mode
|
||||||
* Add a voluntary retreat option
|
* Add a voluntary retreat option
|
||||||
|
|
|
@ -25,17 +25,17 @@ module TK.SpaceTac.Specs {
|
||||||
stats.processLog(battle.log, battle.fleets[0]);
|
stats.processLog(battle.log, battle.fleets[0]);
|
||||||
check.equals(stats.stats, {});
|
check.equals(stats.stats, {});
|
||||||
|
|
||||||
battle.log.add(new ShipDamageDiff(attacker, 10, 12));
|
battle.log.add(new ShipDamageDiff(attacker, 1, 3, 2));
|
||||||
stats.processLog(battle.log, battle.fleets[0], true);
|
stats.processLog(battle.log, battle.fleets[0], true);
|
||||||
check.equals(stats.stats, { "Damage dealt": [0, 22] });
|
check.equals(stats.stats, { "Damage to hull": [0, 1], "Damage shielded": [0, 3], "Damage evaded": [0, 2] });
|
||||||
|
|
||||||
battle.log.add(new ShipDamageDiff(defender, 40, 0));
|
battle.log.add(new ShipDamageDiff(defender, 2, 1, 3));
|
||||||
stats.processLog(battle.log, battle.fleets[0], true);
|
stats.processLog(battle.log, battle.fleets[0], true);
|
||||||
check.equals(stats.stats, { "Damage dealt": [40, 22] });
|
check.equals(stats.stats, { "Damage to hull": [2, 1], "Damage shielded": [1, 3], "Damage evaded": [3, 2] });
|
||||||
|
|
||||||
battle.log.add(new ShipDamageDiff(attacker, 5, 4));
|
battle.log.add(new ShipDamageDiff(attacker, 1, 1, 1));
|
||||||
stats.processLog(battle.log, battle.fleets[0], true);
|
stats.processLog(battle.log, battle.fleets[0], true);
|
||||||
check.equals(stats.stats, { "Damage dealt": [40, 31] });
|
check.equals(stats.stats, { "Damage to hull": [2, 2], "Damage shielded": [1, 4], "Damage evaded": [3, 3] });
|
||||||
})
|
})
|
||||||
|
|
||||||
test.case("collects distance moved", check => {
|
test.case("collects distance moved", check => {
|
||||||
|
|
|
@ -49,7 +49,9 @@ module TK.SpaceTac {
|
||||||
let diff_ship = diff.ship_id;
|
let diff_ship = diff.ship_id;
|
||||||
let attacker_ship = any(attacker.ships, ship => ship.is(diff_ship));
|
let attacker_ship = any(attacker.ships, ship => ship.is(diff_ship));
|
||||||
if (diff instanceof ShipDamageDiff) {
|
if (diff instanceof ShipDamageDiff) {
|
||||||
this.addStat("Damage dealt", diff.hull + diff.shield, !attacker_ship);
|
this.addStat("Damage evaded", diff.evaded, !attacker_ship);
|
||||||
|
this.addStat("Damage shielded", diff.shield, !attacker_ship);
|
||||||
|
this.addStat("Damage to hull", diff.hull, !attacker_ship);
|
||||||
} else if (diff instanceof ShipMoveDiff) {
|
} else if (diff instanceof ShipMoveDiff) {
|
||||||
this.addStat("Move distance (km)", diff.getDistance(), attacker_ship);
|
this.addStat("Move distance (km)", diff.getDistance(), attacker_ship);
|
||||||
} else if (diff instanceof DroneDeployedDiff) {
|
} else if (diff instanceof DroneDeployedDiff) {
|
||||||
|
|
|
@ -36,6 +36,15 @@ module TK.SpaceTac.Specs {
|
||||||
compare(loaded_session, session);
|
compare(loaded_session, session);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test.case("generates a quick battle", check => {
|
||||||
|
var session = new GameSession();
|
||||||
|
session.startQuickBattle();
|
||||||
|
|
||||||
|
check.same(session.getBattle(), session.player.fleet.battle, "battle");
|
||||||
|
check.same(session.player.fleet, session.fleet, "fleet");
|
||||||
|
check.same(nn(session.getBattle()).fleets[0], session.fleet, "attacker fleet");
|
||||||
|
});
|
||||||
|
|
||||||
test.case("applies battle outcome to bound player", check => {
|
test.case("applies battle outcome to bound player", check => {
|
||||||
let session = new GameSession();
|
let session = new GameSession();
|
||||||
check.equals(session.getBattle(), null);
|
check.equals(session.getBattle(), null);
|
||||||
|
|
|
@ -94,8 +94,7 @@ module TK.SpaceTac {
|
||||||
*/
|
*/
|
||||||
setCampaignFleet(fleet: Fleet | null = null, story = true) {
|
setCampaignFleet(fleet: Fleet | null = null, story = true) {
|
||||||
if (fleet) {
|
if (fleet) {
|
||||||
this.player.fleet = fleet;
|
this.player.setFleet(fleet);
|
||||||
fleet.setPlayer(this.player);
|
|
||||||
} else {
|
} else {
|
||||||
let fleet_generator = new FleetGenerator();
|
let fleet_generator = new FleetGenerator();
|
||||||
this.player.fleet = fleet_generator.generate(1, this.player, 2);
|
this.player.fleet = fleet_generator.generate(1, this.player, 2);
|
||||||
|
@ -112,10 +111,11 @@ module TK.SpaceTac {
|
||||||
* Start a new "quick battle" game
|
* Start a new "quick battle" game
|
||||||
*/
|
*/
|
||||||
startQuickBattle(with_ai: boolean = false): void {
|
startQuickBattle(with_ai: boolean = false): void {
|
||||||
|
this.player = new Player();
|
||||||
this.universe = new Universe();
|
this.universe = new Universe();
|
||||||
|
|
||||||
let battle = Battle.newQuickRandom(true, RandomGenerator.global.randInt(1, 10));
|
let battle = Battle.newQuickRandom(true, RandomGenerator.global.randInt(1, 10));
|
||||||
battle.fleets[0].setPlayer(this.player);
|
this.player.setFleet(battle.fleets[0]);
|
||||||
this.player.setBattle(battle);
|
this.player.setBattle(battle);
|
||||||
|
|
||||||
this.reactions = new PersonalityReactions();
|
this.reactions = new PersonalityReactions();
|
||||||
|
|
|
@ -32,6 +32,14 @@ module TK.SpaceTac {
|
||||||
return player;
|
return player;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the fleet for this player
|
||||||
|
*/
|
||||||
|
setFleet(fleet: Fleet): void {
|
||||||
|
this.fleet = fleet;
|
||||||
|
fleet.setPlayer(this);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get a cheats object
|
* Get a cheats object
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in a new issue