class Operative99_Bot extends UTPawn placeable; // members for the custom mesh var SkeletalMesh defaultMesh; //var MaterialInterface defaultMaterial0; var AnimTree defaultAnimTree; var array defaultAnimSet; var AnimNodeSequence defaultAnimSeq; var PhysicsAsset defaultPhysicsAsset; var Operative99_BotController MyController; var float Speed; var SkeletalMeshComponent MyMesh; var bool bplayed; var Name AnimSetName; var AnimNodeSequence MyAnimPlayControl; var bool AttAcking; var () array MyNavigationPoints; defaultproperties { Speed=80 AnimSetName="ATTACK" AttAcking=false defaultMesh=SkeletalMesh'CH_LIAM_Cathode.Mesh.SK_CH_LIAM_Cathode' defaultAnimTree=AnimTree'CH_AnimCorrupt.Mesh.SK_CH_Corrupt_Male_Physics' defaultAnimSet(0)=AnimSet'CH_AnimHuman.Anims.K_AnimHuman_BaseMale' //defaultPhysicsAsset=PhysicsAsset'CH_AnimHuman_Tree.AT_CH_Human' Begin Object Name=WPawnSkeletalMeshComponent bOwnerNoSee=false CastShadow=true //CollideActors=TRUE BlockRigidBody=true BlockActors=true BlockZeroExtent=true //BlockNonZeroExtent=true bAllowApproximateOcclusion=true bForceDirectLightMap=true bUsePrecomputedShadows=false LightEnvironment=MyLightEnvironment //Scale=0.5 SkeletalMesh=SkeletalMesh'CH_LIAM_Cathode.Mesh.SK_CH_LIAM_Cathode' //PhysicsAsset=PhysicsAsset'CH_AnimCorrupt.Mesh.SK_CH_Corrupt_Male_Physics' AnimSets(0)=AnimSet'CH_AnimHuman.Anims.K_AnimHuman_BaseMale' AnimtreeTemplate=AnimTree'CH_AnimHuman_Tree.AT_CH_Human' End Object mesh = WPawnSkeletalMeshComponent Components.Add(WPawnSkeletalMeshComponent) /*Begin Object Name=CollisionCylinder CollisionRadius=+0041.000000 CollisionHeight=+0044.000000 BlockZeroExtent=false End Object CylinderComponent=CollisionCylinder CollisionComponent=CollisionCylinder*/ bCollideActors=true bPushesRigidBodies=true bStatic=False bMovable=True bAvoidLedges=true bStopAtLedges=true LedgeCheckThreshold=0.5f } simulated function PostBeginPlay() { super.PostBeginPlay(); //if (Controller == none) // SpawnDefaultController(); SetPhysics(PHYS_Walking); if (MyController == none) { MyController = Spawn(class'Operative99_BotController', self); MyController.SetPawn(self); } //I am not using this //MyAnimPlayControl = AnimNodeSequence(MyMesh.Animations.FindAnimNode('AnimAttack')); } function SetAttacking(bool atacar) { AttAcking = atacar; } simulated event Tick(float DeltaTime) { local UTPawn gv; local vector endPoint; endPoint = location; endPoint.z += 100; super.Tick(DeltaTime); //MyController.Tick(DeltaTime); DrawDebugLine(Location, endPoint, 1, 0, 0 ); //foreach CollidingActors(class'UTPawn', gv, 200) foreach VisibleCollidingActors(class'UTPawn', gv, 100) { if(AttAcking && gv != none) { if(gv.Name == 'MyPawn_0' && gv.Health > 0) { //Worldinfo.Game.Broadcast(self, "Colliding with player : " @ gv.Name); gv.Health -= 1; gv.IsInPain(); } } } } simulated function SetCharacterClassFromInfo(class Info) { Mesh.SetSkeletalMesh(defaultMesh); //Mesh.SetMaterial(0,defaultMaterial0); Mesh.SetPhysicsAsset(defaultPhysicsAsset); Mesh.AnimSets=defaultAnimSet; Mesh.SetAnimTreeTemplate(defaultAnimTree); }