//============================================================================= // for tutorial //============================================================================= class DestroyableTrigger extends Actor; var() Name DamageTypeName; var() bool bActive; var int StartHealth; var() int Health; function PostBeginPlay() { Super.PostBeginPlay(); StartHealth = Health; } function SpawnEffects() { // if _RO_ // Spawn(class'NewExplosionA',,,Location+VRand()*Vect(50,50,50)); // Spawn(class'NewExplosionA',,,Location+VRand()*Vect(50,50,50)); // Spawn(class'WallSparks',,,Location+VRand()*Vect(50,50,50)); // Spawn(class'WallSparks',,,Location+VRand()*Vect(50,50,50)); // Spawn(class'WallSparks',,,Location+VRand()*Vect(50,50,50)); // Spawn(class'WallSparks',,,Location+VRand()*Vect(50,50,50)); // Spawn(class'ExplosionCrap',,, Location, Rotation); } function DoHitEffect() { // if _RO_ //Spawn(class'WallSparks',,,Location+VRand()*Vect(50,50,50)); } function TakeDamage( int Damage, Pawn instigatedBy, Vector hitlocation, Vector momentum, class damageType, optional int HitIndex) { if( !bActive || (DamageTypeName != 'None' && DamageTypeName != damageType.Name) ) return; if( Health <= 0 ) return; Health -= Damage; if ( (Health <= 0) ) { // Broadcast the Trigger message to all matching actors. TriggerEvent(Event, self, instigatedBy); SpawnEffects(); SetCollision(false,false); bProjTarget = false; } else { DoHitEffect(); } } /* Reset() reset actor to initial state - used when restarting level without reloading. */ function Reset() { SetCollision(true,true); bProjTarget = true; Health = StartHealth; } defaultproperties { bUnlit=false bHidden=false bStasis=false bStatic=false bCollideActors=true bCollideWorld=true bNetNotify=true bBlockKarma=true bBlockActors=true bProjTarget=true bBlockZeroExtentTraces=true bBlockNonZeroExtentTraces=true bUseCylinderCollision=false bCanBeDamaged=true bActive=false Health=30 Mass=100.000000 NetUpdateFrequency=5 RemoteRole=ROLE_None }