*^CK@/ REԕ7LoPpPqPrPsPtPuPvPwPxPyPzP{P|P}P~PPPPPPPPPPPPPPPPPPPT\\\\\^^^^^^^^^^^^^^NoneEngineCore XPickupsSystem RotationRate ScaleGlowPhysicsRotator StaticMeshStyle PickupForce PickupSoundCollisionRadius DrawTypePickupMessageMaxDesireability DrawScale RespawnTime AmbientGlowAnnouncePickup SetRespawnTouch GetHealMax ValidTouchMassPickupCollisionHeightHealingAmountGetShieldStrengthMax ShieldAmountBotDesireabilitybPredictRespawnsTournamentHealth bSuperHealNone DetourWeight bAmbientGlow ShieldPickupGetLocalStringAdrenalinePickupPriorityObjective MessageClassSuperShieldPack ShieldPack UDamagePackTournamentPickUp HealthPackRespawnEffectAdrenalineAmountEnableUDamagebUnlitSuperHealthPackAddShieldStrength GiveHealthMiniHealthPackNeedsAdrenalineAwardAdrenaline bHuntPlayer PathWeightActor AIRatingSoundPawnClassHealthSwitch TextBufferObject HealthMaxBotdesire FunctionState StrPropertyGeneral UnrealGamePickupMessagePlusObjectPropertyUdamage SuperShield XEffectsPlayerSpawnEffect XPickups_rcAdrenalinePackP RelatedPRI_2 RelatedPRI_1Other ControllerFloatProperty AIControllerPlayerReplicationInfoWeapon ScriptTextPackage BoolProperty ReturnValueHeal IntProperty PickupSoundsLargeHealthPickupLargeShieldPickupAdrenelinPickupUDamagePickup E_Pickups MidHealth SuperKeg RegShieldHealMaxNeedNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNone CanUseShield UpdateHUDTransientSoundVolumeLastPickupTimeHLevelHUD LastSeenTime TimeSeconds LevelInfoLastArmorPickupTimeLastHealthPickupTimeEnemyNoneAddPrecacheStaticMeshStaticPrecacheTransientSoundRadius CullDistanceAddPrecacheMaterialGameShader bTeamGame GameInfoSuperHealthMax XGameShadersLWeaponUDamageShaderPlayerShadersNoneNoneNoneNoneNoneUpdatePrecacheMaterialsUpdatePrecacheStaticMeshesNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNone5$.2W#%*AAAA'A>3!3keWh3}ZshhhhhqYԃhh,ehhh _hu)u)3}u)u)"$333?$A]You picked up a Health Pack + $B$A$ AAAAA&AA&E&3 Wh3}Zshu)u)3}u)u)hh _h"$?$A]You picked up a Shield Pack +@$A$ AAA:AAAA!AAAAAAAAA?AAAA AAAAAA!AAA0AA1AAAA#A KY+2ȷ އ3}"d$pB]%$You picked up a Super Shield Pack +  ]LargeShieldPickup $?$?  b$C $B:]AA$OL. 9 GA",G!AT$%9?  ,  .),A #<9? ף<9? G!\42 `ke3}"d"$@%S $pB]%$You picked up a Big Keg O' Health +  ]LargeHealthPickup $>@$?  3b$C $(B:AAi//============================================================================= // SuperHealthPack //============================================================================= class SuperHealthPack extends TournamentHealth notplaceable; static function StaticPrecache(LevelInfo L) { L.AddPrecacheStaticMesh(StaticMesh'E_Pickups.SuperKeg'); } APM!-D8 GAAA0 a  GA"v 9? xw*??-,-< @9?,A-C<@ GA|//============================================================================= // ShieldPickup - cut and paste from TournamentHealth //============================================================================= class ShieldPickup extends TournamentPickUp abstract notplaceable; var() int ShieldAmount; /* 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) { local float Need; Need = Other.CanUseShield(ShieldAmount); if ( Need <= 0 ) return 0; if ( AIController(Other.Controller).PriorityObjective() && (Need < 0.4 * Other.GetShieldStrengthMax()) ) return (0.005 * MaxDesireability * Need)/PathWeight; return (0.013 * MaxDesireability * Need)/PathWeight; } simulated static function UpdateHUD(HUD H) { H.LastPickupTime = H.Level.TimeSeconds; H.LastArmorPickupTime = H.LastPickupTime; } event float BotDesireability(Pawn Bot) { return (0.013 * MaxDesireability * Bot.CanUseShield(ShieldAmount)); } static function string GetLocalString( optional int Switch, optional PlayerReplicationInfo RelatedPRI_1, optional PlayerReplicationInfo RelatedPRI_2 ) { return Default.PickupMessage$Default.ShieldAmount; } auto state Pickup { function Touch( actor Other ) { local Pawn P; if ( ValidTouch(Other) ) { P = Pawn(Other); if ( P.AddShieldStrength(ShieldAmount) || !Level.Game.bTeamGame ) { AnnouncePickup(P); SetRespawn(); } } } } AAAX//============================================================================= // ShieldPack //============================================================================= class ShieldPack extends ShieldPickup; #exec OBJ LOAD FILE=PickupSounds.uax #exec OBJ LOAD FILE=E_Pickups.usx static function StaticPrecache(LevelInfo L) { L.AddPrecacheStaticMesh(StaticMesh'E_Pickups.RegShield'); } AB//============================================================================= // UDamagePack //============================================================================= class UDamagePack extends TournamentPickUp notplaceable; #exec OBJ LOAD FILE=E_Pickups.usx #exec OBJ LOAD FILE=XGameShaders.utx static function StaticPrecache(LevelInfo L) { L.AddPrecacheStaticMesh(StaticMesh'E_Pickups.Udamage'); L.AddPrecacheMaterial(Material'XGameShaders.PlayerShaders.WeaponUDamageShader'); } simulated function UpdatePrecacheMaterials() { Level.AddPrecacheMaterial(Material'XGameShaders.PlayerShaders.WeaponUDamageShader'); super.UpdatePrecacheMaterials(); } simulated function UpdatePrecacheStaticMeshes() { Level.AddPrecacheStaticMesh(StaticMesh'E_Pickups.Udamage'); Super.UpdatePrecacheStaticMeshes(); } auto state Pickup { function Touch( actor Other ) { local Pawn P; if ( ValidTouch(Other) ) { P = Pawn(Other); P.EnableUDamage(30); AnnouncePickup(P); SetRespawn(); } } } A%+'9p9S  G AGA)I-2,Wh3}3}3}3}$@ $BMDOUBLE DAMAGE!  ]UDamagePickup $fff?$?  b$D $B$A$ A:]AA.AA@AA*>.-9D9D GAAAA ([,22}i އ3}"2  = ShieldPack $?  $B:]AA/4TG!AJ~{.{6 &-- GAh//============================================================================= // TournamentPickup. //============================================================================= class TournamentPickup extends Pickup; function RespawnEffect() { spawn(class'PlayerSpawnEffect'); } AW//============================================================================= // MiniHealthPack //============================================================================= class MiniHealthPack extends TournamentHealth; // todo: need custom sound effect for this! 6727"ke""$>]You picked up a Health Vial +  = HealthPack c$E$u=$?  $A:]AA $0 9? R/ 9?%. ) >  ף; :T< : GAz//============================================================================= // HealthPack //============================================================================= class HealthPack extends TournamentHealth notplaceable; #exec OBJ LOAD FILE=PickupSounds.uax #exec OBJ LOAD FILE=E_Pickups.usx A;AA A9/2<] ke"  = HealthPack c$ E$>$?  T$33>:]AAS (T<9? R GAmclass TournamentHealth extends TournamentPickUp abstract; var() int HealingAmount; var() bool bSuperHeal; simulated static function UpdateHUD(HUD H) { H.LastPickupTime = H.Level.TimeSeconds; H.LastHealthPickupTime = H.LastPickupTime; } /* 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) { local int Heal; if ( (PathWeight > 500) && (HealingAmount < 10) ) return 0; Heal = Min(GetHealMax(Other),Other.Health + HealingAmount) - Other.Health; if ( AIController(Other.Controller).PriorityObjective() && (Other.Health > 65) ) return (0.01 * Heal)/PathWeight; return (0.02 * Heal)/PathWeight; } event float BotDesireability(Pawn Bot) { local float desire; local int HealMax; HealMax = GetHealMax(Bot); desire = Min(HealingAmount, HealMax - Bot.Health); if ( (Bot.Weapon != None) && (Bot.Weapon.AIRating > 0.5) ) desire *= 1.7; if ( bSuperHeal || (Bot.Health < 45) ) return ( FMin(0.03 * desire, 2.2) ); else { if ( desire > 6 ) desire = FMax(desire,25); else if ( Bot.Controller.bHuntPlayer ) return 0; return ( FMin(0.017 * desire, 2.0) ); } } static function string GetLocalString( optional int Switch, optional PlayerReplicationInfo RelatedPRI_1, optional PlayerReplicationInfo RelatedPRI_2 ) { return Default.PickupMessage$Default.HealingAmount; } function int GetHealMax(Pawn P) { if (bSuperHeal) return P.SuperHealthMax; return P.HealthMax; } auto state Pickup { function Touch( actor Other ) { local Pawn P; if ( ValidTouch(Other) ) { P = Pawn(Other); if ( P.GiveHealth(HealingAmount, GetHealMax(P)) || (bSuperHeal && !Level.Game.bTeamGame) ) { AnnouncePickup(P); SetRespawn(); } } } } AAA=A')p9S G ABAACAADAA@AA@F<vG!A2he .e 5-  GA-AA]//============================================================================= // 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(); } } } A]J*<G!A"FC. 2A GAM//============================================================================= // SuperShieldPack //============================================================================= class SuperShieldPack extends ShieldPickup notplaceable; #exec OBJ LOAD FILE=E_Pickups.usx static function StaticPrecache(LevelInfo L) { L.AddPrecacheStaticMesh(StaticMesh'E_Pickups.SuperShield'); } H(2L Wh,eh,eh,eh,eh,e3}h,e1$@$>$A] Adrenaline  ]AdrenelinPickup c$E$)\=$?  $B$A$ A:]AANAAOAAAAM$ 6N9?M8wM*-M9?&>N GAAAAA8RSFRRRR G!A QS FQQQQ G!AAAAAAAAAVa JV `  G AUa l+U ` U d  G AWa WW `  G AXa )X `  G A^t `  GAZs2 d  G__@?@@N@H@[@X@<@Z@Y@D@C_i@@NYI_K@cNW_dcAZUH@\HaZ@I@[@hHZZ O_AH$`:N]NeJ PHS@J k_jH'`gHtHs>/@]_Sfl l_m@M_Q@R_L T 7Z\>h>f>e>,Z]>g@`H0Z=ZYN^ZiZE j.aA5%Gb6%Fp6!j6Xi<  x<4UE=A&TT=8XhA8nwA EBFURBJUaBUpBJXB=FNC4X]CFXlC%m{CbID" WDXdD"FsD/UBEL1QE;_E +gmEITIL/]J$fLK4|rM ^4unQLWcWazX0'HY^oY ^4HM]%aUw2^4dcw,^4NG~'*U*B-BN*VP*a_?m"al/az ,gH/o3i^^4tG7^4c{7Q^ $So<^4FB8;H8aV/hd