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.
experimental
paramat 2016-10-05 01:25:02 +01:00
parent 63a3bb229a
commit 0c76303186
1 changed files with 5 additions and 8 deletions

View File

@ -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);