Add Spider Queen, Frost Giant, Necromancer and Dragon bosses

This commit is contained in:
2026-08-20 10:21:08 +02:00
parent 151b07cb4e
commit 2bffefb02c
10 changed files with 2563 additions and 19 deletions
+14 -2
View File
@@ -11,6 +11,10 @@ import { Brute } from './Brute';
import { Golem } from './Golem';
import { Krake } from './Krake';
import { Minotaurus } from './Minotaurus';
import { SpiderQueen } from './SpiderQueen';
import { FrostGiant } from './FrostGiant';
import { Necromancer } from './Necromancer';
import { Dragon } from './Dragon';
import { Crab } from './Crab';
import { Turret } from './Turret';
import { EnemyProjectile } from './EnemyProjectile';
@@ -83,6 +87,10 @@ export class Game {
[10, { name: 'Golem', spawn: () => new Golem() }],
[20, { name: 'Krake', spawn: () => new Krake() }],
[30, { name: 'Minotaurus', spawn: () => new Minotaurus() }],
[40, { name: 'Spinnenkönigin', spawn: () => new SpiderQueen() }],
[50, { name: 'Frostriese', spawn: () => new FrostGiant() }],
[60, { name: 'Erz-Nekromant', spawn: () => new Necromancer() }],
[70, { name: 'Drache', spawn: () => new Dragon() }],
]);
private bossFightActive = false;
private shakeTime = 0;
@@ -309,7 +317,8 @@ export class Game {
return;
}
if (e.code === 'Space' && this.state === 'playing'
&& this.player.pullTime <= 0 && this.player.stunTime <= 0) {
&& this.player.pullTime <= 0 && this.player.stunTime <= 0
&& this.player.rootTime <= 0) {
this.player.jump();
e.preventDefault();
}
@@ -1053,6 +1062,9 @@ export class Game {
if (p.stunTime > 0) {
// Gestunnt (Stampf-Schockwelle): keine Eingaben
p.velocity.set(0, 0, 0);
} else if (p.rootTime > 0) {
// Netz-Fessel (Spinnenkönigin): keine Bewegung, Angriffe bleiben möglich
p.velocity.set(0, 0, 0);
} else if (p.pullTime > 0) {
// Tentakel-Griff: Spieler wird komplett zum Boss gezogen
p.pullTime -= dt;
@@ -1083,7 +1095,7 @@ export class Game {
}
// Jump / gravity
if (!p.onGround && p.pullTime <= 0 && p.stunTime <= 0) {
if (!p.onGround && p.pullTime <= 0 && p.stunTime <= 0 && p.rootTime <= 0) {
p.jumpVelocity -= 20 * dt;
p.body.position.y += p.jumpVelocity * dt;
if (p.body.position.y <= 0.5) {