v0.8.0a: adjusted red flash effect when the hero is damaged
This commit is contained in:
@@ -1062,15 +1062,18 @@ public class Hero extends Char {
|
|||||||
|
|
||||||
int preHP = HP + shielding();
|
int preHP = HP + shielding();
|
||||||
super.damage( dmg, src );
|
super.damage( dmg, src );
|
||||||
int effectiveDamage = preHP - (HP + shielding());
|
int postHP = HP + shielding();
|
||||||
|
int effectiveDamage = preHP - postHP;
|
||||||
|
|
||||||
//flash red when hit for 1/4 of your remaining HP or higher.
|
//flash red when hit for serious damage.
|
||||||
// Intensity increases the more injured the player is.
|
float percentDMG = effectiveDamage / (float)preHP; //percent of current HP that was taken
|
||||||
if (preHP > 0 && effectiveDamage >= preHP/4f){
|
float percentHP = 1 - ((HT - postHP) / (float)HT); //percent health after damage was taken
|
||||||
//08%/11%/16%/33% intensity at
|
// The flash intensity increases primarily based on damage taken and secondarily on missing HP.
|
||||||
//75%/50%/25%/00% health
|
float flashIntensity = 0.25f * (percentDMG * percentDMG) / percentHP;
|
||||||
float divisor = 3 + 12*((HP + shielding()) / (float)(HT + shielding()));
|
//if the intensity is very low don't flash at all
|
||||||
GameScene.flash( (int)(0xFF/divisor) << 16 );
|
if (flashIntensity >= 0.05f){
|
||||||
|
flashIntensity = Math.min(1/3f, flashIntensity); //cap intensity at 1/3
|
||||||
|
GameScene.flash( (int)(0xFF*flashIntensity) << 16 );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user