Skip to content

Commit

Permalink
Damage flash: Reduce maximum alpha. Avoid fade overload
Browse files Browse the repository at this point in the history
Flash alpha maximum is reduced from 180 to 127 to avoid player blindness
in combat. Flash alpha minimum is unchanged.
The 'damage_flash' value is now limited to max alpha, to avoid multiple
hits creating a huge value that causes flash to stay at maximum alpha
for a long period. Now alpha always starts to fade immediately after
taking damage.
Both problems can be seen in Minetest let's play videos.
Simplify and optimise some code.
  • Loading branch information
paramat committed Oct 21, 2016
1 parent 63a3bb2 commit 0c76303
Showing 1 changed file with 5 additions and 8 deletions.
13 changes: 5 additions & 8 deletions src/game.cpp
Expand Up @@ -3374,12 +3374,12 @@ void Game::processClientEvents(CameraOrientation *cam, float *damage_flash)
//u16 damage = event.player_damage.amount;
//infostream<<"Player damage: "<<damage<<std::endl;

*damage_flash += 100.0;
*damage_flash += 8.0 * event.player_damage.amount;
*damage_flash += 95.0 + 3.2 * event.player_damage.amount;
*damage_flash = MYMIN(*damage_flash, 127.0);

player->hurt_tilt_timer = 1.5;
player->hurt_tilt_strength = event.player_damage.amount / 4;
player->hurt_tilt_strength = rangelim(player->hurt_tilt_strength, 1.0, 4.0);
player->hurt_tilt_strength =
rangelim(event.player_damage.amount / 4, 1.0, 4.0);

MtEvent *e = new SimpleTriggerEvent("PlayerDamage");
gamedef->event()->put(e);
Expand Down Expand Up @@ -4285,10 +4285,7 @@ void Game::updateFrame(ProfilerGraph *graph, RunStats *stats,
Damage flash
*/
if (runData->damage_flash > 0.0) {
video::SColor color(std::min(runData->damage_flash, 180.0f),
180,
0,
0);
video::SColor color(runData->damage_flash, 180, 0, 0);
driver->draw2DRectangle(color,
core::rect<s32>(0, 0, screensize.X, screensize.Y),
NULL);
Expand Down

0 comments on commit 0c76303

Please sign in to comment.