*~d@%l5M|RFkOQ%dNoneBDHandsAdvancedEngineSystemEngineCoreAnimationName DrawTypeCollisionRadiusbCollideActorsbUseCylinderCollisionMeshCollisionHeight bUseShadowBDAnimatedObject TakeDamage SimAnimateTouchPostBeginPlayZHandsBTrinAnimatedObjectZHandsCZHandsD BloodEmitterFireBurnRadius PainSoundsNotify_MeleeDamageGrabDPawnAddAnimationPackage MyDamageTypeZHandsAPostNetBeginPlayScratch bProjTargetGrabAGrabBGrabC CheckShadow ScriptTexti Location DamageType instigatedBy Momentum HitLocationDamageOther Instigator bNetDirty IntPropertyEmitterMeshAnimationAnimatedObject AnimInfo SkeletalMeshActivationTypeAnimationRateActorbAddedObjRefAdditionalAnimPkgSound BoolPropertyRolebShouldAnimate NearActor AnimName DOTZEngineDOTZBluntImpactDamageDOTZXCharactersBBPImpactFlesh BBParticlesZombiePainSounds PainMale01 PainMale02 PainMale03 PainMale04 PainMale05 PainMale06Class BytePropertyPackage TextBufferObject FunctionVectorStruct TrinAnimNameTrinAddPkgAnimNameTrinAddPkgbAddedTrinAddPkgObjRefObjectProperty NameProperty StrPropertyBDPropsStructPropertyArrayPropertyClassPropertyZHands $ (a MHL9ebeb"2Y"@%#-9:9:$ MH]H    @  j//BD class BDAnimatedObject extends TrinAnimatedObject placeable; var() int FireBurnRadius; var() class MyDamageType; var class BloodEmitter; var() array PainSounds; /***************************************************************** * TakeDamage ***************************************************************** */ function TakeDamage( int Damage, Pawn instigatedBy, Vector hitlocation, Vector momentum, class damageType){ super.TakeDamage(Damage, instigatedBy, hitlocation, momentum, damageType); PlaySound(PainSounds[int(Frand() * PainSounds.length)]); Spawn(BloodEmitter,,,Hitlocation); } /***************************************************************** * Notify_MeleeDamage ***************************************************************** */ function Notify_MeleeDamage(){ // Log( self @ "MeleeDamage" ) ; } simulated function Touch(Actor Other){ if (Other.IsA('Pawn') == true && Instigator != Pawn(Other)){ Spawn(BloodEmitter,,,location); Other.TakeDamage(10,None,vect(0,0,0),vect(0,0,0),MyDamageType); } Super.Touch(Other); } function Scratch(){ local Pawn NearActor; //look if you should burn someone Foreach Radiusactors(class'Pawn',NearActor, FireBurnRadius ){ NearActor.TakeDamage(10,None,vect(0,0,0),vect(0,0,0),MyDamageType); } }  gޫ(a%  $HB $ A 0 @%&6% -6%- 6% &%76X9:9:$'  W O7% 6%- -6% 6%  "(a$  $HB $ A?//BD class ZHandsA extends BDAnimatedObject placeable; Ga9D9?7a  ?//BD class ZHandsC extends BDAnimatedObject placeable;   I(a  $HB $ A P:(a#  $HB $ A?//BD class ZHandsB extends BDAnimatedObject placeable; ?//BD class ZHandsD extends BDAnimatedObject placeable;  !!zma/!'w.a (, *## N@ a9? "!- L/a6 9?I(, *##10 l%// This is a netplay working version of the animated object class. It transfers over // the animation name and one additional animation package, both of which can be setup // by the level designer. // All this class does is replicate the variables and funtions necessary to make a client // animated object work properly. There is no new functionality. // Trin Extended. class TrinAnimatedObject extends AnimatedObject placeable; // Name of the animation to run. var name TrinAnimName; // Supports one additional animation package configured by the LD. var string TrinAddPkgAnimName; var bool TrinAddPkgbAdded; var MeshAnimation TrinAddPkgObjRef; replication { // Variables the server should send to the client. reliable if( bNetDirty && (Role==ROLE_Authority) ) TrinAnimName, TrinAddPkgAnimName, TrinAddPkgbAdded, TrinAddPkgObjRef; } simulated function PostBeginPlay() { // Log(self $ " PostBeginPlay AnimationName=" $ AnimationName, 'TrinLogMessage'); TrinAnimName=AnimationName; if (AdditionalAnimPkg.Length > 0) { TrinAddPkgAnimName=AdditionalAnimPkg[0].AnimName; TrinAddPkgbAdded=AdditionalAnimPkg[0].bAdded; TrinAddPkgObjRef=AdditionalAnimPkg[0].ObjRef; } Super.PostBeginPlay(); } simulated function PostNetBeginPlay() { local int i; // Log(self $ " PostNetBeginPlay AnimationName=" $ AnimationName $ " TrinAnimName=" $ TrinAnimName, 'TrinLogMessage'); AnimationName=TrinAnimName; // Log(self $ " PostNetBeginPlay AdditionalAnimPkg.Length=" $ AdditionalAnimPkg.Length, 'TrinLogMessage'); // Retrieve additional animation package and create a new spot in the package array for it. AdditionalAnimPkg.Insert(0,1); AdditionalAnimPkg[0].AnimName=TrinAddPkgAnimName; AdditionalAnimPkg[0].bAdded=TrinAddPkgbAdded; AdditionalAnimPkg[0].ObjRef=TrinAddPkgObjRef; // Perform the same actions that the server performs. CheckShadow(); for (i=0; i< AdditionalAnimPkg.Length; i++) { AddAnimationPackage(AdditionalAnimPkg[i].AnimName); } if ( ActivationType == TT_STARTS_ON) { SimAnimate(true); } Super.PostNetBeginPlay(); } simulated function SimAnimate(bool bShouldAnimate) { // Log(self $ " Animate anim=" $ TrinAnimName, 'TrinLogMessage'); LoopAnim(AnimationName,AnimationRate); } RRP5RP:a=PPPTPUW6PSRIRFP\P7cR_]P2^CPbUUWVUU P*\<P??;P`P4`)\0?1Q829Q@P>RDRHP^PEPGPa>J>K>L>M>N>OP]P3 MV"/ c( p$B |- I Vcqk [j Zy YG XU *c + q . ~ , J! W!'4uc!wX8#A O: y[: JT<w^='4IU? ^@Ck@'4InAwwBwnD'4IeF'4InGwHpSI %CK!ThK '4w%|L