From 0e7de015ea5a403acd489d1e3c9f2fae3671b579 Mon Sep 17 00:00:00 2001 From: zenoamaro Date: Thu, 27 Jun 2019 22:17:54 +0200 Subject: [PATCH] Fall damage --- constants.js | 2 ++ main.js | 13 ++++++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/constants.js b/constants.js index a6c2444..1b969fe 100644 --- a/constants.js +++ b/constants.js @@ -22,3 +22,5 @@ export const MIN_BULLET_SOUND_FREQUENCY = 220; export const MAX_BULLET_SOUND_FREQUENCY = 2200; export const PROJECTILE_ITERATIONS_PER_FRAME = 30; export const PROJECTILE_ITERATION_PROGRESS = 0.01; +export const FALL_DAMAGE_HEIGHT = 50; +export const FALL_DAMAGE_FACTOR = 3; diff --git a/main.js b/main.js index 3c3de4a..7fe0889 100644 --- a/main.js +++ b/main.js @@ -1,4 +1,4 @@ -import {H, MAX_BULLET_SOUND_FREQUENCY, MAX_WIND, MIN_BULLET_SOUND_FREQUENCY, PLAYER_COLORS, PLAYER_INITIAL_POWER, REDUCTION_FACTOR, W, Z, PROJECTILE_ITERATIONS_PER_FRAME, PROJECTILE_ITERATION_PROGRESS, PLAYER_MAX_ENERGY, PLAYER_ENERGY_POWER_MULTIPLIER} from './constants.js'; +import {H, MAX_BULLET_SOUND_FREQUENCY, MAX_WIND, MIN_BULLET_SOUND_FREQUENCY, PLAYER_COLORS, PLAYER_INITIAL_POWER, REDUCTION_FACTOR, W, Z, PROJECTILE_ITERATIONS_PER_FRAME, PROJECTILE_ITERATION_PROGRESS, PLAYER_MAX_ENERGY, PLAYER_ENERGY_POWER_MULTIPLIER, FALL_DAMAGE_FACTOR, FALL_DAMAGE_HEIGHT} from './constants.js'; import {createCanvas, drawLine, drawRect, drawText, loop} from './gfx.js'; import {key} from './input.js'; import {clamp, deg2rad, parable, randomInt, vec, wrap} from './math.js'; @@ -42,12 +42,16 @@ for (let color of PLAYER_COLORS) { weapon: WEAPON_TYPES[0], energy: PLAYER_MAX_ENERGY, ai: i !== 0 ? 'moron' : undefined, + fallHeight: 0, }); i++; } function update() { if (state === 'start-turn') { + const player = players[currentPlayer]; + player.fallHeight = 0; + wind = randomInt(-MAX_WIND, +MAX_WIND); state = 'aim'; } @@ -153,8 +157,11 @@ function update() { if (player.dead) continue; const y = closestLand(terrain, player.x, player.y); if (player.y !== y) { - player.y++; stable = false; + player.y++; + if (player.fallHeight++ >= FALL_DAMAGE_HEIGHT) { + player.energy -= FALL_DAMAGE_FACTOR; + } } } if (stable) state = 'destroy-players'; @@ -249,7 +256,7 @@ function drawStatus() { const player = players[currentPlayer]; const {weapon} = player; - drawText(foreground, `AIM:${player.a} PWR:${player.p} ${weapon.name}`, 8, 8, player.c, 'left'); + drawText(foreground, `NRG:${player.energy} AIM:${player.a} PWR:${player.p} ${weapon.name}`, 8, 8, player.c, 'left'); drawText(foreground, `WIND: ${wind<=0?'<':''}${Math.abs(wind)}${wind>=0?'>':''}`, W-8, 8, 'white', 'right'); }