blob: 23479ccb6916d713c15c646e626d084b9dd79ec1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
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;
}
|