Legacy:MCloudZone

From Unreal Wiki, The Unreal Engine Documentation Site
Jump to navigation Jump to search
Actor >> Info (UT) >> ZoneInfo >> MCloudZone

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.

<uscript> //========================================================== // 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;

} </uscript>


Category:Legacy Mapping
Category:Legacy Custom Class (UT) \\