Damage flash: Reduce maximum alpha. Avoid fade overload

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.
This commit is contained in:
paramat 2016-10-05 01:25:02 +01:00
parent 63a3bb229a
commit 0c76303186

@ -3374,12 +3374,12 @@ void Game::processClientEvents(CameraOrientation *cam, float *damage_flash)
//u16 damage = event.player_damage.amount; //u16 damage = event.player_damage.amount;
//infostream<<"Player damage: "<<damage<<std::endl; //infostream<<"Player damage: "<<damage<<std::endl;
*damage_flash += 100.0; *damage_flash += 95.0 + 3.2 * event.player_damage.amount;
*damage_flash += 8.0 * event.player_damage.amount; *damage_flash = MYMIN(*damage_flash, 127.0);
player->hurt_tilt_timer = 1.5; player->hurt_tilt_timer = 1.5;
player->hurt_tilt_strength = event.player_damage.amount / 4; player->hurt_tilt_strength =
player->hurt_tilt_strength = rangelim(player->hurt_tilt_strength, 1.0, 4.0); rangelim(event.player_damage.amount / 4, 1.0, 4.0);
MtEvent *e = new SimpleTriggerEvent("PlayerDamage"); MtEvent *e = new SimpleTriggerEvent("PlayerDamage");
gamedef->event()->put(e); gamedef->event()->put(e);
@ -4285,10 +4285,7 @@ void Game::updateFrame(ProfilerGraph *graph, RunStats *stats,
Damage flash Damage flash
*/ */
if (runData->damage_flash > 0.0) { if (runData->damage_flash > 0.0) {
video::SColor color(std::min(runData->damage_flash, 180.0f), video::SColor color(runData->damage_flash, 180, 0, 0);
180,
0,
0);
driver->draw2DRectangle(color, driver->draw2DRectangle(color,
core::rect<s32>(0, 0, screensize.X, screensize.Y), core::rect<s32>(0, 0, screensize.X, screensize.Y),
NULL); NULL);