1
0
Fork 0

Quick balancing of equipments and ship designs

This commit is contained in:
Michaël Lemaire 2017-02-16 01:17:09 +01:00
parent 471ca8d2d0
commit 4b8793e8f3
11 changed files with 36 additions and 23 deletions

6
TODO
View file

@ -1,7 +1,11 @@
* Ensure that tweens and particle emitters get destroyed once animation is done
* Highlight ships that will be included as target of current action
* Fix action tooltip sometimes not being hidden when the mouse goes out of action icon
* Quick loading does not cancel pending "setTimeout"s.
* Do not focus on ship while targetting for area effects (dissociate hover and target)
* Active effects are not enough visible in ship list (maybe better in arena ?)
* Discrete power display, instead of the continuous power bar
* When actions are inavailable at turn start, icon border is faded but not the icon itself (as it is when it fades during turn)
* Changing active view does not cancel pending "setTimeout"s.
* Drones: add tooltip
* Drones: add hull points and take area damage
* Drones: fix not being removed when owner is in statis (owner's turn is skipped)

View file

@ -247,9 +247,9 @@ module TS.SpaceTac.Specs {
expect(ship.values.power.get()).toBe(0);
ship.initializeActionPoints();
expect(ship.values.power.get()).toBe(5);
ship.values.power.set(2);
expect(ship.values.power.get()).toBe(2);
expect(ship.values.power.get()).toBe(4);
ship.values.power.set(3);
expect(ship.values.power.get()).toBe(3);
ship.recoverActionPoints();
expect(ship.values.power.get()).toBe(6);
ship.recoverActionPoints();

View file

@ -22,7 +22,7 @@ module TS.SpaceTac {
// TODO Store in cache
var result = [];
result.push(new ShipModel("scout", 1, SlotType.Armor, SlotType.Engine, SlotType.Power, SlotType.Weapon));
result.push(new ShipModel("scout", 1, SlotType.Armor, SlotType.Engine, SlotType.Power, SlotType.Power, SlotType.Weapon));
result.push(new ShipModel("whirlwind", 1, SlotType.Armor, SlotType.Engine, SlotType.Power, SlotType.Shield,
SlotType.Weapon, SlotType.Weapon));

View file

@ -9,8 +9,8 @@ module TS.SpaceTac.Equipments {
this.increaseAttribute("initiative", 1);
this.increaseAttribute("power_capacity", 8);
this.increaseAttribute("power_initial", 5);
this.increaseAttribute("power_recovery", 4);
this.increaseAttribute("power_initial", 4);
this.increaseAttribute("power_recovery", 3);
}
}
}

View file

@ -7,7 +7,7 @@ module TS.SpaceTac.Equipments {
this.setRange(400, 400, false);
this.ap_usage = new IntegerRange(2, 3);
this.ap_usage = new IntegerRange(3, 4);
this.min_level = new IntegerRange(1, 3);
}
}

View file

@ -7,7 +7,7 @@ module TS.SpaceTac.Equipments {
this.min_level = new IntegerRange(1, 3);
this.increaseAttribute("hull_capacity", 100, 200);
this.increaseAttribute("hull_capacity", 200, 300);
}
}
}

View file

@ -17,15 +17,24 @@ module TS.SpaceTac.Specs {
expect(target.values.power.get()).toBe(4);
expect(target.sticky_effects).toEqual([
new StickyEffect(new AttributeLimitEffect("power_capacity", 4), 1, true, false)
new StickyEffect(new AttributeLimitEffect("power_capacity", 4), 2, true, false)
]);
// Attribute is limited for one turn, and prevents AP recovery
// Attribute is limited for two turns, and prevents AP recovery
target.values.power.set(6);
target.recoverActionPoints();
target.startTurn();
expect(target.values.power.get()).toBe(4);
expect(target.sticky_effects).toEqual([
new StickyEffect(new AttributeLimitEffect("power_capacity", 4), 1, true, false)
]);
target.endTurn();
target.recoverActionPoints();
expect(target.values.power.get()).toBe(4);
target.startTurn();
expect(target.sticky_effects).toEqual([]);
// Effect vanished, so AP recovery happens

View file

@ -5,12 +5,12 @@ module TS.SpaceTac.Equipments {
constructor() {
super("Power Depleter");
this.setRange(200, 300, false);
this.setRange(300, 400, false);
this.ap_usage = new IntegerRange(4, 5);
this.min_level = new IntegerRange(1, 3);
this.addStickyEffect(new AttributeLimitEffect("power_capacity"), 4, 3, 1, 2, true);
this.addStickyEffect(new AttributeLimitEffect("power_capacity"), 4, 3, 2, 3, true);
}
}
}

View file

@ -4,7 +4,7 @@ module TS.SpaceTac.Equipments {
let template = new RepairDrone();
let equipment = template.generateFixed(0);
expect(equipment.target_effects).toEqual([new ValueEffect("hull", 10)]);
expect(equipment.target_effects).toEqual([new ValueEffect("hull", 30)]);
let battle = new Battle();
let ship = new Ship();
@ -15,11 +15,11 @@ module TS.SpaceTac.Equipments {
expect(battle.drones.length).toBe(1);
let drone = battle.drones[0];
expect(drone.duration).toBe(1);
expect(drone.duration).toBe(2);
ship.setAttribute("hull_capacity", 100);
ship.setValue("hull", 85);
ship.setValue("hull", 55);
drone.apply([ship]);
expect(ship.getValue("hull")).toBe(95);
expect(ship.getValue("hull")).toBe(85);
drone.apply([ship]);
expect(ship.getValue("hull")).toBe(100);
});

View file

@ -10,12 +10,12 @@ module TS.SpaceTac.Equipments {
this.min_level = new IntegerRange(1, 4);
this.setLifetime(1, 1);
this.setDeployDistance(50, 100);
this.setEffectRadius(40, 80);
this.setLifetime(2, 3);
this.setDeployDistance(150, 200);
this.setEffectRadius(60, 180);
this.setPowerConsumption(4, 5);
this.addEffect(new ValueEffect("hull"), 10, 20);
this.addEffect(new ValueEffect("hull"), 30, 60);
}
}
}

View file

@ -5,8 +5,8 @@ module TS.SpaceTac.Equipments {
constructor() {
super("SubMunition Missile", 30, 50);
this.setRange(350, 400, true);
this.setBlast(150, 200);
this.setRange(300, 400, true);
this.setBlast(100, 150);
this.ap_usage = new IntegerRange(4, 5);
this.min_level = new IntegerRange(1, 3);