Code: Select all
var(Movement) int BounceVariance;
simulated function float VaryValue(float Value, int Vary) {
return (1 - 2 * fRand()) * Vary + Value;
}
simulated function HitWall(vector HitNormal, actor Wall) {
local rotator r;
[... code of Mover(Wall).bDamageTriggered left out ...]
if (BounceVariance != 0)
{
r = rotator(HitNormal);
r.yaw = VaryValue(r.yaw, BounceVariance);
r.pitch = VaryValue(r.pitch, BounceVariance);
r.roll = VaryValue(r.roll, BounceVariance);
HitNormal = Normal(vector(r));
}
Velocity = MirrorVectorByNormal(Velocity, HitNormal);
}