Core.Object | +--Engine.Actor | +--Engine.Pickup | +--XIII.MultiplayerMedPickup
void
Touch(Actor Other)
// When touched by an actor.
bool
ValidTouch(Actor Other)
00001 //----------------------------------------------------------- 00002 // 00003 //----------------------------------------------------------- 00004 class MultiplayerMedPickup extends Pickup; 00005 00006 //_____________________________________________________________________________ 00007 event ParseDynamicLoading(LevelInfo MyLI) 00008 { 00009 Log("ParseDynamicLoading Actor="$self); 00010 (default.InventoryType).Static.StaticParseDynamicLoading(MyLI); 00011 // MyLI.ForcedMeshes[MyLI.ForcedMeshes.Length] = mesh(DynamicLoadObject(class<Weapon>(default.InventoryType).default.MeshName, class'mesh')); 00012 } 00013 00014 //_____________________________________________________________________________ 00015 // ELR Let's override the TriggerEvent. 00016 auto state Pickup 00017 { 00018 function bool ValidTouch( actor Other ) 00019 { 00020 // make sure its a live player 00021 if ( (Pawn(Other)==none) || !Pawn(Other).bCanPickupInventory || (Pawn(Other).Health <= 0) ) 00022 return false; 00023 // make sure not touching through wall 00024 if ( !FastTrace(Other.Location+Pawn(Other).EyeHeight*vect(0,0,1), Location) ) 00025 return false; 00026 // make sure game will let player pick me up 00027 if( Level.Game.PickupQuery(Pawn(Other), self) ) 00028 { 00029 TriggerEvent(Event, self, Pawn(Other)); 00030 return true; 00031 } 00032 return false; 00033 } 00034 00035 // When touched by an actor. 00036 function Touch( actor Other ) 00037 { 00038 local Inventory Copy; 00039 00040 // If touched by a player pawn, let him pick this up. 00041 if( ValidTouch(Other) ) 00042 { 00043 Copy = SpawnCopy(Pawn(Other)); 00044 AnnouncePickup(Pawn(Other)); 00045 Copy.PickupFunction(Pawn(Other)); 00046 } 00047 // don't allow inventory to pile up (frame rate hit) 00048 else if ( (Inventory != None) && (Pickup(Other) != none) 00049 && (Pickup(Other).Inventory != None) ) 00050 Destroy(); 00051 } 00052 } 00053 00054 00055 00056 defaultproperties 00057 { 00058 RespawnTime=5.000000 00059 PickupMessage="Got a XIII Item ::BUG:: (Message should be defined in sub-classes) !!" 00060 hRespawnSound=Sound'XIIIsound.Multi__SFXMulti.SFXMulti__hRespawnGun' 00061 CollisionRadius=34.000000 00062 CollisionHeight=8.000000 00063 MessageClass=Class'XIII.XIIIPickupMessage' 00064 }