Skip to content

Commit 595196b

Browse files
Barrel stats
1 parent 63a3f4b commit 595196b

1 file changed

Lines changed: 9 additions & 6 deletions

File tree

src/Entity/Tank/TankBody.ts

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,7 @@ export default class TankBody extends LivingEntity implements BarrelBase {
121121
this.children[i].isChild = false;
122122
this.children[i].delete();
123123
}
124+
124125
this.children = [];
125126
this.barrels = [];
126127
this.addons = [];
@@ -134,10 +135,10 @@ export default class TankBody extends LivingEntity implements BarrelBase {
134135
if (!Entity.exists(camera)) throw new Error("No camera");
135136

136137
this.physicsData.sides = tank.sides;
137-
this.styleData.opacity = 1;
138+
this.styleData.opacity = 1.0;
138139

139140
for (let i: Stat = 0; i < StatCount; ++i) {
140-
const {name, max} = tank.stats[i];
141+
const { name, max } = tank.stats[i];
141142

142143
camera.cameraData.statLimits[i] = max;
143144
camera.cameraData.statNames[i] = name;
@@ -150,6 +151,7 @@ export default class TankBody extends LivingEntity implements BarrelBase {
150151
this.baseSize = tank.baseSizeOverride ?? tank.sides === 4 ? Math.SQRT2 * 32.5 : tank.sides === 16 ? Math.SQRT2 * 25 : 50;
151152
this.physicsData.size = this.baseSize * this.scaleFactor;
152153
this.physicsData.absorbtionFactor = this.isInvulnerable ? 0 : tank.absorbtionFactor;
154+
153155
if (tank.absorbtionFactor === 0) this.positionData.flags |= PositionFlags.canMoveThroughWalls;
154156
else if (this.positionData.flags & PositionFlags.canMoveThroughWalls) this.positionData.flags ^= PositionFlags.canMoveThroughWalls;
155157

@@ -181,7 +183,7 @@ export default class TankBody extends LivingEntity implements BarrelBase {
181183
camera.setFieldFactor(tank.fieldFactor);
182184

183185
this.scale(1); // Update addons and etc
184-
this.calculateStatData();
186+
this.calculateStatData(); // Re-calculate everything once this is done
185187
}
186188
/** See LivingEntity.onKill */
187189
public onKill(entity: LivingEntity) {
@@ -247,12 +249,11 @@ export default class TankBody extends LivingEntity implements BarrelBase {
247249
}
248250

249251
public calculateStatData() {
250-
// Damage
252+
// Body damage
251253
this.damagePerTick = this.cameraEntity.cameraData.statLevels[Stat.BodyDamage] + 5 + (this.definition.bodyDamage ?? 0);
252254

253-
// Max Health
255+
// Max health
254256
const maxHealthCache = this.healthData.values.maxHealth;
255-
256257
this.healthData.maxHealth = this.definition.maxHealth + 2 * (this.cameraEntity.cameraData.values.level - 1) + this.cameraEntity.cameraData.values.statLevels.values[Stat.MaxHealth] * 20;
257258
if (this.healthData.values.health === maxHealthCache) this.healthData.health = this.healthData.maxHealth; // just in case
258259
else if (this.healthData.values.maxHealth !== maxHealthCache) {
@@ -268,6 +269,8 @@ export default class TankBody extends LivingEntity implements BarrelBase {
268269
// Movement speed
269270
this.cameraEntity.cameraData.movementSpeed =
270271
this.definition.speed * 2.55 * Math.pow(1.07, this.cameraEntity.cameraData.values.statLevels.values[Stat.MovementSpeed]) / Math.pow(1.015, this.cameraEntity.cameraData.values.level - 1);
272+
273+
for (const barrel of this.barrels) barrel.calculateStatData();
271274
}
272275

273276
/** See LivingEntity.onDeath */

0 commit comments

Comments
 (0)