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
|
||||
------
|
||||
|
||||
* Fix stats only filling for one fleet
|
||||
* Display shield (and its (dis)appearance)
|
||||
* Display estimated damage and displacement in targetting mode
|
||||
* Add a voluntary retreat option
|
||||
|
|
|
@ -25,17 +25,17 @@ module TK.SpaceTac.Specs {
|
|||
stats.processLog(battle.log, battle.fleets[0]);
|
||||
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);
|
||||
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);
|
||||
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);
|
||||
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 => {
|
||||
|
|
|
@ -49,7 +49,9 @@ module TK.SpaceTac {
|
|||
let diff_ship = diff.ship_id;
|
||||
let attacker_ship = any(attacker.ships, ship => ship.is(diff_ship));
|
||||
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) {
|
||||
this.addStat("Move distance (km)", diff.getDistance(), attacker_ship);
|
||||
} else if (diff instanceof DroneDeployedDiff) {
|
||||
|
|
|
@ -36,6 +36,15 @@ module TK.SpaceTac.Specs {
|
|||
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 => {
|
||||
let session = new GameSession();
|
||||
check.equals(session.getBattle(), null);
|
||||
|
|
|
@ -94,8 +94,7 @@ module TK.SpaceTac {
|
|||
*/
|
||||
setCampaignFleet(fleet: Fleet | null = null, story = true) {
|
||||
if (fleet) {
|
||||
this.player.fleet = fleet;
|
||||
fleet.setPlayer(this.player);
|
||||
this.player.setFleet(fleet);
|
||||
} else {
|
||||
let fleet_generator = new FleetGenerator();
|
||||
this.player.fleet = fleet_generator.generate(1, this.player, 2);
|
||||
|
@ -112,10 +111,11 @@ module TK.SpaceTac {
|
|||
* Start a new "quick battle" game
|
||||
*/
|
||||
startQuickBattle(with_ai: boolean = false): void {
|
||||
this.player = new Player();
|
||||
this.universe = new Universe();
|
||||
|
||||
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.reactions = new PersonalityReactions();
|
||||
|
|
|
@ -32,6 +32,14 @@ module TK.SpaceTac {
|
|||
return player;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the fleet for this player
|
||||
*/
|
||||
setFleet(fleet: Fleet): void {
|
||||
this.fleet = fleet;
|
||||
fleet.setPlayer(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a cheats object
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue