diff --git a/src/alien.c b/src/alien.c index 9b85fd9..510d0c4 100644 --- a/src/alien.c +++ b/src/alien.c @@ -1848,7 +1848,6 @@ void alien_move(Object *alien) player_damage(alien->shield, 0); alien->shield = 0; audio_playSound(SFX_EXPLOSION, alien->x, alien->y); - audio_playSound(SFX_HIT, player.x, player.y); } if (alien->classDef == CD_ASTEROID2) @@ -1856,13 +1855,11 @@ void alien_move(Object *alien) player_damage(alien->shield, 0); alien->shield = 0; audio_playSound(SFX_EXPLOSION, alien->x, alien->y); - audio_playSound(SFX_HIT, player.x, player.y); } if (alien->classDef == CD_BARRIER) { player_damage(1, 0); - audio_playSound(SFX_HIT, player.x, player.y); } } } diff --git a/src/defs.h b/src/defs.h index fdaed24..0619ee2 100644 --- a/src/defs.h +++ b/src/defs.h @@ -68,7 +68,7 @@ along with this program. If not, see . #define MAX_HOMING 20 #define MAX_DOUBLE_HOMING (game.difficulty != DIFFICULTY_ORIGINAL ? 15 : 10) #define MAX_MICRO_HOMING 10 -#define RAY_DAMAGE_DELAY 10 +#define RAY_DAMAGE_DELAY 5 // Object Flags #define FL_WEAPCO 1 diff --git a/src/engine.c b/src/engine.c index c491522..f993e89 100644 --- a/src/engine.c +++ b/src/engine.c @@ -175,7 +175,7 @@ Show a warning. Used when non-fatal things go wrong. */ void engine_warn(const char *msg) { - printf("WARNING: %s", msg); + printf("WARNING: %s\n", msg); } /* @@ -184,7 +184,7 @@ never happen. */ void engine_error(const char *msg) { - printf("ERROR: %s\nAborting", msg); + printf("ERROR: %s\nAborting\n", msg); exit(1); } diff --git a/src/game.c b/src/game.c index 363d6d2..38b6120 100644 --- a/src/game.c +++ b/src/game.c @@ -819,8 +819,6 @@ static void game_doBullets() bullet->shield = 0; } - audio_playSound(SFX_HIT, player.x, player.y); - if (bullet->id == WT_ROCKET) explosion_add(bullet->x, bullet->y, SP_BIG_EXPLOSION); else diff --git a/src/player.c b/src/player.c index e789a1e..0d7c00a 100644 --- a/src/player.c +++ b/src/player.c @@ -84,6 +84,12 @@ void player_setTarget(int index) engine.targetShield /= aliens[index].shield; } +/* +Attempt to damage the player by ``amount``. If ``delay`` is specified, +delay any damage dealt by that number of frames (i.e. require that +number of frames of continuous damage before it registers). +Return 1 if damage is inflicted, 0 otherwise. +*/ void player_damage(int amount, int delay) { int oldshield = player.shield; @@ -100,32 +106,35 @@ void player_damage(int amount, int delay) (player_damageDelay >= delay)) { player.shield -= amount; + + LIMIT(player.shield, 0, player.maxShield); + player.hit = 5; // Damage flash timer + audio_playSound(SFX_HIT, player.x, player.y); + + // Damage tiers (not in Classic mode) + if ((oldshield > engine.lowShield) && + (player.shield <= engine.lowShield)) + { + info_setLine("!!! WARNING: SHIELD LOW !!!", FONT_RED); + if (game.difficulty != DIFFICULTY_ORIGINAL) + { + player.shield = engine.lowShield; + player_damageDelay = 0; + } + } + else if ((oldshield > 1) && (player.shield <= 1)) + { + info_setLine("!!! WARNING: SHIELD CRITICAL !!!", FONT_RED); + if (game.difficulty != DIFFICULTY_ORIGINAL) + { + player.shield = 1; + player_damageDelay = 0; + } + } } else + { player_damageDelay += amount; - - LIMIT(player.shield, 0, player.maxShield); - player.hit = 5; // Damage flash timer - - // Damage tiers (not in Classic mode) - if ((oldshield > engine.lowShield) && - (player.shield <= engine.lowShield)) - { - info_setLine("!!! WARNING: SHIELD LOW !!!", FONT_RED); - if (game.difficulty != DIFFICULTY_ORIGINAL) - { - player.shield = engine.lowShield; - player_damageDelay = 0; - } - } - else if ((oldshield > 1) && (player.shield <= 1)) - { - info_setLine("!!! WARNING: SHIELD CRITICAL !!!", FONT_RED); - if (game.difficulty != DIFFICULTY_ORIGINAL) - { - player.shield = 1; - player_damageDelay = 0; - } } } } diff --git a/src/ship.c b/src/ship.c index 34bc66c..7e1d4d8 100644 --- a/src/ship.c +++ b/src/ship.c @@ -193,14 +193,7 @@ void ship_fireRay(Object *ship) (!engine.cheatShield) && (engine.missionCompleteTimer == 0)) { player_damage(1, RAY_DAMAGE_DELAY); - explosion_add(player.x, player.y, SP_SMALL_EXPLOSION); - audio_playSound(SFX_HIT, player.x, player.y); - if (player.shield < 1) - { - audio_playSound(SFX_DEATH, player.x, player.y); - audio_playSound(SFX_EXPLOSION, player.x, player.y); - } } } }