diff options
author | Lizzy Hunt <lizzy.hunt@usu.edu> | 2024-01-12 19:13:13 -0700 |
---|---|---|
committer | Lizzy Hunt <lizzy.hunt@usu.edu> | 2024-01-12 19:13:13 -0700 |
commit | 07670ef8afb5a273267ea7149d5f7eef02fdf66b (patch) | |
tree | 2d0c8e64936c7fa2588786f4af199abf1bb48a60 /centipede/js/game/objects/flea.js | |
parent | 3ac982dfa653f0eb7fbceeb1678a3cae93b512f4 (diff) | |
download | simponic.xyz-07670ef8afb5a273267ea7149d5f7eef02fdf66b.tar.gz simponic.xyz-07670ef8afb5a273267ea7149d5f7eef02fdf66b.zip |
add subprojects
Diffstat (limited to 'centipede/js/game/objects/flea.js')
-rw-r--r-- | centipede/js/game/objects/flea.js | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/centipede/js/game/objects/flea.js b/centipede/js/game/objects/flea.js new file mode 100644 index 0000000..23479cc --- /dev/null +++ b/centipede/js/game/objects/flea.js @@ -0,0 +1,49 @@ +game.Flea = (spec) => { + const object = game.Object(spec); + const parentUpdate = object.update; + object.mushroomCoords = game.Mushroom.toMushCoords(object); + object.update = (elapsedTime) => { + const newMushroomCoords = game.Mushroom.toMushCoords(object); + if (newMushroomCoords.mushY !== object.mushroomCoords.mushY || newMushroomCoords.mushX !== object.mushroomCoords.mushX) { + if (Math.random() < Math.min(0.15 + 0.05*game.level, 0.7)) { + if (!game.mushrooms.find((mushroom) => mushroom.mushX === newMushroomCoords.mushX && mushroom.mushY === newMushroomCoords.mushY)) { + game.mushrooms.push(game.Mushroom({...newMushroomCoords, ...game.mushroomDims})); + } + } + object.mushroomCoords = newMushroomCoords; + } + parentUpdate(elapsedTime); + }; + + object.onMushroomCollision = (mushroom) => { + if (mushroom.poisoned) { + mushroom.state = 0; + object.poison(); + } + } + + object.explode = () => { + game.explosions.push(game.Explosion({x: object.x, y: object.y, width: object.width, height: object.height, sprite: game.sprites.explosionSmall})); + game.sounds.enemy_hit.load(); + game.sounds.enemy_hit.play(); + } + + object.onBulletCollision = (bullet) => { + game.score += 20; + object.alive = false; + object.explode(); + } + + object.onPlayerCollision = (player) => { + object.alive = false; + player.kill(); + object.explode(); + } + + object.onBulletCollision = (bullet) => { + object.explode(); + object.alive = false; + } + + return object; +}
\ No newline at end of file |