Update boss bar logic
This commit is contained in:
parent
6b036b112f
commit
b6bde457cd
|
@ -160,4 +160,5 @@ body {
|
|||
|
||||
input:-internal-autofill-selected {
|
||||
-webkit-background-clip: text;
|
||||
background-clip: text;
|
||||
}
|
|
@ -2296,12 +2296,13 @@ export class EnemyPokemon extends Pokemon {
|
|||
if (this.isFainted())
|
||||
return 0;
|
||||
|
||||
if (!ignoreSegments && this.isBoss()) {
|
||||
if (this.isBoss()) {
|
||||
if (!ignoreSegments) {
|
||||
const segmentSize = this.getMaxHp() / this.bossSegments;
|
||||
for (let s = this.bossSegments - 1; s > 0; s--) {
|
||||
for (let s = this.bossSegmentIndex; s > 0; s--) {
|
||||
const hpThreshold = segmentSize * s;
|
||||
const roundedHpThreshold = Math.round(hpThreshold);
|
||||
if (this.hp > roundedHpThreshold) {
|
||||
if (this.hp >= roundedHpThreshold) {
|
||||
if (this.hp - damage < roundedHpThreshold) {
|
||||
const bypassSegment = this.canBypassBossSegments() && (this.hp - roundedHpThreshold) / damage < 0.1;
|
||||
damage = this.hp - (bypassSegment ? Math.round(hpThreshold - segmentSize) : roundedHpThreshold);
|
||||
|
@ -2311,6 +2312,8 @@ export class EnemyPokemon extends Pokemon {
|
|||
}
|
||||
}
|
||||
}
|
||||
this.battleInfo.updateBossSegments(this);
|
||||
}
|
||||
|
||||
return super.damage(damage, ignoreSegments, preventEndure);
|
||||
}
|
||||
|
|
|
@ -167,7 +167,7 @@ export default class BattleInfo extends Phaser.GameObjects.Container {
|
|||
this.ownedIcon.setTint(0x808080);
|
||||
|
||||
if (this.boss)
|
||||
this.updateBossSegmentDividers(pokemon.getMaxHp());
|
||||
this.updateBossSegmentDividers(pokemon as EnemyPokemon);
|
||||
}
|
||||
|
||||
this.hpBar.setScale(pokemon.getHpRatio(), 1);
|
||||
|
@ -200,9 +200,8 @@ export default class BattleInfo extends Phaser.GameObjects.Container {
|
|||
|
||||
this.box.setTexture(this.getTextureName());
|
||||
|
||||
if (this.player) {
|
||||
if (this.player)
|
||||
this.y -= 12 * (mini ? 1 : -1);
|
||||
}
|
||||
|
||||
const offsetElements = [ this.nameText, this.genderText, this.statusIndicator, this.levelContainer ];
|
||||
offsetElements.forEach(el => el.y += 1.5 * (mini ? -1 : 1));
|
||||
|
@ -227,17 +226,17 @@ export default class BattleInfo extends Phaser.GameObjects.Container {
|
|||
}
|
||||
|
||||
this.bossSegments = boss ? pokemon.bossSegments : 0;
|
||||
this.updateBossSegmentDividers(pokemon.hp);
|
||||
this.updateBossSegmentDividers(pokemon);
|
||||
}
|
||||
|
||||
updateBossSegmentDividers(hp: number): void {
|
||||
updateBossSegmentDividers(pokemon: EnemyPokemon): void {
|
||||
while (this.hpBarSegmentDividers.length)
|
||||
this.hpBarSegmentDividers.pop().destroy();
|
||||
|
||||
if (this.boss && this.bossSegments > 1) {
|
||||
for (let s = 1; s < this.bossSegments; s++) {
|
||||
const dividerX = (Math.round((hp / this.bossSegments) * s) / hp) * this.hpBar.width;
|
||||
const divider = this.scene.add.rectangle(0, 0, 1, this.hpBar.height, 0xffffff);
|
||||
const dividerX = (Math.round((pokemon.hp / this.bossSegments) * s) / pokemon.hp) * this.hpBar.width;
|
||||
const divider = this.scene.add.rectangle(0, 0, 1, this.hpBar.height, pokemon.bossSegmentIndex >= s ? 0xFFFFFF : 0x404040);
|
||||
divider.setOrigin(0.5, 0);
|
||||
this.add(divider);
|
||||
|
||||
|
|
Loading…
Reference in New Issue