- scriptified PowerStrength.
This revealed an interesting bug: When the berserk fadout formula was changed in 2005 the result was essentially broken, resulting in values around 7000 - it only worked by happenstance because the lower 8 bits of the resulting values just happened to work to some degree and never overflowed. But the resulting fade was far too weak and a slightly different handling of the color composition code for the VM made it break down entirely. This restores the pre-2005 formula but weakened intensity which now comes a lot closer to how it is supposed to look.
This commit is contained in:
parent
c5f100a61d
commit
6990a46daf
6 changed files with 54 additions and 81 deletions
|
|
@ -540,71 +540,6 @@ void APowerInvulnerable::EndEffect ()
|
|||
}
|
||||
}
|
||||
|
||||
// Strength (aka Berserk) Powerup --------------------------------------------
|
||||
|
||||
IMPLEMENT_CLASS(APowerStrength, false, false)
|
||||
|
||||
//===========================================================================
|
||||
//
|
||||
// APowerStrength :: HandlePickup
|
||||
//
|
||||
//===========================================================================
|
||||
|
||||
bool APowerStrength::HandlePickup (AInventory *item)
|
||||
{
|
||||
if (item->GetClass() == GetClass())
|
||||
{ // Setting EffectTics to 0 will force Powerup's HandlePickup()
|
||||
// method to reset the tic count so you get the red flash again.
|
||||
EffectTics = 0;
|
||||
}
|
||||
return Super::HandlePickup (item);
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
//
|
||||
// APowerStrength :: InitEffect
|
||||
//
|
||||
//===========================================================================
|
||||
|
||||
void APowerStrength::InitEffect ()
|
||||
{
|
||||
Super::InitEffect();
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
//
|
||||
// APowerStrength :: DoEffect
|
||||
//
|
||||
//===========================================================================
|
||||
|
||||
void APowerStrength::Tick ()
|
||||
{
|
||||
// Strength counts up to diminish the fade.
|
||||
assert(EffectTics < (INT_MAX - 1)); // I can't see a game lasting nearly two years, but...
|
||||
EffectTics += 2;
|
||||
Super::Tick();
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
//
|
||||
// APowerStrength :: GetBlend
|
||||
//
|
||||
//===========================================================================
|
||||
|
||||
PalEntry APowerStrength::GetBlend ()
|
||||
{
|
||||
// slowly fade the berserk out
|
||||
int cnt = 12 - (EffectTics >> 6);
|
||||
|
||||
if (cnt > 0)
|
||||
{
|
||||
cnt = (cnt + 7) >> 3;
|
||||
return PalEntry (BlendColor.a*cnt*255/9,
|
||||
BlendColor.r, BlendColor.g, BlendColor.b);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Speed Powerup -------------------------------------------------------------
|
||||
|
||||
IMPLEMENT_CLASS(APowerSpeed, false, false)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue