Once I get that upgrade to 36-hour days, I will tackle that. – Mychaeel
Legacy:MCloudZone
From Unreal Wiki, The Unreal Engine Documentation Site
Another old class. It's mixed CloudZone and VacuumZone. It'll destroy everything (except CTF flags) like cloud zone. If player enters this zone, he can be killed instantly or like in VacuumZone.
//========================================================== // Cloud zone is a good thing, but it destroys all actors // that enter this zone. That's why I've created this class :) //========================================================== // Basicly it kills all pawns instantly or like Vacuum Zone. // Bot's are killed instantly. //========================================================== // CTF flag stays :) // Projectiles are destroyed //========================================================== // author: Raven // I use Vacuum Zone code. //========================================================== // If You want to use this script put me in Credits. class MCloudZone extends ZoneInfo; var int Damage; var name DamageType; var() bool bKillInstantly; // Player should be killed instantly after entered this zone? var() float KillTime; // How long to kill the player? var() float StartFlashScale; // Fog values for client death sequence var() Vector StartFlashFog; var() float EndFlashScale; var() Vector EndFlashFog; var() float DieFOV; // Field of view when dead (interpolates) var() float DieDrawScale; // Drawscale when dead function BeginPlay() { Super.BeginPlay(); Disable('Tick'); DieFOV = FClamp( DieFOV, 1, 170 ); } event ActorEntered( actor Other ) { Super.ActorEntered(Other); if (Other.IsA('Pawn')) { if(Other.IsA('PlayerPawn')) { Pawn(Other).PlaySound( Pawn(Other).Die, SLOT_Talk ); if(bKillInstantly) { Pawn(Other).TakeDamage(Damage, Pawn(Other),Pawn(Other).Location, Vect(0,0,0), DamageType); } else if(!bKillInstantly) { Enable('Tick'); } } else Pawn(Other).TakeDamage(Damage, Pawn(Other),Pawn(Other).Location, Vect(0,0,0), DamageType); } else if(Other.IsA('FlagBase')) { return; } else if(Other.IsA('CTFFlag')) { return; } else if(Other.IsA('RedFlag')) { return; } else { Other.Destroy(); } } function Tick( float DeltaTime ) { local float ratio, curScale; local vector curFog; local PlayerPawn pPawn; local Pawn P; local bool bActive; local int OldFatness; for ( P=Level.PawnList; P!=None; P=P.NextPawn ) { // Ensure player hasn't been dispatched through other means already (suicide?) if( (P.Region.Zone == self) && (P.Health > 0) ) { ratio = FMax(0.01,float(Max(P.Fatness,128) - P.Default.Fatness)/FMax(1,(255 - P.Default.Fatness))); ratio += DeltaTime/KillTime; bActive = true; // Fatness OldFatness = P.Fatness; P.Fatness = Max(P.Fatness,128) + Max(1, ratio * (255 - P.Default.Fatness) - (P.Fatness - P.Default.Fatness)); if ( P.Fatness < Max(OldFatness,P.Default.Fatness) ) P.Fatness = 255; // Fog & Field of view pPawn = PlayerPawn(P); if( pPawn != None ) { curScale = (EndFlashScale-StartFlashScale)*ratio + StartFlashScale; curFog = (EndFlashFog -StartFlashFog )*ratio + StartFlashFog; pPawn.ClientFlash( curScale, 1000 * curFog ); pPawn.SetFOVAngle( (DieFOV-pPawn.default.FOVAngle)*ratio + pPawn.default.FOVAngle); } if ( P.Fatness > 250 ) { Level.Game.SpecialDamageString = DamageString; P.TakeDamage ( 10000, P, P.Location, Vect(0,0,0), DamageType ); MakeNormal(P); } } } if( !bActive ) Disable('Tick'); } function MakeNormal(Pawn P) { local PlayerPawn PPawn; // set the fatness back to normal P.Fatness = P.Default.Fatness; P.DrawScale = P.Default.DrawScale; PPawn = PlayerPawn(P); if( PPawn != None ) PPawn.SetFOVAngle( PPawn.Default.FOVAngle ); } // When an actor leaves this zone. event ActorLeaving( actor Other ) { if( Other.bIsPawn ) MakeNormal(Pawn(Other)); Super.ActorLeaving(Other); } defaultproperties { Damage=999999 DamageType='Fell' KillTime=2.500000 StartFlashScale=1.000000 EndFlashScale=1.000000 DieFOV=90.000000 DieDrawScale=1.000000 DamageString="%o flayed away." bStatic=False bKillInstantly=false; }
Category:Legacy Mapping
Category:Legacy Custom Class (UT) \\