AdrenalinePickup/Script
UT2003, Build 2225
//============================================================================= // AdrenalinePickup //Name of the class //============================================================================= class AdrenalinePickup extends TournamentPickUp; //Says this class is a subclass of Tournament Pickups var() float AdrenalineAmount; //The variable that determines adreneline you get from the pickup DetourWeight() //How much the bots will stray off a course to pick up this object function float DetourWeight(Pawn Other,float PathWeight) { if ( !Other.Controller.NeedsAdrenaline() ) return 0; return MaxDesireability; } event float BotDesireability(Pawn Bot) //Determines how much a bot will want to pick this up { if ( Bot.Controller.bHuntPlayer ) return 0; if ( !Bot.Controller.NeedsAdrenaline() ) return 0; return MaxDesireability; } auto state Pickup //What happens when you pick this up { function Touch( actor Other ) { local Pawn P; if ( ValidTouch(Other) ) //If a player touches an adreneline pill... { P = Pawn(Other); P.Controller.AwardAdrenaline(AdrenalineAmount); //He will get Adreneline based off of the variable AdrenelineAmount... AnnouncePickup(P); //The player will recieve a message that he has recieved adreneline... SetRespawn(); //And the Adreneline will be set to respawn in a few seconds } } } defaultproperties //Definitions for variables used by this class { AdrenalineAmount=3.000000 //How much adreneline you get MaxDesireability=0.300000 //The amount of desireability the bots have for it RespawnTime=30.000000 //How long it takes to respawn (in second) PickupMessage="Adrenaline " //The message you get when you pick it up PickupSound=Sound'PickupSounds.AdrenelinPickup' //The pick up sound PickupForce="AdrenelinPickup" Physics=PHYS_Rotating //The physics for the adreneline model. This sets the model to spin in place. DrawType=DT_StaticMesh StaticMesh=StaticMesh'XPickups_rc.AdrenalinePack' DrawScale=0.075000 AmbientGlow=255 //The glow the pill gives off ScaleGlow=0.600000 Style=STY_AlphaZ CollisionRadius=32.000000 //The radius... CollisionHeight=23.000000 //And height to determine when you collide with the pickup, there adding it to your inventory Mass=10.000000 //The pill's mass RotationRate=(Yaw=24000) //How fast the pill rotates }
UT2004
//============================================================================= // AdrenalinePickup //============================================================================= class AdrenalinePickup extends TournamentPickUp; var float AdrenalineAmount; /* DetourWeight() value of this path to take a quick detour (usually 0, used when on route to distant objective, but want to grab inventory for example) */ function float DetourWeight(Pawn Other,float PathWeight) { if ( (PathWeight > 500) || !Other.Controller.NeedsAdrenaline() ) return 0; if ( (Other.Controller.Enemy != None) && (Level.TimeSeconds - Other.Controller.LastSeenTime < 1) ) return 0; return 0.15/PathWeight; } event float BotDesireability(Pawn Bot) { if ( Bot.Controller.bHuntPlayer ) return 0; if ( !Bot.Controller.NeedsAdrenaline() ) return 0; return MaxDesireability; } auto state Pickup { function Touch( actor Other ) { local Pawn P; if ( ValidTouch(Other) ) { P = Pawn(Other); P.Controller.AwardAdrenaline(AdrenalineAmount); AnnouncePickup(P); SetRespawn(); } } }