Engine
Class Actor

source: c:\runehov\Engine\Classes\Actor.uc
Core.Object
   |
   +--Engine.Actor
Direct Known Subclasses:Brush, CDThinker, DamageType, Decal, Decoration, Effects, HUD, Info, Inventory, Keypoint, Light, Menu, NavigationPoint, ParticleSystem, Pawn, Projectile, SequencerBase, SpawnNotify, Triggers, Imports, Accelerator, Cinematography, TestActor

class Actor
extends Core.Object

//============================================================================= // Actor: The base class of all actors. // This is a built-in Unreal class and it shouldn't be modified. //=============================================================================
Variables
 vector Acceleration
           Acceleration.
 float AnimLast
           Last frame.
 float AnimMinRate
           Minimum rate for velocity-scaled animation.
 AnimationProxy AnimProxy
           Animation group controller actor (spawned in SpawnAnimationProxyX())
 Actor AttachParent
           RUNE: Parent actor if bCarriedItem
 byte AttachParentJoint
           RUNE: Parent joint index I am attached to
 Actor Base
           Moving brush actor we're standing on.
 byte BaseJoint
           RUNE: If the Base has bJointsBlock, this contains the joint index
 EMatterType BaseMatterType
           RUNE: The matter associated with the base
 Vector BaseScrollDir
           RUNE: Scroll direction associated with the base
 model Brush
           Brush if DrawType=DT_Brush.
 vector ColLocation
           Actor's old location one move ago.
 Actor Deleted
           Next actor in just-deleted chain.
 enum EDodgeDir
           Performing interpolating.
 Pawn Instigator
           Pawn responsible for damage.
 Inventory Inventory
           Inventory chain.
 Actor JointChild[50]
           Children of joints
 byte JointFlags[50]
           Joint properties
 Actor LatentActor
           Internal latent function use.
 byte LatentByte
           Internal latent function use.
 float LatentFloat
           Internal latent function use.
 int LatentInt
           Internal latent function use.
 LevelInfo Level
           Level this actor is on.
 byte MiscNumber
           Internal use.
 int NetTag
           True only for pawns.
 vector OldLocation
           Actor's old location one tick ago.
 Actor Owner
           Owner actor.
 float PhysAlpha
           Interpolating position, 0.0-1.0.
 float PhysRate
           Interpolation rate per second.
 PointRegion Region
           Region this actor is in.
 RenderIterator RenderInterface
           abstract iterator initialized in the Rendering engine
 ENetRole Role
           True only for pawns.
 ExtraTag, SpecialTag
           Next actor in just-deleted chain.
 byte StandingCount
           Count of actors standing on this actor.
 Actor Target
           Actor we're aiming at (other uses as well).
 float TimerCounter
           Counts up until it reaches TimerRate.
 float TimerRate
           Timer event, 0=no timer.
 Actor Touching[4]
           List of touching actors.
 float TweenRate
           Tween-into rate.
 Level XLevel
           Level object.
 bool bAlwaysTick
           Update even when players-only.
 bool bAnimByOwner
           Animation dictated by owner.
 bool bAnimFinished
           Unlooped animation sequence has finished.
 bool bAnimLoop
           Whether animation is looping.
 bool bAnimNotify
           Whether a notify is applied to the current sequence.
 bool bAssimilated
           Actor dynamics are assimilated in world geometry.
 bool bClientDemoNetFunc
           True if we're client-side demo recording and this call originated from the remote.
 bool bClientDemoRecording
           True we are currently recording a client-side demo
 bool bDeleteMe
           About to be deleted.
 bool bDemoRecording
           True we are currently demo recording
 bool bDynamicLight
           Temporarily treat this as a dynamic light.
 bool bEdLocked
           Locked in editor (no movement or rotation).
 bool bEdSnap
           Should snap to grid in UnrealEd.
 bool bHighlighted
           Highlighted in UnrealEd.
 bool bInterpolating
           Performing interpolating.
 bool bIsMover
           Is a mover.
 bool bIsPawn
           True only for pawns.
 bool bLightChanged
           Recalculate this light's lighting now.
 bool bMemorized
           Remembered in UnrealEd.
 bool bNetFeel
           Player collides with/feels it in network play.
 bool bNetHear
           Player hears it in network play.
 bool bNetInitial
           Initial network update.
 bool bNetOwner
           Player owns this actor.
 bool bNetRelevant
           Actor is currently relevant. Only valid server side, only when replicating variables.
 bool bNetSee
           Player sees it in network play.
 bool bRenderedLastFrame
           RUNE: True if the object was rendered the last frame
 bool bSelected
           Selected in UnrealEd.
 bool bSimulatedPawn
           True if Pawn and simulated proxy.
 bool bTempEditor
           Internal UnrealEd.
 bool bTicked
           Actor has been updated.
 bool bTimerLoop
           Timer loops (else is one-shot).


Function Summary
 Actor ActorAttachedTo(int joint)
 bool ActorInSector(Actor A, int angle)
 void AddVelocity(vector NewVelocity)
 void ApplyDamageToActor(int amount, name DamageType, Pawn EventInstigator, Actor victim, vector Location, vector Momentum, int joint)
     
//============================================================
//
// ApplyDamageToActor
//
//============================================================
 void ApplyJointForce(int joint, Vector force)
     
//native(606)
//native(607)
 void AttachActorToJoint(Actor a, int j)
     
//native(612)
 void AutonomousPhysics(float DeltaSeconds)
 void BecomeViewTarget()
     
//
// Called by PlayerPawn when this actor becomes its ViewTarget.
//
 int BodyPartForJoint(int joint)
 Vector CalcArcVelocity(int trajectory, vector src, vector dst)
     
// Release an actor from waiting
 bool CanBeUsed(Actor Other)
     
//============================================================================
//
// CanBeUsed
//
// Whether the actor can be used.
//============================================================================
 bool CheckDefending()
     
//============================================================================
//
// CheckDefending
//
// Checks if the Actor is defending 
// Default does nothing.
//============================================================================
 int ClosestJointTo(Vector point)
 string ConsoleCommand(string Command)
     
// Execute a console command in the context of the current level and game engine.
 bool DamageBodyPart(int Damage, Pawn EventInstigator, vector HitLocation, vector Momentum, name DamageType, int BodyPart)
 void DebugStop(string msg, optional bool)
     
//============================================================
//
// DebugStop
//
// Stops everything for debugging purposes
//============================================================
 bool Destroy()
     
//
// Destroy this actor. Returns true if destroyed, false if indestructable.
// Destruction is latent. It occurs at the end of the tick.
//
 void DestroyAnimationProxy()
 Actor DetachActorFromJoint(int j)
 void Error(string S)
     
// Handle an error and kill this one actor.
 bool FastTrace(vector TraceEnd, optional vector)
     
// returns true if did not hit world geometry
 void FinishAnim()
 void FinishInterpolation()
     
// Physics control.
 void FireEvent(name TheEvent)
     
//
// Triggers.
//
 void FrameSweep(int curframe, vector weaponvect, out vector, out vector)
 name GetAnimGroup(name Sequence)
 void GetDamageValues(int Damage, name DamageType, out int, out int)
     
//============================================================
//
// GetDamageValues
//
//============================================================
 String GetHumanName()
     
//
// Returns the human readable string representation of an object.
//
 String GetItemName(string FullName)
     
//
// Returns the string representation of the name of an object without the package
// prefixes.
//
 string GetJointName(int joint)
     
//native(604)
 Vector GetJointPos(int joint)
     
//=============================================================================
// Skeletal Support (natives 600-700)
//=============================================================================
 Rotator GetJointRot(int joint)
 string GetMapName(string NameEnding, string MapName, int Dir)
     
// Find files.
 string GetNextInt(string ClassName, int Num)
 void GetNextIntDesc(string ClassName, int Num, out string, out string)
 void GetNextSkin(string Prefix, string CurrentSkin, int Dir, out string, out string)
 float GetSoundDuration(sound Sound)
     
// Get a sound duration.
 string GetURLMap()
 name GetUseAnim()
     
//============================================================================
//
// GetUseAnim
//
// Returns the animation that the player (or a viking) should play when
// this item is 'used'.
//============================================================================
 int GetUsePriority()
     
//============================================================================
//
// GetUsePriority
//
// Returns the priority of the weapon, lower is better
//============================================================================
 bool HasAnim(name Sequence)
 void HurtRadius(float DamageAmount, float DamageRadius, name DamageType, float Momentum, vector HitLocation)
     
//
// Hurt actors within the radius.
//
 bool IsAnimating()
 int JointNamed(name jointname)
 string LipSyncString(Sound sound, float granularity)
     
/* Play a sound effect. - returns the ID to use to stop it, valid slots are:
	SLOT_None,
	SLOT_Misc,
	SLOT_Pain,
	SLOT_Interact,
	SLOT_Ambient,
	SLOT_Talk,
	SLOT_Interface,
*/
 void LoopAnim(name Sequence, optional float, optional float, optional float)
 void MakeNoise(float Loudness)
     
//
// Inform other creatures that you've made a noise
// they might hear (they are sent a HearNoise message)
// Senders of MakeNoise should have an instigator if they are not pawns.
//
 EMatterType MatterForJoint(int joint)
     
//============================================================
//
// MatterForJoint
//
// Returns what kind of material joint is associated with
//============================================================
 EMatterType MatterTrace(vector end, vector start, optional float, optional out)
     
//============================================================
//
// MatterTrace
//
// Returns the material struck by a traceline
// This routine is used by the weapon sweep code, which
// passes in HitLoc (for end).  Since HitLoc of obtained 
// through a volumetric trace (and TraceTexture is a line
// trace), this routine fudges the end point out a bit
// to adjust for the volumetric trace
// 
// Additionally, if offset is nonzero, this trace function uses
// the offset value to fudge a bit to find the texture hit
// by the trace
//============================================================
 bool Move(vector Delta)
     
// Movement.
 bool MoveSmooth(vector Delta)
 int NumJoints()
 Texture PainSkin(int BodyPart)
     
// 3 directions: 0=no dir change, sign=dir mag=velocity, PosOffset of spring joint
 void PlayAnim(name Sequence, optional float, optional float)
     
// Animation functions.
 void PlayOwnedSound(sound Sound, optional ESoundSlot, optional float, optional bool, optional float, optional float)
     
// play a sound effect, but don't propagate to a remote owner
// (he is playing the sound clientside
 int PlaySound(sound Sound, optional ESoundSlot, optional float, optional bool, optional float, optional float)
 void PlayStabRemove()
     
// Animation notifications.
 bool PlayerCanSeeMe()
     
//
// PlayerCanSeeMe returns true if some player has a line of sight to 
// actor's location.
//
 void Release()
     
// Wait to be released
 void ReleaseTagged(name tag)
 void ResetAnimationCache(name seq)
 
simulated
SLog(string msg)
     
//============================================================
//
// Slog
//
// Sends text to the Log as well as displaying on all client screens for debug purposes
//============================================================
 void SetBase(Actor NewBase)
     
// Relations.
 void SetCollision(optional bool, optional bool, optional bool)
     
// Collision.
 bool SetCollisionSize(float NewRadius, float NewHeight)
 void SetDefaultDisplayProperties()
 void SetDefaultJointFlags()
 void SetDefaultPolygroups()
 void SetDisplayProperties(ERenderStyle NewStyle, Texture NewTexture, bool bLighting, bool bEnviroMap)
     
//
// Set the display properties of an actor.  By setting them through this function, it allows
// the actor to modify other components (such as a Pawn's weapon) or to adjust the result
// based on other factors (such as a Pawn's other inventory wanting to affect the result)
 void SetJointRot(int joint, Rotator rot)
 bool SetLocation(vector NewLocation)
 void SetOnFire(Pawn EventInstigator, int Joint)
 void SetOwner(Actor NewOwner)
 void SetPhysics(EPhysics newPhysics)
 bool SetRotation(rotator NewRotation)
 void SetTimer(float NewTimerRate, bool bLoop)
     
// Causes Timer() events every NewTimerRate seconds.
 void Sleep(float Seconds)
     
// Latent functions.
 void SpawnAnimationProxy()
     
// Spawn animation proxies for a skeletal actor
 void StopAllSound()
 void StopSound(int Id)
 Actor Trace(out vector, out vector, vector TraceEnd, optional vector, optional bool, optional vector)
     
//
// Trace a line and see what it collides with first.
// Takes this actor's collision properties into account.
// Returns first hit actor, Level if hit level, or None if hit nothing.
//
 Texture TraceTexture(vector TraceEnd, vector TraceStart, out int, out vector)
     
// RUNE
// Returns the texture from a given traceline (ALWAYS has an extent of (0, 0, 0))
 void TurnJointTo(int joint, Rotator rot)
     
//native(615)
 void TweenAnim(name Sequence, float Time)
 void UnlinkAttachments()
 void WaitForRelease()
     
// --New natives reserved number list
// Skeletal Support				600-649
// Accelerators use				650-659
// Actor::Release/Wait 			660-661
// Object::VSize2D				662
// Actor::CalcArcVelocity		663
// Pawn::NearestNavPoint		664
// Pawn::CloserNavPointTo		665
// Actor::TraceTexture			666
// Actor::LipSyncString			667
// Polyobj::GetCollisionRadius	668
// Polyobj::GetTexture			669
// Pawn::Look					670
 
simulated
debug(Canvas Canvas, int mode)
     
//============================================================
//
// Debug
//
// Debug rendering callback
//============================================================



Source Code


00001	//=============================================================================
00002	// Actor: The base class of all actors.
00003	// This is a built-in Unreal class and it shouldn't be modified.
00004	//=============================================================================
00005	class Actor extends Object
00006		abstract
00007		native;
00008	//	nativereplication;
00009	
00010	// Imported data (during full rebuild).
00011	#exec Texture Import File=Textures\S_Actor.pcx Name=S_Actor Mips=Off Flags=2
00012	
00013	const bDebug			=	1;	// Debug Mode (Debug HUD available)
00014	
00015	// These for the debugHUD
00016	const DEBUG_NONE		=	0;	// No Debugging
00017	const DEBUG_TARGET		=	1;	// Debug the target actor
00018	const DEBUG_CONSTANT	=	2;	// Debug an actor and don't change
00019	const DEBUG_AI			=	3;	// Debug AI (navpoints,constantTarget,POV)
00020	const DEBUG_PLAYER		=	4;	// Debug the player
00021	const DEBUG_LEVEL		=	5;	// Debug the level info actor
00022	const DEBUG_ZONE		=	6;	// Debug current Zoneinfo
00023	const DEBUG_MULTIPLE	=	7;	// ** this is the lowest multiple selection mode
00024	const DEBUG_VISIBLE		=	7;	// Debug all visible actors
00025	const DEBUG_LIGHTS		=	8;	// Debug lights
00026	const DEBUG_NAVPOINTS	=	9;	// Debug all navigation points
00027	const DEBUG_TRIGGERS	=	10;
00028	const DEBUG_MAX			=	10;
00029	
00030	const HUD_ACTOR			=	0;	// Call the actors debug function
00031	const HUD_SKELETON		=	1;	// Draw skeleton
00032	const HUD_SKELNAMES		=	2;	// Draw skeleton with joint names
00033	const HUD_SKELJOINTS	=	3;	// Draw skeleton with collision joints
00034	const HUD_SKELAXES		=	4;	// Draw skeleton with rotation axes
00035	const HUD_LOD			=	5;	// Draw LOD
00036	const HUD_POV			=	6;	// Draw POV of actor
00037	const HUD_SCRIPT		=	7;	// Draw scripting info (triggers, events, etc.)
00038	const HUD_NETWORK		=	8;	// Draw network info
00039	const HUD_MAX			=   8;
00040	const HUD_NONE			=   9;
00041	
00042	const ANGLE_1	= 182;
00043	const ANGLE_45	= 8192;
00044	const ANGLE_90	= 16384;
00045	const ANGLE_180	= 32768;
00046	const ANGLE_360 = 65535;
00047	
00048	// Body parts used for localized damage (update array in Pawn)
00049	const BODYPART_BODY		=	0;	// Body represents the creature health (damaged by falling/drowning/etc.)
00050	const BODYPART_LARM1	=	1;
00051	const BODYPART_LARM2	=	2;
00052	const BODYPART_RARM1	=	3;
00053	const BODYPART_RARM2	=	4;
00054	const BODYPART_HEAD		=	5;
00055	const BODYPART_LLEG1	=	6;
00056	const BODYPART_LLEG2	=	7;
00057	const BODYPART_RLEG1	=	8;
00058	const BODYPART_RLEG2	=	9;
00059	const BODYPART_TORSO	=	10;
00060	const BODYPART_MISC1	=	11;
00061	const BODYPART_MISC2	=	12;
00062	const BODYPART_MISC3	=	13;
00063	const BODYPART_MISC4	=	14;
00064	const NUM_BODYPARTS      =  15;
00065	
00066	// Flags.
00067	var(Advanced) const bool  bStatic;       // Does not move or change over time.
00068	var(Advanced) bool        bHidden;       // Is hidden during gameplay.
00069	var(Advanced) const bool  bNoDelete;     // Cannot be deleted during play.
00070	var(Advanced) bool        bReleaseLock;  // Won't execute script code until released
00071	var bool				  bAnimFinished; // Unlooped animation sequence has finished.
00072	var bool				  bAnimLoop;     // Whether animation is looping.
00073	var bool				  bAnimNotify;   // Whether a notify is applied to the current sequence.
00074	var bool				  bAnimByOwner;	 // Animation dictated by owner.
00075	var const bool            bDeleteMe;     // About to be deleted.
00076	var transient const bool  bAssimilated;  // Actor dynamics are assimilated in world geometry.
00077	var transient const bool  bTicked;       // Actor has been updated.
00078	var transient bool        bLightChanged; // Recalculate this light's lighting now.
00079	var bool                  bDynamicLight; // Temporarily treat this as a dynamic light.
00080	var bool                  bTimerLoop;    // Timer loops (else is one-shot).
00081	var bool				  bRenderedLastFrame; // RUNE:  True if the object was rendered the last frame
00082	var(Advanced) bool		  bSpecialRender; // RUNE:  Special rendered... not actually drawn, but is still filtered
00083											  // used by the TT_See triggers for sight determination
00084	
00085	// Other flags.
00086	var(Advanced) bool        bCanTeleport;  // This actor can be teleported.
00087	var(Advanced) bool		bOwnerNoSee;	 // Everything but the owner can see this actor.
00088	var(Advanced) bool      bOnlyOwnerSee;   // Only owner can see this actor.
00089	var Const     bool		bIsMover;		 // Is a mover.
00090	var(Advanced) bool		bAlwaysRelevant; // Always relevant for network.
00091	var Const	  bool		bAlwaysTick;     // Update even when players-only.
00092	var(Advanced) bool        bHighDetail;	 // Only show up on high-detail.
00093	var(Advanced) bool		  bStasis;		 // In StandAlone games, turn off if not in a recently rendered zone turned off if  bCanStasis  and physics = PHYS_None or PHYS_Rotating.
00094	var(Advanced) bool		  bForceStasis;	 // Force stasis when not recently rendered, even if physics not none or rotating.
00095	var const	  bool		  bIsPawn;		 // True only for pawns.
00096	var(Advanced) const bool  bNetTemporary; // Tear-off simulation in network play.
00097	var(Advanced) const bool  bNetOptional;  // Actor should only be replicated if bandwidth available.
00098	var			  bool		  bReplicateInstigator;	// Replicate instigator to client (used by bNetTemporary projectiles).
00099	var			  bool		  bTrailerSameRotation;	// If PHYS_Trailer and true, have same rotation as owner.
00100	var			  bool		  bTrailerPrePivot;	// If PHYS_Trailer and true, offset from owner by PrePivot.
00101	var			  bool		  bClientAnim;
00102	var			  bool		  bSimFall;			// dumb proxy should simulate fall
00103	var(Advanced) bool		  bFrameNotifies;	// RUNE: receive a FrameNotify() event each frame
00104	
00105	var(Advanced) bool		  bLookFocusPlayer;		// RUNE:  Look focus for the Player
00106	var(Advanced) bool		  bLookFocusCreature;	// RUNE:  Look focus for Non-Player Pawns
00107	var(Advanced) bool		  bForceRender;			// RUNE:  Force rendering of this actor if the zone it's in is visible
00108	
00109	
00110	// Priority Parameters
00111	// Actor's current physics mode.
00112	var(Movement) const enum EPhysics
00113	{
00114		PHYS_None,
00115		PHYS_Walking,
00116		PHYS_Falling,
00117		PHYS_Swimming,
00118		PHYS_Flying,
00119		PHYS_Rotating,
00120		PHYS_Projectile,
00121		PHYS_Rolling,
00122		PHYS_Interpolating,
00123		PHYS_MovingBrush,
00124		PHYS_Spider,
00125		PHYS_Trailer,
00126		PHYS_Sliding
00127	} Physics;
00128	
00129	// Net variables.
00130	enum ENetRole
00131	{
00132		ROLE_None,              // No role at all.
00133		ROLE_DumbProxy,			// Dumb proxy of this actor.
00134		ROLE_SimulatedProxy,	// Locally simulated proxy of this actor.
00135		ROLE_AutonomousProxy,	// Locally autonomous proxy of this actor.
00136		ROLE_Authority,			// Authoritative control over the actor.
00137	};
00138	var ENetRole Role;
00139	var(Networking) ENetRole RemoteRole;
00140	var const transient int NetTag;
00141	
00142	// Owner.
00143	var         const Actor   Owner;         // Owner actor.
00144	var(Object) name InitialState;
00145	var(Object) name Group;
00146	
00147	// Execution and timer variables.
00148	var float                 TimerRate;     // Timer event, 0=no timer.
00149	var const float           TimerCounter;	 // Counts up until it reaches TimerRate.
00150	var(Advanced) float		  LifeSpan;      // How old the object lives before dying, 0=forever.
00151	
00152	// Animation variables.
00153	var(Display) name         AnimSequence;  // Animation sequence we're playing.
00154	var(Display) float        AnimFrame;     // Current animation frame, 0.0 to 1.0.
00155	var(Display) float        AnimRate;      // Animation rate in frames per second, 0=none, negative=velocity scaled.
00156	var          float        TweenRate;     // Tween-into rate.
00157	
00158	var(Display) float		  LODBias;
00159	
00160	//-----------------------------------------------------------------------------
00161	// Structures.
00162	
00163	// Identifies a unique convex volume in the world.
00164	struct PointRegion
00165	{
00166		var zoneinfo Zone;       // Zone.
00167		var int      iLeaf;      // Bsp leaf.
00168		var byte     ZoneNumber; // Zone number.
00169	};
00170	
00171	enum E_RMAlign
00172	{
00173		RMALIGN_Left,
00174		RMALIGN_Right,
00175		RMALIGN_Center,
00176		RMALIGN_None
00177	};
00178	
00179	//-----------------------------------------------------------------------------
00180	// Major actor properties.
00181	
00182	// Scriptable.
00183	var       const LevelInfo Level;         // Level this actor is on.
00184	var transient const Level XLevel;        // Level object.
00185	var(Events) name		  Tag;			 // Actor's tag name.
00186	var(Events) name          Event;         // The event this actor causes.
00187	var Actor                 Target;        // Actor we're aiming at (other uses as well).
00188	var Pawn                  Instigator;    // Pawn responsible for damage.
00189	var Inventory             Inventory;     // Inventory chain.
00190	var const Actor           Base;          // Moving brush actor we're standing on.
00191	var byte				  BaseJoint;	 // RUNE:  If the Base has bJointsBlock, this contains the joint index
00192	var EMatterType			  BaseMatterType; // RUNE:  The matter associated with the base
00193	var Vector				  BaseScrollDir; // RUNE:  Scroll direction associated with the base
00194	
00195	var const PointRegion     Region;        // Region this actor is in.
00196	var(Movement)	name	  AttachTag;
00197	
00198	// Internal.
00199	var const byte            StandingCount; // Count of actors standing on this actor.
00200	var const byte            MiscNumber;    // Internal use.
00201	var const byte            LatentByte;    // Internal latent function use.
00202	var const int             LatentInt;     // Internal latent function use.
00203	var const float           LatentFloat;   // Internal latent function use.
00204	var const actor           LatentActor;   // Internal latent function use.
00205	var const actor           Touching[4];   // List of touching actors.
00206	var const actor           Deleted;       // Next actor in just-deleted chain.
00207	
00208	// Internal tags.
00209	var const transient int CollisionTag, LightingTag, OtherTag, ExtraTag, SpecialTag;
00210	
00211	// The actor's position and rotation.
00212	var(Movement) const vector Location;     // Actor's location; use Move to set.
00213	var(Movement) const rotator Rotation;    // Rotation.
00214	var       const vector    OldLocation;   // Actor's old location one tick ago.
00215	var       const vector    ColLocation;   // Actor's old location one move ago.
00216	var(Movement) vector      Velocity;      // Velocity.
00217	var       vector          Acceleration;  // Acceleration.
00218	var(Filter) float		  OddsOfAppearing; // 0-1 - chance actor will appear in relevant game modes.
00219	
00220	//Editing flags
00221	var(Advanced) bool        bHiddenEd;     // Is hidden during editing.
00222	var(Advanced) bool        bDirectional;  // Actor shows direction arrow during editing.
00223	var const bool            bSelected;     // Selected in UnrealEd.
00224	var const bool            bMemorized;    // Remembered in UnrealEd.
00225	var const bool            bHighlighted;  // Highlighted in UnrealEd.
00226	var bool                  bEdLocked;     // Locked in editor (no movement or rotation).
00227	var(Advanced) bool        bEdShouldSnap; // Snap to grid in editor.
00228	var transient bool        bEdSnap;       // Should snap to grid in UnrealEd.
00229	var transient const bool  bTempEditor;   // Internal UnrealEd.
00230	
00231	// What kind of gameplay scenarios to appear in.
00232	var(Filter) bool          bDifficulty0;  // Appear in difficulty 0.
00233	var(Filter) bool          bDifficulty1;  // Appear in difficulty 1.
00234	var(Filter) bool          bDifficulty2;  // Appear in difficulty 2.
00235	var(Filter) bool          bDifficulty3;  // Appear in difficulty 3.
00236	var(Filter) bool          bSinglePlayer; // Appear in single player.
00237	var(Filter) bool          bNet;          // Appear in regular network play.
00238	var(Filter) bool          bNetSpecial;   // Appear in special network play mode.
00239	
00240	//-----------------------------------------------------------------------------
00241	// Display properties.
00242	
00243	// Drawing effect.
00244	var(Display) enum EDrawType
00245	{
00246		DT_None,
00247		DT_Sprite,
00248		DT_Mesh,
00249		DT_Brush,
00250		DT_RopeSprite,
00251		DT_VerticalSprite,
00252		DT_SkeletalMesh,
00253		DT_SpriteAnimOnce,
00254		DT_ParticleSystem,
00255	} DrawType;
00256	
00257	// Style for rendering sprites, meshes.
00258	var(Display) enum ERenderStyle
00259	{
00260		STY_None,
00261		STY_Normal,
00262		STY_Masked,
00263		STY_Translucent,
00264		STY_Modulated,
00265		STY_AlphaBlend,
00266	} Style;
00267	
00268	// Other display properties.
00269	var(Display) texture		Sprite;			 // Sprite texture if DrawType=DT_Sprite.
00270	var(Display) texture		Texture;		 // Misc texture.
00271	var(Display) texture		Skin;            // Special skin or enviro map texture.
00272	var(Display) mesh			Mesh;            // Mesh if DrawType=DT_Mesh.
00273	
00274	// RUNE:  Actor shadow variables
00275	var(Display) bool			bHasShadow;		 // RUNE:  Actor casts a dynamic shadow
00276	var	transient shadowtexture	ShadowTexture;	 // RUNE:  Texture that contains the info for the actor shadow
00277	var			 vector			ShadowVector;	 // RUNE:  Shadow Direction (pointed towards actor)
00278	
00279	var const export model		Brush;           // Brush if DrawType=DT_Brush.
00280	var(Display) float			DrawScale;		 // Scaling factor, 1.0=normal size.
00281	var			 vector			PrePivot;		 // Offset from box center for drawing.
00282	var(Display) float			ScaleGlow;		 // Multiplies lighting.
00283	var(Display) float			VisibilityRadius;// Actor is drawn if viewer is within its visibility
00284	var(Display) float			VisibilityHeight;// cylinder.  Zero=infinite visibility.
00285	var(Display) byte			AmbientGlow;     // Ambient brightness, or 255=pulsing.
00286	var(Display) byte			Fatness;         // Fatness (mesh distortion).
00287	var(Display) float			SpriteProjForward;// Distance forward to draw sprite from actual location.
00288	var(Display) vector			ColorAdjust;		// RUNE:  Color adjustment applied to the actor
00289	var(Display) vector			DesiredColorAdjust;	// RUNE:  Smoothly applies the Color adjustment
00290	var(Display) byte			DesiredFatness;		// RUNE:  Desired Fatness to interpolate to
00291	var(Display) float			AlphaScale;		 // RUNE:  Alpha value used in STY_AlphaBlend
00292	
00293	// RUNE LOD variables
00294	var			 int			LODPolyCount;	 // RUNE:  LOD last rendered polycount
00295	var(Display) float			LODDistMax;	     // RUNE:  LOD max distance
00296	var(Display) float			LODDistMin;	     // RUNE:  LOD min distance
00297	var(Display) float			LODPercentMin;	 // RUNE:  LOD min percentage cap
00298	var(Display) float			LODPercentMax;	 // RUNE:  LOD max percentage cap
00299	var(Display) enum			ELODCurve		 // RUNE:  LOD Curve types
00300	{
00301		LOD_CURVE_NONE,
00302		LOD_CURVE_ULTRA_CONSERVATIVE,
00303		LOD_CURVE_CONSERVATIVE,
00304		LOD_CURVE_NORMAL,
00305		LOD_CURVE_AGGRESSIVE,
00306		LOD_CURVE_ULTRA_AGGRESSIVE,
00307		LOD_CURVE_TEST,
00308	} LODCurve;
00309	
00310	// Display.
00311	var(Display)  bool      bUnlit;          // Lights don't affect actor.
00312	var(Display)  bool		bPointLight;	 // RUNE:  Actor is point lit at its centerpoint, rather than directionally lit
00313	var(Display)  bool		bMirrored;       // RUNE:  Actor is mirrored (left-handed)
00314	var(Display)  bool      bNoSmooth;       // Don't smooth actor's texture.
00315	var(Display)  bool      bParticles;      // Mesh is a particle system.
00316	var(Display)  bool      bRandomFrame;    // Particles use a random texture from among the default texture and the multiskins textures
00317	var(Display)  bool      bMeshEnviroMap;  // Environment-map the mesh.
00318	var(Display)  bool      bMeshCurvy;      // Curvy mesh.
00319	var(Display)  bool		bFilterByVolume; // Filter this sprite by its Visibility volume.
00320	var(Display)  bool		bPreLight;		 // RUNE:  This actor has static prelighting computed in the editor
00321	
00322	var(Display)  bool		bComplexOcclusion; // RUNE:  Uses a more complex occlusion method (useful for larger objects)
00323	
00324	// Not yet implemented.
00325	var(Display) bool       bShadowCast;     // Casts shadows.
00326	
00327	// Advanced.
00328	var(Advanced) bool		bGameRelevant;	 // Always relevant for game
00329	var			  bool		bCarriedItem;	 // being carried, and not responsible for displaying self, so don't replicated location and rotation
00330	var			  bool		bForcePhysicsUpdate; // force a physics update for simulated pawns
00331	var(Advanced) bool        bIsSecretGoal; // This actor counts in the "secret" total.
00332	var(Advanced) bool        bIsKillGoal;   // This actor counts in the "death" toll.
00333	var(Advanced) bool        bIsItemGoal;   // This actor counts in the "item" count.
00334	var(Advanced) bool		  bCollideWhenPlacing; // This actor collides with the world when placing.
00335	var(Advanced) bool		  bTravel;       // Actor is capable of travelling among servers.
00336	var(Advanced) bool		  bMovable;      // Actor is capable of travelling among servers.
00337	
00338	var           actor		AttachParent;    // RUNE: Parent actor if bCarriedItem
00339	var           byte      AttachParentJoint;// RUNE: Parent joint index I am attached to
00340	
00341	// Multiple skin support.
00342	var(Display) texture MultiSkins[8];
00343	
00344	//-----------------------------------------------------------------------------
00345	// Sound.
00346	
00347	// Ambient sound.
00348	var(Sound) byte         SoundRadius;	 // Radius of ambient sound.
00349	var(Sound) byte         SoundVolume;	 // Volume of amient sound.
00350	var(Sound) byte         SoundPitch;	     // Sound pitch shift, 64.0=none.
00351	var(Sound) sound        AmbientSound;    // Ambient sound effect.
00352	
00353	// Regular sounds.
00354	var(Sound) float TransientSoundVolume;
00355	var(Sound) float TransientSoundRadius;
00356	
00357	// Sound slots for actors.
00358	enum ESoundSlot
00359	{
00360		SLOT_None,
00361		SLOT_Misc,
00362		SLOT_Pain,
00363		SLOT_Interact,
00364		SLOT_Ambient,
00365		SLOT_Talk,
00366		SLOT_Interface,
00367	};
00368	
00369	// Music transitions.
00370	enum EMusicTransition
00371	{
00372		MTRAN_None,
00373		MTRAN_Instant,
00374		MTRAN_Segue,
00375		MTRAN_Fade,
00376		MTRAN_FastFade,
00377		MTRAN_SlowFade,
00378	};
00379	
00380	//-----------------------------------------------------------------------------
00381	// Collision.
00382	
00383	// Collision size.
00384	var(Collision) const float CollisionRadius; // Radius of collision cyllinder.
00385	var(Collision) const float CollisionHeight; // Half-height cyllinder.
00386	
00387	// Collision flags.
00388	var(Collision) const bool bCollideActors;   // Collides with other actors.
00389	var(Collision) bool       bCollideWorld;    // Collides with the world.
00390	var(Collision) bool       bBlockActors;	    // Blocks other nonplayer actors.
00391	var(Collision) bool       bBlockPlayers;    // Blocks other player actors.
00392	var(Collision) bool       bProjTarget;      // Projectiles should potentially target this actor.
00393	var(Collision) bool       bJointsBlock;		// RUNE:  Collision joints block actors
00394	var(Collision) bool		  bJointsTouch;		// RUNE:  This actor accepts joint touch messages
00395	var(Collision) bool       bSweepable;		// RUNE:  This actor can be hit by weapons
00396	
00397	//-----------------------------------------------------------------------------
00398	// Lighting.
00399	
00400	// Light modulation.
00401	var(Lighting) enum ELightType
00402	{
00403		LT_None,
00404		LT_Steady,
00405		LT_Pulse,
00406		LT_Blink,
00407		LT_Flicker,
00408		LT_Strobe,
00409		LT_BackdropLight,
00410		LT_SubtlePulse,
00411		LT_TexturePaletteOnce,
00412		LT_TexturePaletteLoop
00413	} LightType;
00414	
00415	// Spatial light effect to use.
00416	var(Lighting) enum ELightEffect
00417	{
00418		LE_None,
00419		LE_TorchWaver,
00420		LE_FireWaver,
00421		LE_WateryShimmer,
00422		LE_Searchlight,
00423		LE_SlowWave,
00424		LE_FastWave,
00425		LE_CloudCast,
00426		LE_StaticSpot,
00427		LE_Shock,
00428		LE_Disco,
00429		LE_Warp,
00430		LE_Spotlight,
00431		LE_NonIncidence,
00432		LE_Shell,
00433		LE_OmniBumpMap,
00434		LE_Interference,
00435		LE_Cylinder,
00436		LE_Rotor,
00437		LE_Unused
00438	} LightEffect;
00439	
00440	// Lighting info.
00441	var(LightColor) byte
00442		LightBrightness,
00443		LightHue,
00444		LightSaturation;
00445	
00446	// Light properties.
00447	var(Lighting) byte
00448		LightRadius,
00449		LightPeriod,
00450		LightPhase,
00451		LightCone,
00452		VolumeBrightness,
00453		VolumeRadius,
00454		VolumeFog;
00455	
00456	// Lighting.
00457	var(Lighting) bool	     bSpecialLit;	 // Only affects special-lit surfaces.
00458	var(Lighting) bool	     bSpecialLit2;	 // Only affects special-lit2 surfaces.
00459	var(Lighting) bool	     bSpecialLit3;	 // Only affects special-lit3 surfaces.
00460	var(Lighting) bool	     bActorShadows;  // Light casts actor shadows.
00461	var(Lighting) bool	     bCorona;        // Light uses Skin as a corona.
00462	var(Lighting) bool	     bLensFlare;     // Whether to use zone lens flare.
00463	var(Lighting) bool		 bNegativeLight; // RUNE:  This light is merged negatively (darklight)
00464	var(Lighting) bool		 bAffectWorld;	 // RUNE:  This light affects the world
00465	var(Lighting) bool	     bAffectActors;  // RUNE:  This light affects actors
00466	
00467	//-----------------------------------------------------------------------------
00468	// Physics.
00469	
00470	// Options.
00471	var(Movement) bool        bBounce;           // Bounces when hits ground fast.
00472	var(Movement) bool		  bFixedRotationDir; // Fixed direction of rotation.
00473	var(Movement) bool		  bRotateToDesired;  // Rotate to DesiredRotation.
00474	var           bool        bInterpolating;    // Performing interpolating.
00475	var			  const bool  bJustTeleported;   // Used by engine physics - not valid for scripts.
00476	
00477	// Dodge move direction.
00478	var enum EDodgeDir
00479	{
00480		DODGE_None,
00481		DODGE_Left,
00482		DODGE_Right,
00483		DODGE_Forward,
00484		DODGE_Back,
00485		DODGE_Active,
00486		DODGE_Done
00487	} DodgeDir;
00488	
00489	// Physics properties.
00490	var(Movement) float       Mass;            // Mass of this actor.
00491	var(Movement) float       Buoyancy;        // Water buoyancy.
00492	var(Movement) rotator	  RotationRate;    // Change in rotation per second.
00493	var(Movement) rotator     DesiredRotation; // Physics will rotate pawn to this if bRotateToDesired.
00494	var           float       PhysAlpha;       // Interpolating position, 0.0-1.0.
00495	var           float       PhysRate;        // Interpolation rate per second.
00496	var			  Actor		  PendingTouch;		// Actor touched during move which wants to add an effect after the movement completes 
00497	
00498	//-----------------------------------------------------------------------------
00499	// Animation.
00500	
00501	// Animation control.
00502	var          float        AnimLast;        // Last frame.
00503	var          float        AnimMinRate;     // Minimum rate for velocity-scaled animation.
00504	var			 float		  OldAnimRate;	   // Animation rate of previous animation (= AnimRate until animation completes).
00505	var			 plane		  SimAnim;		   // replicated to simulated proxies.
00506	
00507	//-----------------------------------------------------------------------------
00508	// Networking.
00509	
00510	// Network control.
00511	var(Networking) float NetPriority; // Higher priorities means update it more frequently.
00512	var(Networking) float NetUpdateFrequency; // How many seconds between net updates.
00513	
00514	// Symmetric network flags, valid during replication only.
00515	var const bool bNetInitial;       // Initial network update.
00516	var const bool bNetOwner;         // Player owns this actor.
00517	var const bool bNetRelevant;      // Actor is currently relevant. Only valid server side, only when replicating variables.
00518	var const bool bNetSee;           // Player sees it in network play.
00519	var const bool bNetHear;          // Player hears it in network play.
00520	var const bool bNetFeel;          // Player collides with/feels it in network play.
00521	var const bool bSimulatedPawn;	  // True if Pawn and simulated proxy.
00522	var const bool bDemoRecording;	  // True we are currently demo recording
00523	var const bool bClientDemoRecording;// True we are currently recording a client-side demo
00524	var const bool bClientDemoNetFunc;// True if we're client-side demo recording and this call originated from the remote.
00525	
00526	//-----------------------------------------------------------------------------
00527	// Skeletal Support Variables
00528	//-----------------------------------------------------------------------------
00529	
00530	// joint flags
00531	const JOINT_FLAG_BLENDJOINT		= 0x01;
00532	const JOINT_FLAG_ACCELERATIVE	= 0x02;
00533	const JOINT_FLAG_SPRINGPOINT	= 0x04;
00534	const JOINT_FLAG_IKCHAIN		= 0x08;
00535	const JOINT_FLAG_COLLISION		= 0x10;
00536	const JOINT_FLAG_ABSPOSITION	= 0x20;
00537	const JOINT_FLAG_ABSROTATION	= 0x40;
00538	const JOINT_FLAG_GRAVJOINT		= 0x80;
00539	const NUM_JOINT_FLAGS			= 8;
00540	
00541	const POLYFLAG_INVISIBLE	= 0x01;
00542	const POLYFLAG_MASKED		= 0x02;
00543	const POLYFLAG_TRANSLUCENT	= 0x04;
00544	const POLYFLAG_ENVIRONMENT	= 0x10;
00545	const POLYFLAG_MODULATED	= 0x40;
00546	
00547	var(Movement) bool           bNoSurfaceBob;     // Don't bob on water surface (can't jump out of water either)
00548	var(Skeleton) bool           bDrawSkel;         // Draw the skeleton
00549	var(Skeleton) bool           bDrawJoints;       // Draw collision joints
00550	var(Skeleton) bool           bDrawAxes;         // Draw rotational axes
00551	var(Skeleton) bool           bApplyLagToAccelerators;	// Apply -Velocity to accelerators
00552	var(Skeleton) byte           SkelMesh;	        // index of skeletal mesh
00553	var(Skeleton) SkelModel      Skeletal;          // Skeletal Mesh if DrawType = DT_SkeletalMesh
00554	var(Skeleton) SkelModel		 SubstituteMesh;	// RUNE:  Use this mesh/texture, but use the anims from Skeletal
00555	var(Skeleton) float          BlendAnimAlpha;    // Alpha value for blending animation with BlendAnimFrame
00556	var(Skeleton) float          BlendAnimFrame;    // Frame to blend with current animation
00557	var(Skeleton) name           BlendAnimSequence; // Sequence to blend with current animation
00558	var           AnimationProxy AnimProxy;			// Animation group controller actor (spawned in SpawnAnimationProxyX())
00559	var(Skeleton) Texture        SkelGroupSkins[16];// Poly group skins
00560	var(Skeleton) int            SkelGroupFlags[16];// Poly group properties
00561	var           byte           JointFlags[50];    // Joint properties
00562	var           actor		     JointChild[50];    // Children of joints
00563	
00564	//-----------------------------------------------------------------------------
00565	// Enums.
00566	
00567	// Travelling from server to server.
00568	enum ETravelType
00569	{
00570		TRAVEL_Absolute,	// Absolute URL.
00571		TRAVEL_Partial,		// Partial (carry name, reset server).
00572		TRAVEL_Relative,	// Relative URL.
00573	};
00574	
00575	// Input system states.
00576	enum EInputAction
00577	{
00578		IST_None,    // Not performing special input processing.
00579		IST_Press,   // Handling a keypress or button press.
00580		IST_Hold,    // Handling holding a key or button.
00581		IST_Release, // Handling a key or button release.
00582		IST_Axis,    // Handling analog axis movement.
00583	};
00584	
00585	// Input keys.
00586	enum EInputKey
00587	{
00588	/*00*/	IK_None			,IK_LeftMouse	,IK_RightMouse	,IK_Cancel		,
00589	/*04*/	IK_MiddleMouse	,IK_Unknown05	,IK_Unknown06	,IK_Unknown07	,
00590	/*08*/	IK_Backspace	,IK_Tab         ,IK_Unknown0A	,IK_Unknown0B	,
00591	/*0C*/	IK_Unknown0C	,IK_Enter	    ,IK_Unknown0E	,IK_Unknown0F	,
00592	/*10*/	IK_Shift		,IK_Ctrl	    ,IK_Alt			,IK_Pause       ,
00593	/*14*/	IK_CapsLock		,IK_Unknown15	,IK_Unknown16	,IK_Unknown17	,
00594	/*18*/	IK_Unknown18	,IK_Unknown19	,IK_Unknown1A	,IK_Escape		,
00595	/*1C*/	IK_Unknown1C	,IK_Unknown1D	,IK_Unknown1E	,IK_Unknown1F	,
00596	/*20*/	IK_Space		,IK_PageUp      ,IK_PageDown    ,IK_End         ,
00597	/*24*/	IK_Home			,IK_Left        ,IK_Up          ,IK_Right       ,
00598	/*28*/	IK_Down			,IK_Select      ,IK_Print       ,IK_Execute     ,
00599	/*2C*/	IK_PrintScrn	,IK_Insert      ,IK_Delete      ,IK_Help		,
00600	/*30*/	IK_0			,IK_1			,IK_2			,IK_3			,
00601	/*34*/	IK_4			,IK_5			,IK_6			,IK_7			,
00602	/*38*/	IK_8			,IK_9			,IK_Unknown3A	,IK_Unknown3B	,
00603	/*3C*/	IK_Unknown3C	,IK_Unknown3D	,IK_Unknown3E	,IK_Unknown3F	,
00604	/*40*/	IK_Unknown40	,IK_A			,IK_B			,IK_C			,
00605	/*44*/	IK_D			,IK_E			,IK_F			,IK_G			,
00606	/*48*/	IK_H			,IK_I			,IK_J			,IK_K			,
00607	/*4C*/	IK_L			,IK_M			,IK_N			,IK_O			,
00608	/*50*/	IK_P			,IK_Q			,IK_R			,IK_S			,
00609	/*54*/	IK_T			,IK_U			,IK_V			,IK_W			,
00610	/*58*/	IK_X			,IK_Y			,IK_Z			,IK_Unknown5B	,
00611	/*5C*/	IK_Unknown5C	,IK_Unknown5D	,IK_Unknown5E	,IK_Unknown5F	,
00612	/*60*/	IK_NumPad0		,IK_NumPad1     ,IK_NumPad2     ,IK_NumPad3     ,
00613	/*64*/	IK_NumPad4		,IK_NumPad5     ,IK_NumPad6     ,IK_NumPad7     ,
00614	/*68*/	IK_NumPad8		,IK_NumPad9     ,IK_GreyStar    ,IK_GreyPlus    ,
00615	/*6C*/	IK_Separator	,IK_GreyMinus	,IK_NumPadPeriod,IK_GreySlash   ,
00616	/*70*/	IK_F1			,IK_F2          ,IK_F3          ,IK_F4          ,
00617	/*74*/	IK_F5			,IK_F6          ,IK_F7          ,IK_F8          ,
00618	/*78*/	IK_F9           ,IK_F10         ,IK_F11         ,IK_F12         ,
00619	/*7C*/	IK_F13			,IK_F14         ,IK_F15         ,IK_F16         ,
00620	/*80*/	IK_F17			,IK_F18         ,IK_F19         ,IK_F20         ,
00621	/*84*/	IK_F21			,IK_F22         ,IK_F23         ,IK_F24         ,
00622	/*88*/	IK_Unknown88	,IK_Unknown89	,IK_Unknown8A	,IK_Unknown8B	,
00623	/*8C*/	IK_Unknown8C	,IK_Unknown8D	,IK_Unknown8E	,IK_Unknown8F	,
00624	/*90*/	IK_NumLock		,IK_ScrollLock  ,IK_Unknown92	,IK_Unknown93	,
00625	/*94*/	IK_Unknown94	,IK_Unknown95	,IK_Unknown96	,IK_Unknown97	,
00626	/*98*/	IK_Unknown98	,IK_Unknown99	,IK_Unknown9A	,IK_Unknown9B	,
00627	/*9C*/	IK_Unknown9C	,IK_Unknown9D	,IK_Unknown9E	,IK_Unknown9F	,
00628	/*A0*/	IK_LShift		,IK_RShift      ,IK_LControl    ,IK_RControl    ,
00629	/*A4*/	IK_UnknownA4	,IK_UnknownA5	,IK_UnknownA6	,IK_UnknownA7	,
00630	/*A8*/	IK_UnknownA8	,IK_UnknownA9	,IK_UnknownAA	,IK_UnknownAB	,
00631	/*AC*/	IK_UnknownAC	,IK_UnknownAD	,IK_UnknownAE	,IK_UnknownAF	,
00632	/*B0*/	IK_UnknownB0	,IK_UnknownB1	,IK_UnknownB2	,IK_UnknownB3	,
00633	/*B4*/	IK_UnknownB4	,IK_UnknownB5	,IK_UnknownB6	,IK_UnknownB7	,
00634	/*B8*/	IK_UnknownB8	,IK_UnknownB9	,IK_Semicolon	,IK_Equals		,
00635	/*BC*/	IK_Comma		,IK_Minus		,IK_Period		,IK_Slash		,
00636	/*C0*/	IK_Tilde		,IK_UnknownC1	,IK_UnknownC2	,IK_UnknownC3	,
00637	/*C4*/	IK_UnknownC4	,IK_UnknownC5	,IK_UnknownC6	,IK_UnknownC7	,
00638	/*C8*/	IK_Joy1	        ,IK_Joy2	    ,IK_Joy3	    ,IK_Joy4	    ,
00639	/*CC*/	IK_Joy5	        ,IK_Joy6	    ,IK_Joy7	    ,IK_Joy8	    ,
00640	/*D0*/	IK_Joy9	        ,IK_Joy10	    ,IK_Joy11	    ,IK_Joy12		,
00641	/*D4*/	IK_Joy13		,IK_Joy14	    ,IK_Joy15	    ,IK_Joy16	    ,
00642	/*D8*/	IK_UnknownD8	,IK_UnknownD9	,IK_UnknownDA	,IK_LeftBracket	,
00643	/*DC*/	IK_Backslash	,IK_RightBracket,IK_SingleQuote	,IK_UnknownDF	,
00644	/*E0*/  IK_JoyX			,IK_JoyY		,IK_JoyZ		,IK_JoyR		,
00645	/*E4*/	IK_MouseX		,IK_MouseY		,IK_MouseZ		,IK_MouseW		,
00646	/*E8*/	IK_JoyU			,IK_JoyV		,IK_UnknownEA	,IK_UnknownEB	,
00647	/*EC*/	IK_MouseWheelUp ,IK_MouseWheelDown,IK_Unknown10E,UK_Unknown10F  ,
00648	/*F0*/	IK_JoyPovUp     ,IK_JoyPovDown	,IK_JoyPovLeft	,IK_JoyPovRight	,
00649	/*F4*/	IK_UnknownF4	,IK_UnknownF5	,IK_Attn		,IK_CrSel		,
00650	/*F8*/	IK_ExSel		,IK_ErEof		,IK_Play		,IK_Zoom		,
00651	/*FC*/	IK_NoName		,IK_PA1			,IK_OEMClear
00652	};
00653	
00654	var(Display) class<RenderIterator> RenderIteratorClass;	// class to instantiate as the actor's RenderInterface
00655	var transient RenderIterator RenderInterface;		// abstract iterator initialized in the Rendering engine
00656	
00657	//-----------------------------------------------------------------------------
00658	// natives.
00659	
00660	// Execute a console command in the context of the current level and game engine.
00661	native function string ConsoleCommand( string Command );
00662	
00663	
00664	//=============================================================================
00665	// Skeletal Support (natives 600-700)
00666	//=============================================================================
00667	native(602) final function Vector	GetJointPos(int joint);
00668	native(603) final function Rotator	GetJointRot(int joint);
00669	//native(604)
00670	native(605) final function string	GetJointName(int joint);
00671	//native(606)
00672	//native(607)
00673	native(608) final function			ApplyJointForce(int joint, Vector force);
00674	native(609) final function int		NumJoints();
00675	native(610) final function			SetDefaultPolygroups();
00676	native(611) final function			SetDefaultJointFlags();
00677	//native(612)
00678	native(613) final function			AttachActorToJoint(Actor a, int j);
00679	native(614) final function actor	DetachActorFromJoint(int j);
00680	//native(615)
00681	native(616) final function			TurnJointTo(int joint, Rotator rot);
00682	native(617) final function actor	ActorAttachedTo(int joint);
00683	native(618) final function int		ClosestJointTo(Vector point);
00684	native(619) final function int		JointNamed(name jointname);
00685	native(620) final function			ResetAnimationCache(name seq);
00686	native(621) final function			SetJointRot(int joint, Rotator rot);
00687	native(622) final function			FrameSweep(int curframe, vector weaponvect, out vector lastB1, out vector lastE1);
00688	
00689	event FrameSwept(vector B1, vector E1, vector B2, vector E2);
00690	event FrameNotify(int framepassed);
00691	
00692	simulated event GetSpringJointParms(int joint, out float DampFactor, out float SpringConstant, out vector SpringThreshold)
00693	{
00694		DampFactor = 1.0;
00695		SpringConstant = 20;
00696		SpringThreshold = vect(100,100,100);
00697	}
00698	
00699	simulated event GetAccelJointParms(int joint, out float DampFactor, out float RotThreshold)
00700	{
00701		DampFactor = 1.0;
00702		RotThreshold = 2000;
00703	}
00704	
00705	simulated event float GetAccelJointMagnitude(int joint)
00706	{
00707		return 5000;
00708	}
00709	
00710	// --New natives reserved number list
00711	// Skeletal Support				600-649
00712	// Accelerators use				650-659
00713	// Actor::Release/Wait 			660-661
00714	// Object::VSize2D				662
00715	// Actor::CalcArcVelocity		663
00716	// Pawn::NearestNavPoint		664
00717	// Pawn::CloserNavPointTo		665
00718	// Actor::TraceTexture			666
00719	// Actor::LipSyncString			667
00720	// Polyobj::GetCollisionRadius	668
00721	// Polyobj::GetTexture			669
00722	// Pawn::Look					670
00723	
00724	
00725	native(660) final latent function WaitForRelease();		// Wait to be released
00726	native(661) final function Release();					// Release an actor from waiting
00727	native(663) final function Vector CalcArcVelocity(int trajectory, vector src, vector dst);
00728	
00729	final function ReleaseTagged(name tag)
00730	{
00731		local actor A;
00732		foreach AllActors(class'actor',A,tag)
00733			A.Release();
00734	}
00735	
00736	event TouchJointOf  (Actor Other, int joint);	// Actor touched joint of Other during Movement
00737	event JointTouchedBy(Actor Other, int joint);	// Actor's joint touched by Other during Movement
00738	
00739	// 3 directions: 0=no dir change, sign=dir mag=velocity, PosOffset of spring joint
00740	event JointChangedDirection(int joint, vector Direction, vector PosOffset);
00741	
00742	function Texture PainSkin(int BodyPart)
00743	{
00744	//	SLog("Default painskin on"@Name$"!");
00745		return Texture'engine.s_actor';
00746	}
00747	
00748	function int BodyPartForJoint(int joint)
00749	{
00750		return BODYPART_BODY;
00751	}
00752	
00753	function bool DamageBodyPart(int Damage, Pawn EventInstigator, vector HitLocation, vector Momentum, name DamageType, int BodyPart)
00754	{
00755		return(true);
00756	}
00757	
00758	// All damage functionality comes through this instead of TakeDamage()
00759	// Returns true if the swipe can continue through this joint, false if the swipe should stop
00760	event bool JointDamaged(int Damage, Pawn EventInstigator, vector HitLoc, vector Momentum, name DamageType, int joint)
00761	{
00762		local int BodyPart;
00763		
00764		BodyPart = BodyPartForJoint(joint);
00765	
00766		if (DamageType == 'fire')
00767		{	// Light on fire
00768			SetOnFire(EventInstigator, joint);
00769		}
00770		
00771		return(DamageBodyPart(Damage, EventInstigator, HitLoc, Momentum, DamageType, BodyPart));
00772	}
00773	
00774	function SetOnFire(Pawn EventInstigator, int Joint);
00775	
00776	
00777	//============================================================
00778	//
00779	// ApplyDamageToActor
00780	//
00781	//============================================================
00782	function ApplyDamageToActor(int amount, name DamageType, Pawn EventInstigator, actor victim, vector Location, vector Momentum, int joint)
00783	{
00784		victim.JointDamaged(amount, EventInstigator, Location, Momentum, DamageType, joint);
00785	}
00786	
00787	//============================================================
00788	//
00789	// GetDamageValues
00790	//
00791	//============================================================
00792	function GetDamageValues(int Damage, name DamageType, out int BluntDamage, out int SeverDamage)
00793	{
00794		switch(DamageType)
00795		{
00796			case 'fire':
00797				BluntDamage = Damage;
00798				break;
00799			case 'blunt':
00800				BluntDamage = Damage;
00801				SeverDamage = 0;
00802				break;
00803			case 'sever':
00804				BluntDamage = 0;
00805				SeverDamage = Damage;
00806				break;
00807			case 'bluntsever':
00808			default:
00809				BluntDamage = 0.5 * Damage;
00810				SeverDamage = 0.5 * Damage;
00811				break;
00812		}
00813	}
00814	
00815	//============================================================
00816	//
00817	// MatterForJoint
00818	//
00819	// Returns what kind of material joint is associated with
00820	//============================================================
00821	function EMatterType MatterForJoint(int joint)
00822	{
00823		return MATTER_NONE;
00824	}
00825	
00826	//============================================================
00827	//
00828	// MatterTrace
00829	//
00830	// Returns the material struck by a traceline
00831	// This routine is used by the weapon sweep code, which
00832	// passes in HitLoc (for end).  Since HitLoc of obtained 
00833	// through a volumetric trace (and TraceTexture is a line
00834	// trace), this routine fudges the end point out a bit
00835	// to adjust for the volumetric trace
00836	// 
00837	// Additionally, if offset is nonzero, this trace function uses
00838	// the offset value to fudge a bit to find the texture hit
00839	// by the trace
00840	//============================================================
00841	
00842	function EMatterType MatterTrace(vector end, vector start, optional float offset, optional out texture hitTexture)
00843	{
00844		local vector adjust;
00845		local texture tex;
00846		local int Flags;
00847		local vector ScrollDir;
00848	
00849		adjust = start + (end - start) * 1.5;
00850		tex = TraceTexture(adjust, start, Flags, ScrollDir);
00851	
00852		if(tex == NONE && offset > 0)
00853		{ // Trace a bit to the left
00854			adjust.X -= offset;
00855			tex = TraceTexture(adjust, start, Flags, ScrollDir);
00856			if(tex == NONE)
00857			{ // Trace a bit to the right
00858				adjust.X += offset * 2;
00859				tex = TraceTexture(adjust, start, Flags, ScrollDir);
00860				if(tex == NONE)
00861				{ // Trace a bit to the north
00862					adjust.X -= offset;
00863					adjust.Y -= offset;
00864					tex = TraceTexture(adjust, start, Flags, ScrollDir);
00865					if(tex == NONE)
00866					{ // Trace a bit to the south
00867						adjust.Y += offset * 2;
00868						tex = TraceTexture(adjust, start, Flags, ScrollDir);
00869						if(tex == NONE)
00870						{ // Trace a bit down
00871							adjust.Y -= offset;
00872							adjust.Z -= offset;
00873							tex = TraceTexture(adjust, start, Flags, ScrollDir);
00874							if(tex == NONE)
00875							{ // Trace a bit up
00876								adjust.Z += offset * 2;
00877								tex = TraceTexture(adjust, start, Flags, ScrollDir);
00878							}
00879						}
00880					}
00881				}
00882			}
00883		}
00884	
00885		hitTexture = tex;
00886	
00887		if(tex != None)
00888		{
00889			return(tex.TextureMaterial);
00890		}
00891	
00892		return(MATTER_NONE);
00893	}
00894	
00895	function AddVelocity(vector NewVelocity)
00896	{
00897	}
00898	
00899	//-----------------------------------------------------------------------------
00900	// Network replication.
00901	
00902	replication
00903	{
00904		// NEW ACTOR VARIABLES NOT YET REPLICATED:
00905		/*
00906			//server only stuff
00907			var(Collision) bool       bSweepable;		// RUNE:  This actor can be hit by weapons
00908			var           byte      AttachParentJoint;// RUNE: Parent joint index I am attached to
00909	
00910			//set client side
00911			var			 int			LODPolyCount;	 // RUNE:  LOD last rendered polycount
00912			var(Display) float			LODDistMax;	     // RUNE:  LOD max distance
00913			var(Display) float			LODDistMin;	     // RUNE:  LOD min distance
00914			var(Display) float			LODPercentMin;	 // RUNE:  LOD min percentage cap
00915			var(Display) float			LODPercentMax;	 // RUNE:  LOD max percentage cap
00916			var(Display) enum			ELODCurve		 // RUNE:  LOD Curve types
00917			var			 shadowtexture	Shadow;			 // RUNE:  ShadowTexture
00918			var			 vector			ShadowVector;	 // RUNE:  Shadow Direction (pointed towards actor)
00919	
00920			//unknown
00921			var byte				  BaseJoint;	 // RUNE:  If the Base has bJointsBlock, this contains the joint index
00922			var EMatterType			  BaseMatterType; // RUNE:  The matter associated with the base
00923			var Vector				  BaseScrollDir; // RUNE:  Scroll direction associated with the base
00924			var(Display)  bool		bPointLight;	 // RUNE:  Actor is point lit at its centerpoint, rather than directionally lit
00925			var(Movement) bool           bNoSurfaceBob;     // Don't bob on water surface (can't jump out of water either)
00926			var(Skeleton) bool           bApplyLagToAccelerators;	// Apply -Velocity to accelerators
00927		*/
00928	
00929		// Relationships.
00930		unreliable if( Role==ROLE_Authority )
00931			Owner, Role, RemoteRole;
00932		unreliable if( bNetOwner && Role==ROLE_Authority )
00933			bNetOwner, Inventory;
00934		unreliable if( bReplicateInstigator && (RemoteRole>=ROLE_SimulatedProxy) && (Role==ROLE_Authority) )
00935			Instigator;
00936		unreliable if( Role==ROLE_Authority )
00937			AnimProxy;
00938	
00939		// Ambient sound.
00940		unreliable if( (Role==ROLE_Authority) && (!bNetOwner || !bClientAnim) )
00941			AmbientSound;
00942		unreliable if( AmbientSound!=None && Role==ROLE_Authority  && (!bNetOwner || !bClientAnim) )
00943			SoundRadius, SoundVolume, SoundPitch;
00944		unreliable if( bDemoRecording )
00945			DemoPlaySound;
00946	
00947		// Collision.
00948		unreliable if( Role==ROLE_Authority )
00949			bCollideActors, bCollideWorld;
00950		unreliable if( (bCollideActors || bCollideWorld) && Role==ROLE_Authority )
00951			bProjTarget, bBlockActors, bBlockPlayers, CollisionRadius, CollisionHeight;
00952		unreliable if( Role==ROLE_Authority && DrawType==DT_SkeletalMesh )
00953			bJointsBlock, bJointsTouch, JointFlags;
00954	
00955		// Location.
00956		unreliable if( !bCarriedItem && (bNetInitial || bSimulatedPawn || RemoteRole<ROLE_SimulatedProxy) && Role==ROLE_Authority )
00957			Location;
00958		unreliable if( !bCarriedItem && (DrawType==DT_Mesh || DrawType==DT_SkeletalMesh || DrawType==DT_Brush || DrawType == DT_VerticalSprite) && (bNetInitial || bSimulatedPawn || RemoteRole<ROLE_SimulatedProxy) && Role==ROLE_Authority )
00959			Rotation;
00960		unreliable if( RemoteRole==ROLE_SimulatedProxy )
00961			Base;
00962	
00963		// Velocity.
00964		unreliable if( bSimFall || ((RemoteRole==ROLE_SimulatedProxy && (bNetInitial || bSimulatedPawn)) || bIsMover) )
00965			Velocity;
00966	
00967		// Physics.
00968		unreliable if( bSimFall || (RemoteRole==ROLE_SimulatedProxy && bNetInitial && !bSimulatedPawn) )
00969			Physics, Acceleration, bBounce;
00970		unreliable if( RemoteRole==ROLE_SimulatedProxy && Physics==PHYS_Rotating && bNetInitial )
00971			bFixedRotationDir, bRotateToDesired, RotationRate, DesiredRotation;
00972	
00973		// Animation. 
00974		unreliable if((DrawType==DT_Mesh || DrawType == DT_SkeletalMesh || AnimationProxy(self)!=None) &&
00975			((RemoteRole<=ROLE_SimulatedProxy && (!bNetOwner || !bClientAnim)) || bDemoRecording) )
00976			AnimSequence, SimAnim, AnimMinRate, bAnimNotify;
00977	
00978		// Rendering.
00979		unreliable if( Role==ROLE_Authority )
00980			bHidden, bOnlyOwnerSee, bCarriedItem;
00981		unreliable if( Role==ROLE_Authority )
00982			Texture, DrawScale, DrawType, Style;
00983		unreliable if( Role==ROLE_Authority && Style==STY_AlphaBlend)
00984			AlphaScale;
00985		unreliable if( DrawType==DT_Sprite && !bHidden && (!bOnlyOwnerSee || bNetOwner) && Role==ROLE_Authority)
00986			Sprite;
00987		unreliable if( DrawType==DT_Mesh && Role==ROLE_Authority )
00988			Mesh, Skin, MultiSkins, Fatness;
00989		unreliable if( DrawType==DT_SkeletalMesh || DrawType==DT_Mesh)
00990			PrePivot, bMeshEnviroMap;
00991		unreliable if( DrawType!=DT_None )
00992			AmbientGlow, ScaleGlow, bUnlit;
00993		unreliable if( DrawType==DT_Brush && Role==ROLE_Authority )
00994			Brush;
00995		unreliable if( Role==ROLE_Authority && DrawType==DT_SkeletalMesh)
00996			Skeletal, SkelMesh, SkelGroupSkins, SkelGroupFlags, JointChild, bHasShadow,
00997			BlendAnimAlpha, BlendAnimFrame, BlendAnimSequence, DesiredColorAdjust, DesiredFatness,
00998			LODDistMax, LODDistMin, LODPercentMin, LODPercentMax, LODCurve,
00999			bDrawSkel, bDrawJoints, bDrawAxes,
01000			SubstituteMesh, // RUNE:  substitute mesh code
01001			// Mirrored support
01002			AttachParent, bMirrored;
01003	//	unreliable if( Role==ROLE_Authority && (DrawType==DT_SkeletalMesh || DrawType==DT_Sprite || DrawType==DT_ParticleSystem))
01004	//		AttachParent;
01005	
01006		// Lighting.
01007		unreliable if( Role==ROLE_Authority )
01008			LightType;
01009		unreliable if( LightType!=LT_None && Role==ROLE_Authority )
01010			LightEffect, LightBrightness, LightHue, LightSaturation,
01011			LightRadius, LightPeriod, LightPhase,
01012			VolumeBrightness, VolumeRadius,
01013			bSpecialLit, bSpecialLit2, bSpecialLit3,
01014			bNegativeLight, bAffectWorld, bAffectActors;
01015	
01016		// Properties
01017		unreliable if( Role==ROLE_Authority )
01018			bLookFocusPlayer, bLookFocusCreature;
01019	
01020		// Messages
01021		reliable if( Role<ROLE_Authority )
01022			BroadcastMessage, BroadcastLocalizedMessage;
01023	}
01024	
01025	//=============================================================================
01026	// Actor error handling.
01027	
01028	// Handle an error and kill this one actor.
01029	native(233) final function Error( coerce string S );
01030	
01031	//=============================================================================
01032	// General functions.
01033	
01034	// Latent functions.
01035	native(256) final latent function Sleep( float Seconds );
01036	
01037	// Collision.
01038	native(262) final function SetCollision( optional bool NewColActors, optional bool NewBlockActors, optional bool NewBlockPlayers );
01039	native(283) final function bool SetCollisionSize( float NewRadius, float NewHeight );
01040	
01041	// Movement.
01042	native(266) final function bool Move( vector Delta );
01043	native(267) final function bool SetLocation( vector NewLocation );
01044	native(299) final function bool SetRotation( rotator NewRotation );
01045	native(3969) final function bool MoveSmooth( vector Delta );
01046	native(3971) final function AutonomousPhysics(float DeltaSeconds);
01047	
01048	// Relations.
01049	native(298) final function SetBase( actor NewBase );
01050	native(272) final function SetOwner( actor NewOwner );
01051	
01052	//=============================================================================
01053	// Animation.
01054	
01055	// Animation functions.
01056	native(259) final function PlayAnim( name Sequence, optional float Rate, optional float TweenTime );
01057	native(260) final function LoopAnim( name Sequence, optional float Rate, optional float TweenTime, optional float MinRate );
01058	native(294) final function TweenAnim( name Sequence, float Time );
01059	native(282) final function bool IsAnimating();
01060	native(293) final function name GetAnimGroup( name Sequence );
01061	native(261) final latent function FinishAnim();
01062	native(263) final function bool HasAnim( name Sequence );
01063	
01064	// Animation notifications.
01065	event AnimEnd();
01066	event AnimProxyEnd();
01067	
01068	function PlayStabRemove()
01069	{
01070	}
01071	
01072	//=========================================================================
01073	// Physics.
01074	
01075	// Physics control.
01076	native(301) final latent function FinishInterpolation();
01077	native(3970) final function SetPhysics( EPhysics newPhysics );
01078	
01079	
01080	
01081	//=============================================================================
01082	// Engine notification functions.
01083	
01084	//
01085	// Major notifications.
01086	//
01087	event Spawned();
01088	event Expired();
01089	event GainedChild( Actor Other );
01090	event LostChild( Actor Other );
01091	event Tick( float DeltaTime );
01092	event Destroyed()
01093	{
01094		UnlinkAttachments();
01095		DestroyAnimationProxy();
01096	}
01097	
01098	function UnlinkAttachments()
01099	{
01100		local int ix, numberjoints;
01101		local actor A;
01102	
01103		// Remove any attachments
01104		if (Skeletal != None)
01105		{
01106			numberjoints = NumJoints();
01107			for (ix=0; ix<numberjoints; ix++)
01108			{
01109				A = DetachActorFromJoint(ix);
01110				if (A != None && PlayerPawn(A)==None)
01111				{
01112					//slog("  removing"@A.name@"from"@name);
01113					A.Destroy();
01114				}
01115			}
01116		}
01117	
01118		// Detach from any parent actors
01119		if (bCarriedItem)
01120		{
01121			//slog("  detaching"@name@"from parent"@AttachParent@"joint"@AttachParentJoint);
01122			if (AttachParent != None)
01123				AttachParent.DetachActorFromJoint(AttachParentJoint);
01124		}
01125	}
01126	
01127	//
01128	// Triggers.
01129	//
01130	event Trigger( Actor Other, Pawn EventInstigator );
01131	event UnTrigger( Actor Other, Pawn EventInstigator );
01132	event BeginEvent();
01133	event EndEvent();
01134	function FireEvent(name TheEvent)
01135	{
01136		local actor A;
01137		if( TheEvent != '' )
01138			foreach AllActors( class 'Actor', A, TheEvent )
01139				A.Trigger(self, Instigator);
01140	}
01141	
01142	// -------------------------------------------------------
01143	//
01144	// UseTrigger
01145	//
01146	// Other "used" me, return true if use message eaten
01147	// -------------------------------------------------------
01148	event bool UseTrigger(Actor Other)
01149	{
01150		return false;
01151	}
01152	
01153	//
01154	// Physics & world interaction.
01155	//
01156	event Timer();
01157	event HitWall( vector HitNormal, actor HitWall );
01158	event Falling();
01159	event Landed( vector HitNormal, actor HitActor );
01160	event ZoneChange( ZoneInfo NewZone );
01161	event Touch( Actor Other );
01162	event PostTouch( Actor Other ); // called for PendingTouch actor after physics completes
01163	event UnTouch( Actor Other );
01164	event Bump( Actor Other );
01165	event BaseChange();
01166	event Attach( Actor Other );
01167	event Detach( Actor Other );
01168	event KillCredit( Actor Other );
01169	event Actor SpecialHandling(Pawn Other);
01170	event bool EncroachingOn( actor Other );
01171	event EncroachedBy( actor Other );
01172	event InterpolateEnd( actor Other );
01173	event EndedRotation();
01174	
01175	event FellOutOfWorld()
01176	{
01177		UnlinkAttachments();
01178		SetPhysics(PHYS_None);
01179		Destroy();
01180	}	
01181	
01182	//
01183	// Damage and kills.
01184	//
01185	event KilledBy( pawn EventInstigator );
01186	event TakeDamage( int Damage, Pawn EventInstigator, vector HitLocation, vector Momentum, name DamageType)
01187	{
01188		JointDamaged(Damage, EventInstigator, HitLocation, Momentum, DamageType, 0);
01189	}
01190	
01191	//
01192	// Trace a line and see what it collides with first.
01193	// Takes this actor's collision properties into account.
01194	// Returns first hit actor, Level if hit level, or None if hit nothing.
01195	//
01196	native(277) final function Actor Trace
01197	(
01198		out vector      HitLocation,
01199		out vector      HitNormal,
01200		vector          TraceEnd,
01201		optional vector TraceStart,
01202		optional bool   bTraceActors,
01203		optional vector Extent
01204	);
01205	
01206	// returns true if did not hit world geometry
01207	native(548) final function bool FastTrace
01208	(
01209		vector          TraceEnd,
01210		optional vector TraceStart
01211	);
01212	
01213	// RUNE
01214	// Returns the texture from a given traceline (ALWAYS has an extent of (0, 0, 0))
01215	native(666) final function Texture TraceTexture(vector TraceEnd, vector TraceStart, out int Flags, out vector ScrollDir);
01216	
01217	//
01218	// Spawn an actor. Returns an actor of the specified class, not
01219	// of class Actor (this is hardcoded in the compiler). Returns None
01220	// if the actor could not be spawned (either the actor wouldn't fit in
01221	// the specified location, or the actor list is full).
01222	// Defaults to spawning at the spawner's location.
01223	//
01224	native(278) final function actor Spawn
01225	(
01226		class<actor>      SpawnClass,
01227		optional actor	  SpawnOwner,
01228		optional name     SpawnTag,
01229		optional vector   SpawnLocation,
01230		optional rotator  SpawnRotation
01231	);
01232	
01233	//
01234	// Destroy this actor. Returns true if destroyed, false if indestructable.
01235	// Destruction is latent. It occurs at the end of the tick.
01236	//
01237	native(279) final function bool Destroy();
01238	
01239	//=============================================================================
01240	// Timing.
01241	
01242	// Causes Timer() events every NewTimerRate seconds.
01243	native(280) final function SetTimer( float NewTimerRate, bool bLoop );
01244	
01245	//=============================================================================
01246	// Sound functions.
01247	
01248	/* Play a sound effect. - returns the ID to use to stop it, valid slots are:
01249		SLOT_None,
01250		SLOT_Misc,
01251		SLOT_Pain,
01252		SLOT_Interact,
01253		SLOT_Ambient,
01254		SLOT_Talk,
01255		SLOT_Interface,
01256	*/
01257	
01258	native(667) final function string LipSyncString(Sound sound, float granularity);
01259	
01260	native(264) final function int PlaySound
01261	(
01262		sound				Sound,
01263		optional ESoundSlot Slot,
01264		optional float		Volume,
01265		optional bool		bNoOverride,
01266		optional float		Radius,
01267		optional float		Pitch
01268	);
01269	
01270	// play a sound effect, but don't propagate to a remote owner
01271	// (he is playing the sound clientside
01272	native simulated final function PlayOwnedSound
01273	(
01274		sound				Sound,
01275		optional ESoundSlot Slot,
01276		optional float		Volume,
01277		optional bool		bNoOverride,
01278		optional float		Radius,
01279		optional float		Pitch
01280	);
01281	
01282	native(265) final function StopSound(int Id);
01283	native(268) final function StopAllSound();
01284	
01285	native simulated event DemoPlaySound
01286	(
01287		sound				Sound,
01288		optional ESoundSlot Slot,
01289		optional float		Volume,
01290		optional bool		bNoOverride,
01291		optional float		Radius,
01292		optional float		Pitch
01293	);
01294	
01295	// Get a sound duration.
01296	native final function float GetSoundDuration(sound Sound);
01297	
01298	//=============================================================================
01299	// AI functions.
01300	
01301	//
01302	// Inform other creatures that you've made a noise
01303	// they might hear (they are sent a HearNoise message)
01304	// Senders of MakeNoise should have an instigator if they are not pawns.
01305	//
01306	native(512) final function MakeNoise( float Loudness );
01307	
01308	//
01309	// PlayerCanSeeMe returns true if some player has a line of sight to 
01310	// actor's location.
01311	//
01312	native(532) final function bool PlayerCanSeeMe();
01313	
01314	//=============================================================================
01315	// Regular engine functions.
01316	
01317	// Teleportation.
01318	event bool PreTeleport( Teleporter InTeleporter );
01319	event PostTeleport( Teleporter OutTeleporter );
01320	
01321	// Level state.
01322	event BeginPlay();
01323	
01324	//========================================================================
01325	// Disk access.
01326	
01327	// Find files.
01328	native(539) final function string GetMapName( string NameEnding, string MapName, int Dir );
01329	native(545) final function GetNextSkin( string Prefix, string CurrentSkin, int Dir, out string SkinName, out string SkinDesc );
01330	native(547) final function string GetURLMap();
01331	native final function string GetNextInt( string ClassName, int Num );
01332	native final function GetNextIntDesc( string ClassName, int Num, out string Entry, out string Description );
01333	
01334	//=============================================================================
01335	// Iterator functions.
01336	
01337	// Iterator functions for dealing with sets of actors.
01338	native(304) final iterator function AllActors     ( class<actor> BaseClass, out actor Actor, optional name MatchTag );
01339	native(305) final iterator function ChildActors   ( class<actor> BaseClass, out actor Actor );
01340	native(306) final iterator function BasedActors   ( class<actor> BaseClass, out actor Actor );
01341	native(307) final iterator function TouchingActors( class<actor> BaseClass, out actor Actor );
01342	native(309) final iterator function TraceActors   ( class<actor> BaseClass, out actor Actor, out vector HitLoc, out vector HitNorm, vector End, optional vector Start, optional vector Extent, optional bool bTraceLevel );
01343	native(310) final iterator function RadiusActors  ( class<actor> BaseClass, out actor Actor, float Radius, optional vector Loc );
01344	native(311) final iterator function VisibleActors ( class<actor> BaseClass, out actor Actor, optional float Radius, optional vector Loc );
01345	native(312) final iterator function VisibleCollidingActors ( class<actor> BaseClass, out actor Actor, optional float Radius, optional vector Loc, optional bool bIgnoreHidden );
01346	
01347	native(313) final iterator function SweepActors   ( class<actor> BaseClass, out actor Actor, vector start1, vector stop1, vector start2, vector stop2, float ExtentRadius, out vector HitLoc, out vector HitNorm, out int LowJointMask, out int HighJointMask);
01348	
01349	//=============================================================================
01350	// Color operators
01351	native(549) static final operator(20)  color -     ( color A, color B );
01352	native(550) static final operator(16) color *     ( float A, color B );
01353	native(551) static final operator(20) color +     ( color A, color B );
01354	native(552) static final operator(16) color *     ( color A, float B );
01355	
01356	//=============================================================================
01357	// Scripted Actor functions.
01358	
01359	// draw on canvas before flash and fog are applied (used for drawing weapons)
01360	event RenderOverlays( canvas Canvas );
01361	
01362	//
01363	// Called immediately before gameplay begins.
01364	//
01365	event PreBeginPlay()
01366	{
01367		// Handle autodestruction if desired.
01368		if( !bGameRelevant && (Level.NetMode != NM_Client) && !Level.Game.IsRelevant(Self) )
01369		{
01370			Destroy();
01371		}
01372	
01373		if (Skeletal != None)
01374		{
01375			// Set Default Skeleton properties
01376			SetDefaultPolyGroups();
01377			SetDefaultJointFlags();
01378		}
01379	
01380		if ( DrawScale != Default.Drawscale )
01381		{
01382			SetCollisionSize(CollisionRadius*DrawScale/Default.DrawScale, CollisionHeight*DrawScale/Default.DrawScale);
01383		}
01384	}
01385	
01386	//
01387	// Broadcast a message to all players.
01388	//
01389	event BroadcastMessage( coerce string Msg, optional bool bBeep, optional name Type )
01390	{
01391		local Pawn P;
01392	
01393		if (Type == '')
01394			Type = 'Event';
01395	
01396		if ( Level.Game.AllowsBroadcast(self, Len(Msg)) )
01397			for( P=Level.PawnList; P!=None; P=P.nextPawn )
01398				if( P.bIsPlayer || P.IsA('MessagingSpectator') )
01399					P.ClientMessage( Msg, Type, bBeep );
01400	}
01401	
01402	//
01403	// Broadcast a localized message to all players.
01404	// Most message deal with 0 to 2 related PRIs.
01405	// The LocalMessage class defines how the PRI's and optional actor are used.
01406	//
01407	event BroadcastLocalizedMessage( class<LocalMessage> Message, optional int Switch, optional PlayerReplicationInfo RelatedPRI_1, optional PlayerReplicationInfo RelatedPRI_2, optional Object OptionalObject )
01408	{
01409		local Pawn P;
01410	
01411		for ( P=Level.PawnList; P != None; P=P.nextPawn )
01412			if ( P.bIsPlayer || P.IsA('MessagingSpectator') )
01413				P.ReceiveLocalizedMessage( Message, Switch, RelatedPRI_1, RelatedPRI_2, OptionalObject );
01414	}
01415	
01416	//
01417	// Called immediately after gameplay begins.
01418	//
01419	event PostBeginPlay();
01420	
01421	//
01422	// Called after PostBeginPlay.
01423	//
01424	simulated event SetInitialState()
01425	{
01426		if( InitialState!='' )
01427			GotoState( InitialState );
01428		else
01429			GotoState( 'Auto' );
01430	}
01431	
01432	// called after PostBeginPlay on net client
01433	event PostNetBeginPlay();
01434	
01435	//
01436	// Hurt actors within the radius.
01437	//
01438	final function HurtRadius( float DamageAmount, float DamageRadius, name DamageType, float Momentum, vector HitLocation )
01439	{
01440		local actor Victim;
01441		local float damageScale, dist;
01442		local vector dir;
01443		
01444		foreach VisibleCollidingActors( class 'Actor', Victim, DamageRadius, HitLocation )
01445		{
01446			if( Victim != self && Victim != Owner)
01447			{
01448				dir = Victim.Location - HitLocation;
01449				dist = FMax(1,VSize(dir));
01450				dir = dir/dist; 
01451				damageScale = 1 - FMax(0,(dist - Victim.CollisionRadius)/DamageRadius);
01452	
01453				Victim.JointDamaged(damageScale * DamageAmount,
01454					Instigator,
01455					Victim.Location - 0.5 * (Victim.CollisionHeight + Victim.CollisionRadius) * dir,
01456					(damageScale * Momentum * dir),
01457					DamageType,
01458					0);
01459			} 
01460		}
01461	}
01462	
01463	//
01464	// Called when carried onto a new level, before AcceptInventory.
01465	//
01466	event TravelPreAccept();
01467	
01468	//
01469	// Called when carried into a new level, after AcceptInventory.
01470	//
01471	event TravelPostAccept();
01472	
01473	//
01474	// Called when a scripted texture needs rendering
01475	//
01476	event RenderTexture(ScriptedTexture Tex);
01477	
01478	//
01479	// Called by PlayerPawn when this actor becomes its ViewTarget.
01480	//
01481	function BecomeViewTarget();
01482	
01483	//
01484	// Returns the string representation of the name of an object without the package
01485	// prefixes.
01486	//
01487	function String GetItemName( string FullName )
01488	{
01489		local int pos;
01490	
01491		pos = InStr(FullName, ".");
01492		While ( pos != -1 )
01493		{
01494			FullName = Right(FullName, Len(FullName) - pos - 1);
01495			pos = InStr(FullName, ".");
01496		}
01497	
01498		return FullName;
01499	}
01500	
01501	//
01502	// Returns the human readable string representation of an object.
01503	//
01504	
01505	function String GetHumanName()
01506	{
01507		return GetItemName(string(class));
01508	}
01509	
01510	//
01511	// Set the display properties of an actor.  By setting them through this function, it allows
01512	// the actor to modify other components (such as a Pawn's weapon) or to adjust the result
01513	// based on other factors (such as a Pawn's other inventory wanting to affect the result)
01514	function SetDisplayProperties(ERenderStyle NewStyle, texture NewTexture, bool bLighting, bool bEnviroMap )
01515	{
01516		Style = NewStyle;
01517		texture = NewTexture;
01518		bUnlit = bLighting;
01519		bMeshEnviromap = bEnviromap;
01520	}
01521	
01522	function SetDefaultDisplayProperties()
01523	{
01524		Style = Default.Style;
01525		texture = Default.Texture;
01526		bUnlit = Default.bUnlit;
01527		bMeshEnviromap = Default.bMeshEnviromap;
01528	}
01529	
01530	
01531	// Spawn animation proxies for a skeletal actor
01532	function SpawnAnimationProxy()
01533	{
01534		if (Skeletal == None)
01535			SLog("Only skeletal actors can spawn Animation Proxies");
01536	
01537		AnimProxy = spawn(class'AnimationProxy', self);
01538	}
01539	
01540	function DestroyAnimationProxy()
01541	{
01542		if (AnimProxy != None)
01543		{
01544			AnimProxy.Destroy();
01545			AnimProxy = None;
01546		}
01547	}
01548	
01549	//============================================================================
01550	//
01551	// CheckDefending
01552	//
01553	// Checks if the Actor is defending 
01554	// Default does nothing.
01555	//============================================================================
01556	
01557	function bool CheckDefending()
01558	{
01559		return(false);
01560	}
01561	
01562	//============================================================================
01563	//
01564	// GetUseAnim
01565	//
01566	// Returns the animation that the player (or a viking) should play when
01567	// this item is 'used'.
01568	//============================================================================
01569	
01570	function name GetUseAnim()
01571	{
01572		return('');
01573	}
01574	
01575	//============================================================================
01576	//
01577	// CanBeUsed
01578	//
01579	// Whether the actor can be used.
01580	//============================================================================
01581	
01582	function bool CanBeUsed(Actor Other)
01583	{
01584		return(false);
01585	}
01586	
01587	//============================================================================
01588	//
01589	// GetUsePriority
01590	//
01591	// Returns the priority of the weapon, lower is better
01592	//============================================================================
01593	
01594	function int GetUsePriority()
01595	{
01596		return(9999);
01597	}
01598	
01599	final function bool ActorInSector(actor A, int angle)
01600	{
01601		local rotator angleToTarget;
01602		local int yaw;
01603		
01604		yaw = (rotator(A.Location - Location) - Rotation).Yaw;
01605		if (yaw > 32768)
01606			yaw = yaw - 65535;
01607		if (yaw < -32768)
01608			yaw = yaw + 65535;
01609		
01610		return (yaw >= -angle && yaw <= angle);
01611	}
01612	
01613	//============================================================
01614	//
01615	// Slog
01616	//
01617	// Sends text to the Log as well as displaying on all client screens for debug purposes
01618	//============================================================
01619	simulated function SLog(coerce string msg)
01620	{
01621		local Pawn P;
01622		Log(msg);
01623		
01624		// Remove the broadcast when testing networking or building final
01625	/* Global Broadcast
01626		for( P=Level.PawnList; P!=None; P=P.nextPawn )
01627			if( P.bIsPlayer )
01628				PlayerPawn(P).ClientMessage(msg);
01629	*/
01630		if (Level.Netmode == NM_Client)
01631		{	// No pawn list on client
01632			foreach AllActors(class'Pawn', P)
01633			{
01634				if(P.bIsPlayer && P.Role==ROLE_AutonomousProxy)
01635				{
01636					PlayerPawn(P).ClientMessage(msg);
01637	//				break;
01638				}
01639			}
01640		}
01641		else
01642		{
01643			for( P=Level.PawnList; P!=None; P=P.nextPawn )
01644			{
01645				if(P.bIsPlayer && P.RemoteRole!=ROLE_AutonomousProxy)
01646				{
01647					PlayerPawn(P).ClientMessage(msg);
01648	//				break;
01649				}
01650			}
01651		}
01652	}
01653	
01654	// Allow any actor to process console commands (not implimented)
01655	event int HandleConsoleCommand(string cmd)
01656	{
01657	}
01658	
01659	
01660	//============================================================
01661	//
01662	// DebugStop
01663	//
01664	// Stops everything for debugging purposes
01665	//============================================================
01666	function DebugStop(string msg, optional bool bStopAnimation)
01667	{
01668		local Pawn P;
01669		local PlayerPawn aPlayer;
01670	
01671		SLog(Name@"DebugStop:"@msg@"("$bStopAnimation$")");
01672		
01673		// Remove the broadcast when testing networking or building final
01674		for( P=Level.PawnList; P!=None; P=P.nextPawn )
01675			if( P.bIsPlayer )
01676				aPlayer = PlayerPawn(P);
01677	
01678		if (bStopAnimation)
01679			AnimRate = 0;
01680	
01681		// Pause the game
01682		//aPlayer.SetPause(true);
01683	
01684		// Players only
01685		Level.bPlayersOnly = true;
01686	
01687		// Turn on Debug info
01688		if (aPlayer.myDebugHud != None)
01689		{
01690			aPlayer.myDebugHUD.DebugMode = DEBUG_CONSTANT;
01691			aPlayer.myDebugHUD.DebugHudMode = HUD_ACTOR;
01692			aPlayer.myDebugHUD.SetWatch(None);
01693			aPlayer.myDebugHUD.SetWatch(self);
01694		}
01695	}
01696	
01697	
01698	
01699	//============================================================
01700	//
01701	// Debug
01702	//
01703	// Debug rendering callback
01704	//============================================================
01705	simulated function debug(canvas Canvas, int mode)
01706	{
01707		local float yaw,pitch,roll;
01708		local string text;
01709		local Inventory i;
01710		local actor A;
01711	
01712		if (mode == HUD_SCRIPT)
01713		{
01714			Canvas.DrawText("Class:"@Class);
01715			Canvas.CurY -= 8;
01716			Canvas.DrawText("Tag:  "@Tag);
01717			Canvas.CurY -= 8;
01718			Canvas.DrawText("Event:"@Event);
01719			Canvas.CurY -= 8;
01720			Canvas.DrawText("State:"@GetStateName());
01721			Canvas.CurY -= 8;
01722	
01723			if (Event != '')
01724				foreach AllActors(class'Actor', A, Event)
01725					Canvas.DrawLine3D(Location, A.Location, 255, 255, 0);
01726	
01727			return;
01728		}
01729	
01730		if (mode >= DEBUG_MULTIPLE)
01731		{
01732			Canvas.DrawText(name);
01733			Canvas.CurY -= 8;
01734	
01735			return;
01736		}
01737	
01738		Canvas.SetPos(0,50);
01739		if (bDeleteMe)
01740		{
01741			Canvas.SetColor(255,255,0);
01742			Canvas.DrawText("Name:     "$name@"(DELETED)");
01743			Canvas.SetColor(255,0,0);
01744		}
01745		else
01746			Canvas.DrawText("Name:     "$name);
01747		Canvas.CurY -= 8;
01748		Canvas.DrawText("Class:    "$class);
01749		Canvas.CurY -= 8;
01750		Canvas.DrawText("Tag:      "$tag);
01751		Canvas.CurY -= 8;
01752		Canvas.DrawText("Event:    "$Event);
01753		Canvas.CurY -= 8;
01754		Canvas.DrawText("State:    "$GetStateName());
01755		Canvas.CurY -= 8;
01756		Canvas.DrawText("Owner:    "$Owner);
01757		Canvas.CurY -= 8;
01758		Canvas.DrawText("Reg.Zone: "$Region.Zone);
01759		Canvas.CurY -= 8;
01760		Canvas.DrawText("R.ZoneNum:"$Region.ZoneNumber);
01761		Canvas.CurY -= 8;
01762		Canvas.DrawText("Location: "$Location);
01763		Canvas.CurY -= 8;
01764		Canvas.DrawText("PrePivot: "$PrePivot);
01765		Canvas.CurY -= 8;
01766		Canvas.DrawText("Velocity: "$Velocity);
01767		Canvas.CurY -= 8;
01768		Canvas.DrawText("Accel:    "$Acceleration);
01769		Canvas.CurY -= 8;
01770	
01771		switch(Physics)
01772		{
01773			case PHYS_None:
01774				text = "PHYS_None";		break;
01775			case PHYS_Walking:
01776				text = "PHYS_Walking";	break;
01777			case PHYS_Falling:
01778				text = "PHYS_Falling";	break;
01779			case PHYS_Swimming:
01780				text = "PHYS_Swimming";	break;
01781			case PHYS_Flying:
01782				text = "PHYS_Flying";	break;
01783			case PHYS_Rotating:
01784				text = "PHYS_Rotating";	break;
01785			case PHYS_Projectile:
01786				text = "PHYS_Projectile";	break;
01787			case PHYS_Rolling:
01788				text = "PHYS_Rolling";	break;
01789			case PHYS_Interpolating:
01790				text = "PHYS_Interpolating";	break;
01791			case PHYS_MovingBrush:
01792				text = "PHYS_MovingBrush";	break;
01793			case PHYS_Spider:
01794				text = "PHYS_Spider";	break;
01795			case PHYS_Trailer:
01796				text = "PHYS_Trailer";	break;
01797			case PHYS_Sliding:
01798				text = "PHYS_Sliding";	break;
01799			default:
01800				text = "UNKNOWN (" $ Physics $")";	break;
01801		}
01802		Canvas.DrawText("Physics:  "$text);
01803		Canvas.CurY -= 8;
01804	
01805		switch(Drawtype)
01806		{
01807			case DT_None:			text="DT_None";							break;
01808			case DT_Sprite:			text="DT_Sprite tex="$Texture;			break;
01809			case DT_Mesh:			text="DT_Mesh mesh="$Mesh;				break;
01810			case DT_Brush:			text="DT_Brush";						break;
01811			case DT_RopeSprite:		text="DT_RopeSprite";					break;
01812			case DT_VerticalSprite:	text="DT_VerticalSprite tex="$Texture;	break;
01813			case DT_SkeletalMesh:	text="DT_SkeletalMesh skel="$Skeletal@"SkelMesh="$SkelMesh;	break;
01814			case DT_SpriteAnimOnce:	text="DT_SpriteAnimOnce";				break;
01815			case DT_ParticleSystem:
01816				text="DT_ParticleSystem ptex="$ParticleSystem(self).ParticleTexture[0];
01817				break;
01818		}
01819		Canvas.DrawText("DrawType: "$text);
01820		Canvas.CurY -= 8;
01821		switch(Style)
01822		{
01823			case STY_None:			text="STY_None";		break;
01824			case STY_Normal:		text="STY_Normal";		break;
01825			case STY_Masked:		text="STY_Masked";		break;
01826			case STY_Translucent:	text="STY_Translucent";	break;
01827			case STY_Modulated:		text="STY_Modulated";	break;
01828			case STY_AlphaBlend:	text="STY_AlphaBlend";	break;
01829		}
01830		Canvas.DrawText("Style:    "$text);
01831		Canvas.CurY -= 8;
01832		pitch = Rotation.Pitch * 360 / 65536;
01833		yaw = Rotation.Yaw * 360 / 65536;
01834		roll = Rotation.Roll * 360 / 65536;
01835		Canvas.DrawText("Rotation: P="$pitch$" Y="$yaw$" R="$roll);
01836		Canvas.CurY -= 8;
01837	
01838	//	Canvas.DrawText("Region.Zone:      "@Region.Zone);
01839	//	Canvas.CurY -= 8;
01840	//	Canvas.DrawText("Region.ZoneNumber:"@Region.ZoneNumber);
01841	//	Canvas.CurY -= 8;
01842	
01843	/*	// Rotation stuff
01844		Canvas.DrawText("Rotation:        P="$Rotation.Pitch$" Y="$Rotation.yaw$" R="$Rotation.roll);
01845		Canvas.CurY -= 8;
01846		Canvas.DrawText("DesiredRotation: P="$DesiredRotation.Pitch$" Y="$DesiredRotation.yaw$" R="$DesiredRotation.roll);
01847		Canvas.CurY -= 8;
01848		Canvas.DrawText("RotationRate:    P="$RotationRate.Pitch$" Y="$RotationRate.yaw$" R="$RotationRate.roll);
01849		Canvas.CurY -= 8;
01850		Canvas.DrawText("bFixedRotationDir:"@bFixedRotationDir);
01851		Canvas.CurY -= 8;
01852		Canvas.DrawText("bRotateToDesired: "@bRotateToDesired);
01853		Canvas.CurY -= 8;
01854		Canvas.DrawText("bBounce:          "@bBounce);
01855		Canvas.CurY -= 8;
01856	*/
01857		Canvas.DrawText("Mass:     "$Mass);
01858		Canvas.CurY -= 8;
01859		Canvas.DrawText("Buoyancy: "$Buoyancy);
01860		Canvas.CurY -= 8;
01861		Canvas.DrawText("Sequence: "$AnimSequence);
01862		Canvas.CurY -= 8;
01863		Canvas.DrawText("AnimFrame:"$AnimFrame);
01864		Canvas.CurY -= 8;
01865		Canvas.DrawText("AnimRate  "$AnimRate);
01866		Canvas.CurY -= 8;
01867	//	Canvas.DrawText("Base: "$Base);
01868	//	Canvas.CurY -= 8;
01869	
01870		text = "Collision:";
01871		if (bCollideWorld)
01872			text = text@"CW";
01873		if (bCollideActors)
01874			text = text@"CA";
01875		if (bBlockActors)
01876			text = text@"BA";
01877		if (bBlockPlayers)
01878			text = text@"BP";
01879		Canvas.DrawText(text);
01880		Canvas.CurY -= 8;
01881	
01882		if (bHidden)
01883		{
01884			Canvas.DrawText("bHidden:"@bHidden);
01885			Canvas.CurY -= 8;
01886		}
01887	
01888		text = "";
01889		if (bStatic)
01890			text = text@"bStatic";
01891		if (bStasis)
01892			text = text@"bStasis";
01893		if (text != "")
01894		{
01895			Canvas.DrawText(text);
01896			Canvas.CurY -= 8;
01897		}
01898	
01899		if (AnimProxy != None)
01900		{
01901			Canvas.DrawText("AnimProxy: " $ AnimProxy);
01902			Canvas.CurY -= 8;
01903			Canvas.DrawText("  Sequence:   " $ AnimProxy.AnimSequence);
01904			Canvas.CurY -= 8;
01905			Canvas.DrawText("  Frame       " $ AnimProxy.AnimFrame);
01906			Canvas.CurY -= 8;
01907		}
01908	
01909		Canvas.DrawText("bCarriedItem:"@bCarriedItem);
01910		Canvas.CurY -= 8;
01911		if (bCarriedItem)
01912		{
01913			Canvas.DrawText("AttachParent:"@AttachParent);
01914			Canvas.CurY -= 8;
01915		}
01916		if (Inventory != None)
01917		{
01918			Canvas.DrawText("Inventory:");
01919			Canvas.CurY -= 8;
01920			i = Inventory;
01921			while (i != None)
01922			{
01923				Canvas.DrawText("  "$i.name);
01924				Canvas.CurY -= 8;
01925	
01926				i = i.Inventory;
01927			}
01928		}
01929		Canvas.DrawText("LifeSpan:    "@LifeSpan);
01930		Canvas.CurY -= 8;
01931		Canvas.DrawText("Instigator:  "@Instigator);
01932		Canvas.CurY -= 8;
01933	//	Canvas.DrawText("bLookFocusPlayer:"@bLookFocusPlayer);
01934	//	Canvas.CurY -= 8;
01935	}
01936	
01937	defaultproperties
01938	{
01939	     Role=ROLE_Authority
01940	     RemoteRole=ROLE_DumbProxy
01941	     LODBias=1.000000
01942	     OddsOfAppearing=1.000000
01943	     bDifficulty0=True
01944	     bDifficulty1=True
01945	     bDifficulty2=True
01946	     bDifficulty3=True
01947	     bSinglePlayer=True
01948	     bNet=True
01949	     bNetSpecial=True
01950	     DrawType=DT_Sprite
01951	     Style=STY_Normal
01952	     Texture=Texture'Engine.S_Actor'
01953	     DrawScale=1.000000
01954	     ScaleGlow=1.000000
01955	     VisibilityRadius=10000.000000
01956	     VisibilityHeight=10000.000000
01957	     Fatness=128
01958	     SpriteProjForward=32.000000
01959	     DesiredFatness=128
01960	     AlphaScale=1.000000
01961	     LODDistMax=2500.000000
01962	     LODPercentMax=1.000000
01963	     LODCurve=LOD_CURVE_NORMAL
01964	     bShadowCast=True
01965	     bMovable=True
01966	     SoundRadius=32
01967	     SoundVolume=128
01968	     SoundPitch=64
01969	     TransientSoundVolume=1.000000
01970	     CollisionRadius=22.000000
01971	     CollisionHeight=22.000000
01972	     bAffectWorld=True
01973	     bAffectActors=True
01974	     bJustTeleported=True
01975	     Mass=100.000000
01976	     NetPriority=1.000000
01977	     NetUpdateFrequency=100.000000
01978	}

End Source Code