Fixed cooldown not resetting the usage counter
This commit is contained in:
parent
fddf7a3916
commit
58334da31a
2
TODO.md
2
TODO.md
|
@ -41,7 +41,6 @@ Character sheet
|
||||||
Battle
|
Battle
|
||||||
------
|
------
|
||||||
|
|
||||||
* Investigate cooldown not resetting properly the usage count
|
|
||||||
* Add a voluntary retreat option
|
* Add a voluntary retreat option
|
||||||
* Add scroll buttons when there are too many actions
|
* Add scroll buttons when there are too many actions
|
||||||
* Toggle bar/text display in power section of action bar
|
* Toggle bar/text display in power section of action bar
|
||||||
|
@ -65,6 +64,7 @@ Battle
|
||||||
Ships models and equipments
|
Ships models and equipments
|
||||||
---------------------------
|
---------------------------
|
||||||
|
|
||||||
|
* Smooth the price depreciation in battles, it's too high when first using equipments
|
||||||
* Add permanent effects and actions to ship models
|
* Add permanent effects and actions to ship models
|
||||||
* Add critical hit/miss (or indicate lucky/unlucky throws)
|
* Add critical hit/miss (or indicate lucky/unlucky throws)
|
||||||
* Add damage over time effect (tricky to make intuitive)
|
* Add damage over time effect (tricky to make intuitive)
|
||||||
|
|
|
@ -1,6 +1,42 @@
|
||||||
module TK.SpaceTac.Specs {
|
module TK.SpaceTac.Specs {
|
||||||
testing("BaseAction", test => {
|
testing("BaseAction", test => {
|
||||||
test.case("check if equipment can be used with remaining AP", check => {
|
test.case("may be applied and reverted", check => {
|
||||||
|
let battle = TestTools.createBattle();
|
||||||
|
let ship = nn(battle.playing_ship);
|
||||||
|
TestTools.setShipAP(ship, 10, 4);
|
||||||
|
let equipment = TestTools.addWeapon(ship, 0, 3, 100, 50);
|
||||||
|
let action = nn(equipment.action);
|
||||||
|
action.cooldown.configure(2, 1);
|
||||||
|
|
||||||
|
TestTools.actionChain(check, battle, [
|
||||||
|
[ship, action, Target.newFromLocation(0, 0)],
|
||||||
|
[ship, action, Target.newFromLocation(0, 0)],
|
||||||
|
[ship, EndTurnAction.SINGLETON, undefined],
|
||||||
|
], [
|
||||||
|
check => {
|
||||||
|
check.equals(ship.getValue("power"), 10, "power");
|
||||||
|
check.equals(action.cooldown.uses, 0, "uses");
|
||||||
|
check.equals(action.cooldown.heat, 0, "heat");
|
||||||
|
},
|
||||||
|
check => {
|
||||||
|
check.equals(ship.getValue("power"), 7, "power");
|
||||||
|
check.equals(action.cooldown.uses, 1, "uses");
|
||||||
|
check.equals(action.cooldown.heat, 0, "heat");
|
||||||
|
},
|
||||||
|
check => {
|
||||||
|
check.equals(ship.getValue("power"), 4, "power");
|
||||||
|
check.equals(action.cooldown.uses, 2, "uses");
|
||||||
|
check.equals(action.cooldown.heat, 1, "heat");
|
||||||
|
},
|
||||||
|
check => {
|
||||||
|
check.equals(ship.getValue("power"), 8, "power");
|
||||||
|
check.equals(action.cooldown.uses, 0, "uses");
|
||||||
|
check.equals(action.cooldown.heat, 0, "heat");
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
})
|
||||||
|
|
||||||
|
test.case("checks if equipment can be used with remaining AP", check => {
|
||||||
var equipment = new Equipment(SlotType.Hull);
|
var equipment = new Equipment(SlotType.Hull);
|
||||||
var action = new BaseAction("test", equipment);
|
var action = new BaseAction("test", equipment);
|
||||||
check.patch(action, "getActionPointsUsage", () => 3);
|
check.patch(action, "getActionPointsUsage", () => 3);
|
||||||
|
@ -25,7 +61,7 @@ module TK.SpaceTac.Specs {
|
||||||
check.equals(action.checkCannotBeApplied(ship), "not enough power");
|
check.equals(action.checkCannotBeApplied(ship), "not enough power");
|
||||||
})
|
})
|
||||||
|
|
||||||
test.case("check if equipment can be used with overheat", check => {
|
test.case("checks if equipment can be used with overheat", check => {
|
||||||
let equipment = new Equipment();
|
let equipment = new Equipment();
|
||||||
let action = new BaseAction("test", equipment);
|
let action = new BaseAction("test", equipment);
|
||||||
let ship = new Ship();
|
let ship = new Ship();
|
||||||
|
|
|
@ -12,13 +12,16 @@ module TK.SpaceTac.Specs {
|
||||||
new ShipCooldownDiff(ship, weapon, 2),
|
new ShipCooldownDiff(ship, weapon, 2),
|
||||||
], [
|
], [
|
||||||
check => {
|
check => {
|
||||||
check.equals(weapon.cooldown.heat, 3, "in cooldown for 3 turns");
|
check.equals(weapon.cooldown.heat, 3, "heat");
|
||||||
|
check.equals(weapon.cooldown.uses, 1, "uses");
|
||||||
},
|
},
|
||||||
check => {
|
check => {
|
||||||
check.equals(weapon.cooldown.heat, 2, "in cooldown for 2 turns");
|
check.equals(weapon.cooldown.heat, 2, "heat");
|
||||||
|
check.equals(weapon.cooldown.uses, 1, "uses");
|
||||||
},
|
},
|
||||||
check => {
|
check => {
|
||||||
check.equals(weapon.cooldown.heat, 0, "not in cooldown");
|
check.equals(weapon.cooldown.heat, 0, "heat");
|
||||||
|
check.equals(weapon.cooldown.uses, 0, "uses");
|
||||||
},
|
},
|
||||||
]);
|
]);
|
||||||
});
|
});
|
||||||
|
|
|
@ -22,6 +22,9 @@ module TK.SpaceTac {
|
||||||
let equipment = ship.getEquipment(this.equipment);
|
let equipment = ship.getEquipment(this.equipment);
|
||||||
if (equipment) {
|
if (equipment) {
|
||||||
equipment.cooldown.heat -= this.heat;
|
equipment.cooldown.heat -= this.heat;
|
||||||
|
if (equipment.cooldown.heat == 0) {
|
||||||
|
equipment.cooldown.uses = 0;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
console.error("Cannot apply diff, equipment not found", this);
|
console.error("Cannot apply diff, equipment not found", this);
|
||||||
}
|
}
|
||||||
|
@ -30,6 +33,9 @@ module TK.SpaceTac {
|
||||||
revertOnShip(ship: Ship, battle: Battle) {
|
revertOnShip(ship: Ship, battle: Battle) {
|
||||||
let equipment = ship.getEquipment(this.equipment);
|
let equipment = ship.getEquipment(this.equipment);
|
||||||
if (equipment) {
|
if (equipment) {
|
||||||
|
if (equipment.cooldown.heat == 0) {
|
||||||
|
equipment.cooldown.uses = equipment.cooldown.overheat;
|
||||||
|
}
|
||||||
equipment.cooldown.heat += this.heat;
|
equipment.cooldown.heat += this.heat;
|
||||||
} else {
|
} else {
|
||||||
console.error("Cannot revert diff, equipment not found", this);
|
console.error("Cannot revert diff, equipment not found", this);
|
||||||
|
|
Loading…
Reference in a new issue