game: enemy types

This commit is contained in:
He4eT 2025-06-06 21:16:19 +02:00
commit f5c440feea

37
game.js
View file

@ -78,10 +78,16 @@ let player = {
}, },
} }
/**
* @typedef {'point' | 'fidget' | 'bounce' | 'zombie'} EnemyType
*/
/** @type EnemyType[] */
const enemyTypes = ['point', 'fidget', 'bounce', 'zombie']
/** /**
* @typedef {{ * @typedef {{
* letter: string, * letter: string,
* type: 'zombie', * type: EnemyType,
* dangerZone: number, * dangerZone: number,
* positions: Point[], * positions: Point[],
* }} Enemy * }} Enemy
@ -212,6 +218,18 @@ function spawn() {
arena.wave += 1 arena.wave += 1
const enemyCount = 1 + Math.floor(arena.wave / 2)
const getType = (wave) => {
if (wave < 2) return 'point'
return enemyTypes[rnd(0, enemyTypes.length)]
}
const getDangerZone = (type) => {
if (type === 'zombie') return 6
return 8
}
const getSpawnPosition = () => { const getSpawnPosition = () => {
const minDistance = 50 const minDistance = 50
let x, y, distance let x, y, distance
@ -224,14 +242,17 @@ function spawn() {
return { x, y } return { x, y }
} }
enemies = [ enemies = Array(enemyCount)
{ .fill()
positions: [getSpawnPosition()], .map(() => {
type: 'zombie', const type = getType(arena.wave)
return {
type,
letter: 'e', letter: 'e',
dangerZone: 8, positions: [getSpawnPosition()],
}, dangerZone: getDangerZone(type),
] }
})
enemies.forEach((enemy) => { enemies.forEach((enemy) => {
effects.unshift({ effects.unshift({