//============================================================================= // BelchW1. //============================================================================= class BelchW1 expands BelchW; var bool bTimerExplode; auto state Flying { simulated function ProcessTouch (Actor Other, Vector HitLocation) { if (Other != instigator) { if ( Role == ROLE_Authority ) Other.TakeDamage(Damage, instigator,HitLocation, 15000.0 * Normal(velocity), 'burned'); Explode(HitLocation, Vect(0,0,0)); } } simulated function Explode(vector HitLocation, vector HitNormal) { local SpriteBallExplosion s; if ( !bTimerExplode ) { if ( (Role == ROLE_Authority) && (FRand() < 0.5) ) MakeNoise(1.0); //FIXME - set appropriate loudness s = Spawn(class'SpriteBallExplosion',,,HitLocation+HitNormal*9); } s.RemoteRole = ROLE_None; Destroy(); } Begin: Sleep(0.03); DrawScale = 2.2; Damage = 19; Sleep(0.03); DrawScale = 2.1; Damage = 18; Sleep(0.03); DrawScale = 2.0; Damage = 17; Sleep(0.03); DrawScale = 1.9; Damage = 17; Sleep(0.03); DrawScale = 1.8; Damage = 16; Sleep(0.03); DrawScale = 1.7; Damage = 16; Sleep(0.03); DrawScale = 1.6; Damage = 15; Sleep(0.03); DrawScale = 1.5; Damage = 15; Sleep(0.03); DrawScale = 1.4; Damage = 14; Sleep(0.03); DrawScale = 1.3; Damage = 14; Sleep(0.03); DrawScale = 1.2; Damage = 13; Sleep(0.03); DrawScale = 1.1; Damage = 13; Sleep(0.03); DrawScale = 1.0; Damage = 12; Sleep(0.03); DrawScale = 0.9; Damage = 12; Sleep(0.03); DrawScale = 0.8; Damage = 11; Sleep(0.03); DrawScale = 0.7; Damage = 11; Sleep(0.03); DrawScale = 0.6; Damage = 10; Sleep(0.03); DrawScale = 0.5; Damage = 9; Sleep(0.03); DrawScale = 0.4; Damage = 8; Sleep(0.03); DrawScale = 0.3; Damage = 7; Sleep(0.03); DrawScale = 0.2; Damage = 6; Sleep(0.03); DrawScale = 0.1; Damage = 5; Sleep(0.03); bTimerExplode = true; Explode(Location, Vect(0,0,0)); } defaultproperties { speed=0.000000 MaxSpeed=0.000000 Damage=20.000000 RemoteRole=ROLE_Authority LifeSpan=0.700000 DrawScale=2.300000 LightType=LT_None }