[Setup] Product=Predator Version=99 Archive=predator.umod SrcPath=. MasterPath=.. Group=SetupGroup Group=umodINIGroup Group=PredatorGroup [SetupGroup] Copy=(Src=System\Manifest.ini,Master=System\Manifest.ini,Size=447,Flags=3) Copy=(Src=System\Manifest.int,Master=System\Manifest.int,Size=304,Flags=3) [umodINIGroup] Ini=System\UnrealTournament.ini,Engine.GameEngine.ServerPackages=Predator [PredatorGroup] File=(Src=System\Predator.u,Size=63856) File=(Src=System\Predator.int,Size=402) File=(Src=System\predator.txt,Size=4510) File=(Src=System\Predator.ini,Size=742) [Setup] LocalProduct=Predator ReadMe=System\predator.txt SetupWindowTitle=Predator AutoplayWindowTitle=Predator Options ProductURL=http://www.planetunreal.com/nzone VersionURL=http://www.planetunreal.com/nzone Developer=William "Ntruder" Chenoweth DeveloperURL=http://www.planetunreal.com/nzone *E@q@9}qNoneCreateControlSetText SetHelpText GetValueSetFont SetValue SetMaxLengthSetNumericOnlyGiveTo GiveAmmo PlayerPawnBroadcastLocalizedMessage Predator MakePredatorBotSystemCorePLogBroadcastMessage SendHome MakeNormalEngineUWindow GetHumanNameTotalQualifiedCreated ScoreBlue Activate ScoreRedYPosDrop GetMultiSkin GetString ChangeTeamBotpackDestroyedPredator ScoreKill SetMultiSkin NowPredatorMutateReceiveLocalizedMessagePostBeginPlayTickTimer ClientClass WindowTitle NewPredatorNotifyPredatorMessage2PredatorMessagePredatorMenuItem ModifyPlayer Freelance SetOrdersCheckReplacement MenuCaption MenuHelpExecuteUMenuPredatorConfigWindowPredatorConfigClientUT_invisibility ut_jumpbootsMutatorOther SkinNameOldTeam RelatedPRI_2PKiller NewWeapon PlayersOnly DeltaTimeWeaponScoreHasFlagbAdminGameOwner RelatedPRI_1OptionalObject MutateString PlayerName LevelInfo FaceName bIsFemale NextMutatorInv bHeldItemCharge GameInfo bCheckedSenderPickupAmmoCountDropWhenKilled KillCount Translocator ChainSaw ImpactHammer enforcerWarheadLauncher LocationHealth RandRangebSuperRelevantPName PulseGun SniperRifle minigun2 UT_EightballPlayerReplicationInfo Inventory MoveTarget LocalMessageActorPawnCountMessageClassPackageSwitch TextBufferUWindowEditControlUWindowPulldownMenuItemUWindowDialogClientWindowUWindowFramedWindowUWindowRootWindowUWindowCheckboxUWindowDialogControlUWindowWindowUWindowPulldownMenuSetSize CreateWindowCEWinLeft EditBoxWidth WinHeight WinWidthWinTopRootFTeams TeamInfoSizeTeam RespawnTime ut_biorifleripperUMenuModMenuItem MenuItemObjectDoubleEnforcerUT_FlakCannon TeamGamePlus Function ShockRifle UnrealShareCTFGameDisableMaxAllowedTeams HealthPack flakammoCTFFlagbioammoRedFlagCriticalEventPlus CTFMessageHolder BlueFlagbHeldSexbInit StrPropertyStaticSaveConfig ReturnValue ScriptTextLevelAlign isPredator OldPredatorOldPredatorTeamPredatorChanceBalance CaptureFlagFlagPredatorScoreKillPredatorScoreKillPredatorFragsPredatorSuicideScorePredatorSuicideFrags PredatorTeam KeepPredatorKillerIsPredatorPredatorHealth GiveRipper RipperAmmo GivePulse PulseAmmo GiveRocket RocketAmmo GiveShock ShockAmmo GiveSniper SniperAmmo GiveRedeemer RedeemerAmmo GiveEnforcer EnforcerAmmo GiveFlakGiveBio GiveMinigun MinigunAmmo JumpCharge InvisChargeHammer DualEnforcerDropKegknameStructProperty logstringClassProperty MinPlayers TeamCheck TeamCountequalchancefnametotalqObjectPropertyFloatProperty BoolProperty IntProperty ByteProperty KillScore SuicideScore KillFrags SuicideFrags FlagScorelR P2hl====Rù9 }9 }9 }9 }9 }9 }9 }Rj\j\.;lRù9 }9 }9 }Rù9 }9 }9 }RR_HR_HR_HR_HR_HR_HR_HR_H9 }.;9 }9 }9 }9 }9 }9 }.;9 }.;9 }9 }RR_H9 }I+\I+\9 }j@j@j@j@j@j@j@j@tttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt9 }9 }9 }j\j\9 }.;j\j\R:lj\9 }.;j\j\R:lj\j\j\9 }j\j\9 }Rj\j\j\j\R:lj\j\j\j\j\R:lj\9 }9 }9 }9 }9 }9 }9 }.;9 }9 }9 }.;9 }RR:l9 }.;9 }9 }l Mv5a x  1 f203#"%)$,&'! -*+(.HT7@D@KVNW<P@d@]>@`@C@c@e@6@PJu@w@R@T@V@N@A@U@O@@k@Z@Q@]@Y@dW22\/npl.;.;.; #']is the Predator!$]destroyed the Predator!]Red Team scores a bonus!]Blue Team scores a bonus!$bCq@G@l@X@b@E@?@h@[@Bm@i@^@g@S@n@F@o@j@_@p@4@=@ars@t@@{@|@y@:@;~@@@A@@j[<2D=R:ʱMo o  -E.]Predator Configurationhn={EFH>ø~2h|.Xڇ2h|.Xڇ2h|.Xڇ2h|.Xڇ2h|.Xڇ2h|.Xڇ2h|.Xڇ2ht2h|.Xڇ2ht2h|.Xڇ2ht2h|.Xڇ2ht2h|.Xڇ2ht2h|.Xڇ2ht2h|.Xڇ2ht2h|.Xڇ2ht2h|.Xڇ2ht2h|.Xڇ2ht2h|.Xڇ2h|.Xڇ2h|.Xڇ2h|.Xڇ2ht2ht2ht2ht2ht2ht2ht2ht2ht2ht2h|.Xڇ2ht2h|.Xڇ2h|.Xڅ|.Xڅ|.Xڅ|.Xڅ|.Xڇ2h|.Xڅ|.Xڅ|.Xڅ|.Xڅ|.Xڇ2h|.Xڅ|.Xڅ|.Xڅ|.Xڅ|.Xڇ2h|.Xڅ|.Xڅ|.Xڅ|.Xڅ|.Xڇ2htttttt2h|.Xڅ|.Xڅ|.Xڅ|.Xڅ|.Xڇ2htttttt2h|.Xڅ|.Xڅ|.Xڅ|.Xڅ|.Xڇ2htttttt2h|.Xڅ|.Xڅ|.Xڅ|.Xڅ|.Xڇ2htttttt2h|.Xڅ|.Xڅ|.Xڅ|.Xڅ|.Xڇ2htttttt2h|.Xڅ|.Xڅ|.Xڅ|.Xڅ|.Xڇ2htttttt2h|.Xڅ|.Xڅ|.Xڅ|.Xڅ|.Xڇ2htttttt2h|.Xڅ|.Xڅ|.Xڅ|.Xڅ|.Xڇ2htttttt2h|.Xڅ|.Xڅ|.Xڅ|.Xڅ|.Xڇ2htttttt2h|.Xڅ|.Xڅ|.Xڅ|.Xڅ|.Xڇ2htttttt2h|.Xڅ|.Xڅ|.Xڅ|.Xڅ|.Xڇ2h|.Xڅ|.Xڅ|.Xڅ|.Xڅ|.Xڇ2h|.Xڅ|.Xڅ|.Xڅ|.Xڅ|.Xڇ2h|.Xڅ|.Xڅ|.Xڅ|.Xڅ|.Xڇ2h|.Xڅ|.Xڅ|.Xڅ|.Xڅ|.Xڇ2httttttt2httttttt2httttttt2httttttt2httttttt2httttttt2httttttt2httttttt2httttttt2h|.Xڅ|.Xڅ|.Xڅ|.Xڅ|.Xڇ2h|.Xڅ|.Xڅ|.Xڅ|.Xڅ|.Xڇ2httttttt2h IbK12Gwfpl.;.;.; #']is the Predator!$]destroyed the Predator!]Red Team scores a bonus!]Blue Team scores a bonus!$C8@z! Z 2%r;*;z ]&Dr;*;{ ,pr;*:;%|y   _Z+w* w* w*\-cYrrr* ,**:.YYr* ,**:.r r  SMJY^9/,:9%K%/ a0 W-6Ta/! 9a/! a/!9109D??9/ a0 7-6a/! Ka/! a/!K69K10 XH7OG8NHa/!?rH w* A(Ha/!>rH w* >(' @\%P5Fr5w.*-r* ,**:.F-r* ,**:.r5(a/! a/!-75T5-OherOhimgr5ppppPredator (T) killed Oself.^dw*?ihw*?dpT destroyed the Predator! \&**{w.* ?%:.?? G,**-D-6a/! w*%5 OB}! Y} 2%r:*:B ]&Dr:*:A ,pr:*::%@~   ki:6I%/ a0 JP-6MJa/! IJa/! Ja/!I10I TXCC?,?, o*9Q-r' $C%C68%8&-E(-r'a?' p@c l(nw.*-b=%<&W%4<.=.<.=<**=.<.W<9W.." 4." =$ =4  xt & xt=4v H4J , , *l-7* UCpPredator: C e@,Z1w.*/a0 @f:@%@Found Red Flag Object:@&@Found Blue Flag Object10w* w*a( Hclass PredatorMessage2 extends CriticalEventPlus; var localized string NowPredator, DestroyedPredator; var localized string ScoreRed, ScoreBlue; static function string GetString( optional int Switch, optional PlayerReplicationInfo RelatedPRI_1, optional PlayerReplicationInfo RelatedPRI_2, optional Object OptionalObject ) { switch (Switch) { // Now the Predator case 0: if (RelatedPRI_1 == None) return ""; return RelatedPRI_1.PlayerName@Default.NowPredator; break; // Destroyed the Predator case 1: if (RelatedPRI_1 == None) return ""; return RelatedPRI_1.PlayerName@Default.DestroyedPredator; break; // Team Score case 2: if (RelatedPRI_1 == None) return ""; if ( RelatedPRI_1.Team == 0 ) return Default.ScoreRed; else return Default.ScoreBlue; break; } return ""; } La 8&4:=G ws&ws=Gw.* 4,4.(a/!. 6!5*'.*C>%a w*>-'  A%a w*A  -qa w*p-'    -_a w*l-'    -Za w*]-'    #-Na #w*R-'    -ea w*[-'    )-na )w*o-'    -`a w*X-'    /-Ya /w*Q-'    -Sa w*F-'    5-ma 5w*F-'    -ja w*g-'    -Pa w*-'  n-ka nw*-'  -Va w*-'  -U M \%**pM is now the Predator.pM is now the Predator. Gclass PredatorMessage extends CriticalEventPlus; var localized string NowPredator, DestroyedPredator; var localized string ScoreRed, ScoreBlue; static function string GetString( optional int Switch, optional PlayerReplicationInfo RelatedPRI_1, optional PlayerReplicationInfo RelatedPRI_2, optional Object OptionalObject ) { switch (Switch) { // Now the Predator case 0: if (RelatedPRI_1 == None) return ""; return RelatedPRI_1.PlayerName@Default.NowPredator; break; // Destroyed the Predator case 1: if (RelatedPRI_1 == None) return ""; return RelatedPRI_1.PlayerName@Default.DestroyedPredator; break; // Team Score case 2: if (RelatedPRI_1 == None) return ""; if ( RelatedPRI_1.Team == 0 ) return Default.ScoreRed; else return Default.ScoreBlue; break; } return ""; } QL(K/u-wzLStopPredatorThe Predator has been stopped by an Admin.*zLNoMorePredator-E'zLRestartPredator-E(w*(Lu gclass PredatorMenuItem expands UMenuModMenuItem; function Execute() { MenuItem.Owner.Root.CreateWindow(class'PredatorConfigWindow', 10, 10, 150, 100); } fq32g ͷ;aGնmo  ;8]Predator Options9]Set the options for PredatorNclass PredatorConfigClient expands UWindowDialogClientWindow; var UWindowCheckBox Balance; var UWindowCheckBox PlayersOnly; var UWindowCheckBox KeepPredator; var UWindowCheckBox KillerIsPredator; var UWindowCheckBox DropKeg; var UWindowCheckBox DualEnforcer; var UWindowCheckBox Hammer; var UWindowCheckBox Chainsaw; var UWindowCheckBox Translocator; var UWindowEditControl EnforcerAmmo; var UWindowCheckBox GiveEnforcer; var UWindowEditControl BioAmmo; var UWindowCheckBox GiveBio; var UWindowEditControl ShockAmmo; var UWindowCheckBox GiveShock; var UWindowEditControl PulseAmmo; var UWindowCheckBox GivePulse; var UWindowEditControl RipperAmmo; var UWindowCheckBox GiveRipper; var UWindowEditControl MinigunAmmo; var UWindowCheckBox GiveMinigun; var UWindowEditControl FlakAmmo; var UWindowCheckBox GiveFlak; var UWindowEditControl RocketAmmo; var UWindowCheckBox GiveRocket; var UWindowEditControl SniperAmmo; var UWindowCheckBox GiveSniper; var UWindowEditControl RedeemerAmmo; var UWindowCheckBox GiveRedeemer; var UWindowEditControl InvisCharge; var UWindowEditControl JumpCharge; var UWindowEditControl KillScore; var UWindowEditControl SuicideScore; var UWindowEditControl KillFrags; var UWindowEditControl SuicideFrags; var UWindowEditControl Health; var UWindowEditControl FlagScore; var UWindowEditControl PredatorTeam; var UWindowEditControl MinPlayers; var UWindowCheckBox CaptureFlag; function Created() { Super.Created(); PlayersOnly = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 10, 100, 1)); PlayersOnly.SetText("Players Only"); PlayersOnly.SetHelpText("Only real players can be the Predator, not bots."); PlayersOnly.SetFont(F_Normal); PlayersOnly.Align = TA_Left; PlayersOnly.bChecked = class'Predator'.default.PlayersOnly; KeepPredator = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 30, 100, 1)); KeepPredator.SetText("Keep Predator"); KeepPredator.SetHelpText("One player will be Predator the entire game, even if killed."); KeepPredator.SetFont(F_Normal); KeepPredator.Align = TA_Left; KeepPredator.bChecked = class'Predator'.default.KeepPredator; KillerIsPredator = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 150, 10, 100, 1)); KillerIsPredator.SetText("Killer Is Predator"); KillerIsPredator.SetHelpText("Whoever kills the Predator becomes the next Predator."); KillerIsPredator.SetFont(F_Normal); KillerIsPredator.Align = TA_Left; KillerIsPredator.bChecked = class'Predator'.default.KillerIsPredator; DropKeg = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 150, 30, 100, 1)); DropKeg.SetText("Drop Keg"); DropKeg.SetHelpText("Predator drops Big Keg O' Health on death"); DropKeg.SetFont(F_Normal); DropKeg.Align = TA_Left; DropKeg.bChecked = class'Predator'.default.DropKeg; EnforcerAmmo = UWindowEditControl(CreateControl(class'UWindowEditControl', 150, 70, 130, 1)); EnforcerAmmo.SetText("Enforcer Ammo"); EnforcerAmmo.SetNumericOnly(True); EnforcerAmmo.SetMaxLength(3); EnforcerAmmo.EditBoxWidth = 25; EnforcerAmmo.Align = TA_Left; EnforcerAmmo.SetValue(string(class'Predator'.default.EnforcerAmmo)); GiveEnforcer = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 70, 100, 1)); GiveEnforcer.SetText("Enforcer"); GiveEnforcer.SetHelpText("Predator gets the Enforcer"); GiveEnforcer.SetFont(F_Normal); GiveEnforcer.Align = TA_Left; GiveEnforcer.bChecked = class'Predator'.default.GiveEnforcer; BioAmmo = UWindowEditControl(CreateControl(class'UWindowEditControl', 150, 90, 130, 1)); BioAmmo.SetText("BioRifle Ammo"); BioAmmo.SetNumericOnly(True); BioAmmo.SetMaxLength(3); BioAmmo.EditBoxWidth = 25; BioAmmo.Align = TA_Left; BioAmmo.SetValue(string(class'Predator'.default.BioAmmo)); GiveBio = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 90, 100, 1)); GiveBio.SetText("BioRifle"); GiveBio.SetHelpText("Predator gets the BioRifle"); GiveBio.SetFont(F_Normal); GiveBio.Align = TA_Left; GiveBio.bChecked = class'Predator'.default.GiveBio; ShockAmmo = UWindowEditControl(CreateControl(class'UWindowEditControl', 150, 110, 130, 1)); ShockAmmo.SetText("ShockRifle Ammo"); ShockAmmo.SetNumericOnly(True); ShockAmmo.SetMaxLength(3); ShockAmmo.EditBoxWidth = 25; ShockAmmo.Align = TA_Left; ShockAmmo.SetValue(string(class'Predator'.default.ShockAmmo)); GiveShock = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 110, 100, 1)); GiveShock.SetText("ShockRifle"); GiveShock.SetHelpText("Predator gets the ShockRifle"); GiveShock.SetFont(F_Normal); GiveShock.Align = TA_Left; GiveShock.bChecked = class'Predator'.default.GiveShock; PulseAmmo = UWindowEditControl(CreateControl(class'UWindowEditControl', 150, 130, 130, 1)); PulseAmmo.SetText("Pulse Gun Ammo"); PulseAmmo.SetNumericOnly(True); PulseAmmo.SetMaxLength(3); PulseAmmo.EditBoxWidth = 25; PulseAmmo.Align = TA_Left; PulseAmmo.SetValue(string(class'Predator'.default.PulseAmmo)); GivePulse = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 130, 100, 1)); GivePulse.SetText("Pulse Gun"); GivePulse.SetHelpText("Predator gets the Pulse Gun"); GivePulse.SetFont(F_Normal); GivePulse.Align = TA_Left; GivePulse.bChecked = class'Predator'.default.GivePulse; RipperAmmo = UWindowEditControl(CreateControl(class'UWindowEditControl', 150, 150, 130, 1)); RipperAmmo.SetText("Ripper Ammo"); RipperAmmo.SetNumericOnly(True); RipperAmmo.SetMaxLength(3); RipperAmmo.EditBoxWidth = 25; RipperAmmo.Align = TA_Left; RipperAmmo.SetValue(string(class'Predator'.default.RipperAmmo)); GiveRipper = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 150, 100, 1)); GiveRipper.SetText("Ripper"); GiveRipper.SetHelpText("Predator gets the Ripper"); GiveRipper.SetFont(F_Normal); GiveRipper.Align = TA_Left; GiveRipper.bChecked = class'Predator'.default.GiveRipper; MinigunAmmo = UWindowEditControl(CreateControl(class'UWindowEditControl', 150, 170, 130, 1)); MinigunAmmo.SetText("Minigun Ammo"); MinigunAmmo.SetNumericOnly(True); MinigunAmmo.SetMaxLength(3); MinigunAmmo.EditBoxWidth = 25; MinigunAmmo.Align = TA_Left; MinigunAmmo.SetValue(string(class'Predator'.default.MinigunAmmo)); GiveMinigun = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 170, 100, 1)); GiveMinigun.SetText("Minigun"); GiveMinigun.SetHelpText("Predator gets the Minigun"); GiveMinigun.SetFont(F_Normal); GiveMinigun.Align = TA_Left; GiveMinigun.bChecked = class'Predator'.default.GiveMinigun; FlakAmmo = UWindowEditControl(CreateControl(class'UWindowEditControl', 150, 190, 130, 1)); FlakAmmo.SetText("Flak Cannon Ammo"); FlakAmmo.SetNumericOnly(True); FlakAmmo.SetMaxLength(3); FlakAmmo.EditBoxWidth = 25; FlakAmmo.Align = TA_Left; FlakAmmo.SetValue(string(class'Predator'.default.FlakAmmo)); GiveFlak = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 190, 100, 1)); GiveFlak.SetText("Flak Cannon"); GiveFlak.SetHelpText("Predator gets the Flak Cannon"); GiveFlak.SetFont(F_Normal); GiveFlak.Align = TA_Left; GiveFlak.bChecked = class'Predator'.default.GiveFlak; RocketAmmo = UWindowEditControl(CreateControl(class'UWindowEditControl', 150, 210, 130, 1)); RocketAmmo.SetText("Rocket Launcher Ammo"); RocketAmmo.SetNumericOnly(True); RocketAmmo.SetMaxLength(3); RocketAmmo.EditBoxWidth = 25; RocketAmmo.Align = TA_Left; RocketAmmo.SetValue(string(class'Predator'.default.RocketAmmo)); GiveRocket = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 210, 100, 1)); GiveRocket.SetText("Rocket Launcher"); GiveRocket.SetHelpText("Predator gets the Rocket Launcher"); GiveRocket.SetFont(F_Normal); GiveRocket.Align = TA_Left; GiveRocket.bChecked = class'Predator'.default.GiveRocket; SniperAmmo = UWindowEditControl(CreateControl(class'UWindowEditControl', 150, 230, 130, 1)); SniperAmmo.SetText("Sniper Rifle Ammo"); SniperAmmo.SetNumericOnly(True); SniperAmmo.SetMaxLength(3); SniperAmmo.EditBoxWidth = 25; SniperAmmo.Align = TA_Left; SniperAmmo.SetValue(string(class'Predator'.default.SniperAmmo)); GiveSniper = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 230, 100, 1)); GiveSniper.SetText("Sniper Rifle"); GiveSniper.SetHelpText("Predator gets the Sniper Rifle"); GiveSniper.SetFont(F_Normal); GiveSniper.Align = TA_Left; GiveSniper.bChecked = class'Predator'.default.GiveSniper; RedeemerAmmo = UWindowEditControl(CreateControl(class'UWindowEditControl', 150, 250, 130, 1)); RedeemerAmmo.SetText("Redeemer Ammo"); RedeemerAmmo.SetNumericOnly(True); RedeemerAmmo.SetMaxLength(3); RedeemerAmmo.EditBoxWidth = 25; RedeemerAmmo.Align = TA_Left; RedeemerAmmo.SetValue(string(class'Predator'.default.RedeemerAmmo)); GiveRedeemer = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 250, 100, 1)); GiveRedeemer.SetText("Redeemer"); GiveRedeemer.SetHelpText("Predator gets the Redeemer"); GiveRedeemer.SetFont(F_Normal); GiveRedeemer.Align = TA_Left; GiveRedeemer.bChecked = class'Predator'.default.GiveRedeemer; DualEnforcer = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 270, 100, 1)); DualEnforcer.SetText("Dual Enforcers"); DualEnforcer.SetHelpText("Predator gets Dual Enforcers"); DualEnforcer.SetFont(F_Normal); DualEnforcer.Align = TA_Left; DualEnforcer.bChecked = class'Predator'.default.DualEnforcer; Hammer = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 150, 270, 100, 1)); Hammer.SetText("Impact Hammer"); Hammer.SetHelpText("Predator gets Impact Hammer"); Hammer.SetFont(F_Normal); Hammer.Align = TA_Left; Hammer.bChecked = class'Predator'.default.Hammer; Chainsaw = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 290, 100, 1)); Chainsaw.SetText("Chainsaw"); Chainsaw.SetHelpText("Predator gets Chainsaw"); Chainsaw.SetFont(F_Normal); Chainsaw.Align = TA_Left; Chainsaw.bChecked = class'Predator'.default.Chainsaw; Translocator = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 150, 290, 100, 1)); Translocator.SetText("Translocator"); Translocator.SetHelpText("Predator gets Translocator"); Translocator.SetFont(F_Normal); Translocator.Align = TA_Left; Translocator.bChecked = class'Predator'.default.Translocator; InvisCharge = UWindowEditControl(CreateControl(class'UWindowEditControl', 320, 10, 120, 1)); InvisCharge.SetText("Invisibility"); InvisCharge.SetHelpText("Invisibility Charge. 0 = Disable 99999 = Unlimited"); InvisCharge.SetNumericOnly(True); InvisCharge.SetMaxLength(5); InvisCharge.EditBoxWidth = 30; InvisCharge.Align = TA_Left; InvisCharge.SetValue(string(class'Predator'.default.InvisCharge)); JumpCharge = UWindowEditControl(CreateControl(class'UWindowEditControl', 320, 30, 120, 1)); JumpCharge.SetText("Jump Boots"); JumpCharge.SetHelpText("Jump Boots Charge. 0 = Disable 99999 = Unlimited"); JumpCharge.SetNumericOnly(True); JumpCharge.SetMaxLength(5); JumpCharge.EditBoxWidth = 30; JumpCharge.Align = TA_Left; JumpCharge.SetValue(string(class'Predator'.default.JumpCharge)); KillScore = UWindowEditControl(CreateControl(class'UWindowEditControl', 320, 130, 120, 1)); KillScore.SetText("Kill Points (+)"); KillScore.SetHelpText("Points awarded to killer of Predator"); KillScore.SetNumericOnly(True); KillScore.SetMaxLength(2); KillScore.EditBoxWidth = 25; KillScore.Align = TA_Left; KillScore.SetValue(string(class'Predator'.default.KillPredatorScore)); SuicideScore = UWindowEditControl(CreateControl(class'UWindowEditControl', 320, 150, 120, 1)); SuicideScore.SetText("Suicide Points (-)"); SuicideScore.SetHelpText("Points removed from Predator's score on Suicide"); SuicideScore.SetNumericOnly(True); SuicideScore.SetMaxLength(2); SuicideScore.EditBoxWidth = 25; SuicideScore.Align = TA_Left; SuicideScore.SetValue(string(class'Predator'.default.PredatorSuicideScore)); KillFrags = UWindowEditControl(CreateControl(class'UWindowEditControl', 320, 90, 120, 1)); KillFrags.SetText("Kill Frags (+)"); KillFrags.SetHelpText("Frags awarded to killer of Predator"); KillFrags.SetNumericOnly(True); KillFrags.SetMaxLength(2); KillFrags.EditBoxWidth = 25; KillFrags.Align = TA_Left; KillFrags.SetValue(string(class'Predator'.default.KillPredatorFrags)); SuicideFrags = UWindowEditControl(CreateControl(class'UWindowEditControl', 320, 110, 120, 1)); SuicideFrags.SetText("Suicide Frags (-)"); SuicideFrags.SetHelpText("Frags removed from Predator's score on Suicide"); SuicideFrags.SetNumericOnly(True); SuicideFrags.SetMaxLength(2); SuicideFrags.EditBoxWidth = 25; SuicideFrags.Align = TA_Left; SuicideFrags.SetValue(string(class'Predator'.default.PredatorSuicideFrags)); Health = UWindowEditControl(CreateControl(class'UWindowEditControl', 320, 50, 120, 1)); Health.SetText("Health"); Health.SetHelpText("Predator's base Health"); Health.SetNumericOnly(True); Health.SetMaxLength(3); Health.EditBoxWidth = 25; Health.Align = TA_Left; Health.SetValue(string(class'Predator'.default.PredatorHealth)); FlagScore = UWindowEditControl(CreateControl(class'UWindowEditControl', 320, 170, 120, 1)); FlagScore.SetText("CTF Team Bonus"); FlagScore.SetHelpText("CTF Team Bonus for destroying the Predator"); FlagScore.SetNumericOnly(True); FlagScore.SetMaxLength(2); FlagScore.EditBoxWidth = 25; FlagScore.Align = TA_Left; FlagScore.SetValue(string(class'Predator'.default.FlagPredatorScore)); PredatorTeam = UWindowEditControl(CreateControl(class'UWindowEditControl', 320, 190, 120, 1)); PredatorTeam.SetText("Predator Team"); PredatorTeam.SetHelpText("Predator's Team Color, 255 = None"); PredatorTeam.SetNumericOnly(True); PredatorTeam.SetMaxLength(3); PredatorTeam.EditBoxWidth = 25; PredatorTeam.Align = TA_Left; PredatorTeam.SetValue(string(class'Predator'.default.PredatorTeam)); Balance = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 320, 210, 120, 1)); Balance.SetText("Balance Teams"); Balance.SetHelpText("Balance Teams when changing Predators"); Balance.SetFont(F_Normal); Balance.Align = TA_Left; Balance.bChecked = class'Predator'.default.Balance; CaptureFlag = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 320, 230, 120, 1)); CaptureFlag.SetText("Capture Flag"); CaptureFlag.SetHelpText("The Predator will be allowed to capture and hold flags"); CaptureFlag.SetFont(F_Normal); CaptureFlag.Align = TA_Left; CaptureFlag.bChecked = class'Predator'.default.CaptureFlag; MinPlayers = UWindowEditControl(CreateControl(class'UWindowEditControl', 320, 250, 120, 1)); MinPlayers.SetText("Minimum Players"); MinPlayers.SetHelpText("Minimum number of players or players and bots before a Predator can be created"); MinPlayers.SetNumericOnly(True); MinPlayers.SetMaxLength(2); MinPlayers.EditBoxWidth = 15; MinPlayers.Align = TA_Left; MinPlayers.SetValue(string(class'Predator'.default.MinPlayers)); // You could of course add heaps of controls in here. // See the UMenu and UTMenu for a billion examples. } function Notify(UWindowDialogControl C, byte E) { switch(E) { case DE_Change: switch(C) { case PlayersOnly: class'Predator'.default.PlayersOnly = PlayersOnly.bChecked; break; case KeepPredator: class'Predator'.default.KeepPredator = KeepPredator.bChecked; class'Predator'.default.KillerIsPredator = False; KillerIsPredator.bChecked = False; break; case KillerIsPredator: class'Predator'.default.KillerIsPredator = KillerIsPredator.bChecked; class'Predator'.default.KeepPredator = False; KeepPredator.bChecked = False; break; case DropKeg: class'Predator'.default.DropKeg = DropKeg.bChecked; break; case GiveEnforcer: class'Predator'.default.GiveEnforcer = GiveEnforcer.bChecked; break; case EnforcerAmmo: class'Predator'.default.EnforcerAmmo = int(EnforcerAmmo.GetValue()); break; case GiveBio: class'Predator'.default.GiveBio = GiveBio.bChecked; break; case BioAmmo: class'Predator'.default.BioAmmo = int(BioAmmo.GetValue()); break; case GiveShock: class'Predator'.default.GiveShock = GiveShock.bChecked; break; case ShockAmmo: class'Predator'.default.ShockAmmo = int(ShockAmmo.GetValue()); break; case GivePulse: class'Predator'.default.GivePulse = GivePulse.bChecked; break; case PulseAmmo: class'Predator'.default.PulseAmmo = int(PulseAmmo.GetValue()); break; case GiveRipper: class'Predator'.default.GiveRipper = GiveRipper.bChecked; break; case RipperAmmo: class'Predator'.default.RipperAmmo = int(RipperAmmo.GetValue()); break; case GiveMinigun: class'Predator'.default.GiveMinigun = GiveMinigun.bChecked; break; case MinigunAmmo: class'Predator'.default.MinigunAmmo = int(MinigunAmmo.GetValue()); break; case GiveFlak: class'Predator'.default.GiveFlak = GiveFlak.bChecked; break; case FlakAmmo: class'Predator'.default.FlakAmmo = int(FlakAmmo.GetValue()); break; case GiveRocket: class'Predator'.default.GiveRocket = GiveRocket.bChecked; break; case RocketAmmo: class'Predator'.default.RocketAmmo = int(RocketAmmo.GetValue()); break; case GiveSniper: class'Predator'.default.GiveSniper = GiveSniper.bChecked; break; case SniperAmmo: class'Predator'.default.SniperAmmo = int(SniperAmmo.GetValue()); break; case GiveRedeemer: class'Predator'.default.GiveRedeemer = GiveRedeemer.bChecked; break; case RedeemerAmmo: class'Predator'.default.RedeemerAmmo = int(RedeemerAmmo.GetValue()); break; case DualEnforcer: class'Predator'.default.DualEnforcer = DualEnforcer.bChecked; break; case Hammer: class'Predator'.default.Hammer = Hammer.bChecked; break; case Chainsaw: class'Predator'.default.Chainsaw = Chainsaw.bChecked; break; case Translocator: class'Predator'.default.Translocator = Translocator.bChecked; break; case InvisCharge: class'Predator'.default.InvisCharge = int(InvisCharge.GetValue()); break; case JumpCharge: class'Predator'.default.JumpCharge = int(JumpCharge.GetValue()); break; case KillScore: class'Predator'.default.KillPredatorScore = int(KillScore.GetValue()); break; case SuicideScore: class'Predator'.default.PredatorSuicideScore = int(SuicideScore.GetValue()); break; case KillFrags: class'Predator'.default.KillPredatorFrags = int(KillFrags.GetValue()); break; case SuicideFrags: class'Predator'.default.PredatorSuicideFrags = int(SuicideFrags.GetValue()); break; case Health: class'Predator'.default.PredatorHealth = int(Health.GetValue()); break; case Health: class'Predator'.default.FlagPredatorScore = int(FlagScore.GetValue()); break; case PredatorTeam: class'Predator'.default.PredatorTeam = int(PredatorTeam.GetValue()); break; case FlagScore: class'Predator'.default.FlagPredatorScore = int(FlagScore.GetValue()); break; case Balance: class'Predator'.default.Balance = Balance.bChecked; break; case MinPlayers: class'Predator'.default.MinPlayers = int(MinPlayers.GetValue()); break; case CaptureFlag: class'Predator'.default.CaptureFlag = CaptureFlag.bChecked; break; } class'Predator'.static.StaticSaveConfig(); break; } } IYclass PredatorConfigWindow expands UWindowFramedWindow; function Created() { Super.Created(); SetSize(450, 330); WinLeft = (Root.WinWidth - WinWidth) / 2; WinTop = (Root.WinHeight - WinHeight) / 2; } `42w-E 7-6a/! gw*-7gr7r*B4BawvfD??Bpppppp T:SB C:Sf PC:S8f8844B&uua/! .) \%** lclass Predator expands Mutator; var Pawn isPredator; var Pawn OldPredator; var bool bInit; var int OldTeam; var int OldPredatorTeam; var int PredatorChance; var CTFFlag BlueFlag; var CTFFlag RedFlag; var globalconfig int MinPlayers; var globalconfig bool Balance; var globalconfig bool Disable; var globalconfig bool CaptureFlag; var globalconfig int FlagPredatorScore; var globalconfig int KillPredatorScore; var globalconfig int KillPredatorFrags; var globalconfig int PredatorSuicideScore; var globalconfig int PredatorSuicideFrags; var globalconfig int PredatorTeam; var globalconfig bool PlayersOnly; var globalconfig bool KeepPredator; var globalconfig bool KillerIsPredator; var globalconfig int PredatorHealth; var globalconfig bool GiveRipper; var globalconfig int RipperAmmo; var globalconfig bool GivePulse; var globalconfig int PulseAmmo; var globalconfig bool GiveRocket; var globalconfig int RocketAmmo; var globalconfig bool GiveShock; var globalconfig int ShockAmmo; var globalconfig bool GiveSniper; var globalconfig int SniperAmmo; var globalconfig bool GiveRedeemer; var globalconfig int RedeemerAmmo; var globalconfig bool GiveEnforcer; var globalconfig int EnforcerAmmo; var globalconfig bool GiveFlak; var globalconfig int FlakAmmo; var globalconfig bool GiveBio; var globalconfig int BioAmmo; var globalconfig bool GiveMinigun; var globalconfig int MinigunAmmo; var globalconfig int JumpCharge; var globalconfig int InvisCharge; var globalconfig bool Translocator; var globalconfig bool Hammer; var globalconfig bool Chainsaw; var globalconfig bool DualEnforcer; var globalconfig bool DropKeg; function PostBeginPlay() { local CTFFlag F; if (bInit == True) return; if (PredatorHealth <= 0) PredatorHealth = 999; if (PredatorChance == 0) PredatorChance = 1; Disable = False; bInit = True; SetTimer(1, True); } function ScoreKill(Pawn Killer, Pawn Other) { local string kname; local string sex; local CTFFlag F; Super.ScoreKill(Killer, Other); if ((isPredator == Other) && (CTFGame(Level.Game) != None)) { if ((RedFlag.bHeld) && (RedFlag.Holder == isPredator)) { RedFlag.Holder = None; RedFlag.SendHome(); BroadcastLocalizedMessage( class'CTFMessage', 3, None, None, CTFGame(Level.Game).Teams[RedFlag.Team] ); } if ((BlueFlag.bHeld) && (BlueFlag.Holder == isPredator)) { BlueFlag.Holder = None; BlueFlag.SendHome(); BroadcastLocalizedMessage( class'CTFMessage', 3, None, None, CTFGame(Level.Game).Teams[BlueFlag.Team] ); } } if ((isPredator == Other) && (Killer.IsA('PlayerPawn') || Killer.IsA('Bot'))) { if (!KeepPredator) MakeNormal(Other); kname = Killer.GetHumanName(); if (Other.bIsFemale) { sex = "her"; } else { sex = "him"; } if (Killer == Other) { BroadcastMessage("Predator (" $ kname $ ") killed " $ sex $ "self."); Killer.killCount -= PredatorSuicideFrags; if ( Killer.PlayerReplicationInfo != None ) { Killer.PlayerReplicationInfo.Score -= PredatorSuicideScore; } } else { Killer.killCount += KillPredatorFrags; if ( Killer.PlayerReplicationInfo != None ) { Killer.PlayerReplicationInfo.Score += KillPredatorScore; } BroadcastMessage(kname $ " destroyed the Predator!"); BroadcastLocalizedMessage( class'PredatorMessage', 1, Killer.PlayerReplicationInfo, None, None ); if ((CTFGame(Level.Game) != None) && (FlagPredatorScore > 0)) { CTFGame(Level.Game).Teams[Killer.PlayerReplicationInfo.Team].Score += FlagPredatorScore; BroadcastLocalizedMessage(class'PredatorMessage2', 2, Killer.PlayerReplicationInfo, None, None); } if (KillerIsPredator) { if (PlayersOnly) { if (Killer.IsA('PlayerPawn')) MakePredator(Killer); } else { MakePredator(Killer); } } } } if ( NextMutator != None ) NextMutator.ScoreKill(Killer, Other); } function PLog(string logstring) { Log("Predator: " $ logstring); } event Tick(float DeltaTime) { if ((BlueFlag != None) && (RedFlag != None) && (isPredator != None)) { if (CaptureFlag) { if ((BlueFlag.Holder == isPredator) && (RedFlag.Holder == isPredator)) { if (isPredator.PlayerReplicationInfo.HasFlag == BlueFlag) { RedFlag.Holder = None; RedFlag.SendHome(); BroadcastLocalizedMessage( class'CTFMessage', 3, None, None, CTFGame(Level.Game).Teams[RedFlag.Team] ); } else { if (isPredator.PlayerReplicationInfo.HasFlag == RedFlag) { BlueFlag.Holder = None; BlueFlag.SendHome(); BroadcastLocalizedMessage( class'CTFMessage', 3, None, None, CTFGame(Level.Game).Teams[BlueFlag.Team] ); } } } } else { if (BlueFlag.Holder == isPredator) BlueFlag.Drop(isPredator.Location); if (RedFlag.Holder == isPredator) RedFlag.Drop(isPredator.Location); } } } function MakePredator(Pawn NewPredator) { local Inventory Inv; local Weapon newweapon; local string pname; local string SkinName, FaceName; PredatorChance = 1; isPredator = NewPredator; OldTeam = NewPredator.PlayerReplicationInfo.Team; NewPredator.PlayerReplicationInfo.Team = PredatorTeam; NewPredator.static.GetMultiSkin(NewPredator, SkinName, FaceName); NewPredator.static.SetMultiSkin(NewPredator, SkinName, FaceName, PredatorTeam); if ((TeamGamePlus(Level.Game) != None) && (OldTeam != 255)) { TeamGamePlus(Level.Game).Teams[OldTeam].Size--; } if (NewPredator.IsA('Bot')) { Bot(NewPredator).SetOrders('Freelance', None, True); Bot(NewPredator).MoveTarget = None; } NewPredator.Health = PredatorHealth; if (InvisCharge > 0) { inv = Spawn(class'UT_Invisibility'); if( inv != None ) { inv.charge = InvisCharge; inv.bHeldItem = true; inv.RespawnTime = 0.0; inv.GiveTo(NewPredator); inv.Activate(); } } if (JumpCharge > 0) { inv = Spawn(class'UT_jumpboots'); if ( inv != None) { inv.charge = JumpCharge; inv.GiveTo(NewPredator); inv.Activate(); } } if (GiveRocket) { newweapon = Spawn(class'UT_Eightball'); if (newweapon != None) { newweapon.PickUpAmmoCount = RocketAmmo; newweapon.bHeldItem = True; newweapon.RespawnTime = 0.0; newweapon.GiveTo(NewPredator); newweapon.GiveAmmo(NewPredator); } } if (GiveShock) { newweapon = Spawn(class'Shockrifle'); if (newweapon != None) { newweapon.PickUpAmmoCount = ShockAmmo; newweapon.bHeldItem = True; newweapon.RespawnTime = 0.0; newweapon.GiveTo(NewPredator); newweapon.GiveAmmo(NewPredator); } } if (GivePulse) { newweapon = Spawn(class'Pulsegun'); if (newweapon != None) { newweapon.PickUpAmmoCount = PulseAmmo; newweapon.bHeldItem = True; newweapon.RespawnTime = 0.0; newweapon.GiveTo(NewPredator); newweapon.GiveAmmo(NewPredator); } } if (GiveMinigun) { newweapon = Spawn(class'minigun2'); if (newweapon != None) { newweapon.PickUpAmmoCount = MinigunAmmo; newweapon.bHeldItem = True; newweapon.RespawnTime = 0.0; newweapon.GiveTo(NewPredator); newweapon.GiveAmmo(NewPredator); } } if (GiveFlak) { newweapon = Spawn(class'UT_Flakcannon'); if (newweapon != None) { newweapon.PickUpAmmoCount = FlakAmmo; newweapon.bHeldItem = True; newweapon.RespawnTime = 0.0; newweapon.GiveTo(NewPredator); newweapon.GiveAmmo(NewPredator); } } if (GiveSniper) { newweapon = Spawn(class'SniperRifle'); if (newweapon != None) { newweapon.PickUpAmmoCount = SniperAmmo; newweapon.bHeldItem = True; newweapon.RespawnTime = 0.0; newweapon.GiveTo(NewPredator); newweapon.GiveAmmo(NewPredator); } } if (GiveRipper) { newweapon = Spawn(class'Ripper'); if (newweapon != None) { newweapon.PickUpAmmoCount = RipperAmmo; newweapon.bHeldItem = True; newweapon.RespawnTime = 0.0; newweapon.GiveTo(NewPredator); newweapon.GiveAmmo(NewPredator); } } if (GiveBio) { newweapon = Spawn(class'UT_biorifle'); if (newweapon != None) { newweapon.PickUpAmmoCount = BioAmmo; newweapon.bHeldItem = True; newweapon.RespawnTime = 0.0; newweapon.GiveTo(NewPredator); newweapon.GiveAmmo(NewPredator); } } if (DualEnforcer) { newweapon = Spawn(class'doubleenforcer'); if (newweapon != None) { newweapon.PickUpAmmoCount = EnforcerAmmo; newweapon.bHeldItem = True; newweapon.RespawnTime = 0.0; newweapon.GiveTo(NewPredator); newweapon.GiveAmmo(NewPredator); } } if (GiveEnforcer) { newweapon = Spawn(class'enforcer'); if (newweapon != None) { newweapon.PickUpAmmoCount = EnforcerAmmo; newweapon.bHeldItem = True; newweapon.RespawnTime = 0.0; newweapon.GiveTo(NewPredator); newweapon.GiveAmmo(NewPredator); } } if (GiveRedeemer) { newweapon = Spawn(class'WarHeadLauncher'); if (newweapon != None) { newweapon.PickUpAmmoCount = RedeemerAmmo; newweapon.bHeldItem = True; newweapon.RespawnTime = 0.0; newweapon.GiveTo(NewPredator); newweapon.GiveAmmo(NewPredator); } } if (Translocator) { newweapon = Spawn(class'Translocator'); if (newweapon != None) { newweapon.bHeldItem = True; newweapon.RespawnTime = 0.0; newweapon.GiveTo(NewPredator); } } if (Chainsaw) { newweapon = Spawn(class'Chainsaw'); if (newweapon != None) { newweapon.bHeldItem = True; newweapon.RespawnTime = 0.0; newweapon.GiveTo(NewPredator); } } if (Hammer) { newweapon = Spawn(class'ImpactHammer'); if (newweapon != None) { newweapon.bHeldItem = True; newweapon.RespawnTime = 0.0; newweapon.GiveTo(NewPredator); } } if (DropKeg) NewPredator.DropWhenKilled = class'HealthPack'; pname = NewPredator.GetHumanName(); BroadcastLocalizedMessage( class'PredatorMessage', 0, NewPredator.PlayerReplicationInfo, None, None ); BroadcastMessage(pname $ " is now the Predator."); PLog(pname $ " is now the Predator."); } function MakeNormal(Pawn Other) { local string SkinName, FaceName; local int TeamCheck, TeamCount, equal; if ((TeamGamePlus(Level.Game) != None) && (Balance)) { TeamCheck = 0; TeamCount = 1; equal = 0; while(TeamCount < TeamGamePlus(Level.Game).MaxAllowedTeams) { if (TeamGamePlus(Level.Game).Teams[TeamCheck].Size > TeamGamePlus(Level.Game).Teams[TeamCount].Size) { TeamCheck = TeamCount; } else { if (TeamGamePlus(Level.Game).Teams[TeamCheck].Size == TeamGamePlus(Level.Game).Teams[TeamCount].Size) equal++; } TeamCount++; } if (equal == TeamGamePlus(Level.Game).MaxAllowedTeams) { TeamGamePlus(Level.Game).ChangeTeam(Other, OldTeam); } else { TeamGamePlus(Level.Game).ChangeTeam(Other, TeamCheck); } } else { Other.PlayerReplicationInfo.Team = OldTeam; Other.static.GetMultiSkin(Other, SkinName, FaceName); Other.static.SetMultiSkin(Other, SkinName, FaceName, OldTeam); OldPredator = Other; OldPredatorTeam = OldTeam; } if (Other.Health > 200) Other.Health = 200; Other.DropWhenKilled = None; if (!KeepPredator) isPredator = None; } function NewPredator() { local int chance; local int count; local Pawn P; chance = 0; count = 0; foreach Level.Game.AllActors( class'Pawn', P ) { if (PlayersOnly) { if (P.IsA('PlayerPawn')) { chance++; } } else { if (P.IsA('PlayerPawn') || P.IsA('Bot')) { chance++; } } } chance = RandRange(1, chance); foreach Level.Game.AllActors( class'Pawn', P ) { if (PlayersOnly) { if (P.IsA('PlayerPawn')) { count++; } } else { if (P.IsA('PlayerPawn') || P.IsA('Bot')) { count++; } } if (chance == count) MakePredator(P); } } function Mutate(string MutateString, PlayerPawn Sender) { local Pawn P; if (Sender.PlayerReplicationInfo.bAdmin) { if (MutateString == "StopPredator") { BroadcastMessage("The Predator has been stopped by an Admin."); MakeNormal(isPredator); isPredator = None; } if (MutateString == "NoMorePredator") { Disable = True; } if (MutateString == "RestartPredator") { Disable = False; } } if ( NextMutator != None ) NextMutator.Mutate(MutateString, Sender); } function Timer() { local CTFFlag F; local string fname; local string message; if (CTFGame(Level.Game) != None) { foreach AllActors(class'CTFFlag', F) { if (F.Team == 0) { RedFlag = F; PLog("Found Red Flag Object"); } if (F.Team == 1) { BlueFlag = F; PLog("Found Blue Flag Object"); } } if ((RedFlag != None) && (BlueFlag != None)) SetTimer(0, False); } } function ModifyPlayer(Pawn Other) { local int chance; local int totalq; Super.ModifyPlayer(Other); if (Disable) return; if ((PlayersOnly) && (Other.IsA('Bot'))) return; if ((isPredator != None) && (KeepPredator)) { if (Other == isPredator) { MakePredator(Other); } } if (isPredator == None) { totalq = TotalQualified(); if (totalq >= MinPlayers) { if (Other != OldPredator) { chance = int(RandRange(1, float(totalq))); PLog(Other.GetHumanName() $ " T:" $ string(totalq) $ " C:" $ string(chance) $ " PC:" $ string(PredatorChance)); if (chance <= PredatorChance) { MakePredator(Other); } else { PredatorChance++; } } else { if (totalq == 1) { MakePredator(Other); } } } } else { if (Other.IsA('PlayerPawn')) { PlayerPawn(Other).ReceiveLocalizedMessage( class'PredatorMessage', 0, isPredator.PlayerReplicationInfo, None, None ); } } } function int TotalQualified() { local int chance; local Pawn P; chance = 0; foreach Level.Game.AllActors( class'Pawn', P ) { if (PlayersOnly) { if (P.IsA('PlayerPawn')) { chance++; } } else { if (P.IsA('PlayerPawn') || P.IsA('Bot')) { chance++; } } } //BroadcastMessage(string(chance) $ " qualified."); return chance; } function bool CheckReplacement(Actor Other, out byte bSuperRelevant) { if ((Other.IsA('UT_JumpBoots')) && (Other.Owner == isPredator) && (isPredator != None) && (JumpCharge >= 99999)) return false; if ((Other.IsA('UT_Invisibility')) && (Other.Owner == isPredator) && (isPredator != None) && (InvisCharge >= 99999)) return false; return true; } //R..  A AB?.Players Only.8Only real players can be the Predator, not bots..%.$.- -6.  AAB?Keep PredatorDOne player will be Predator the entire game, even if killed.%$- -7. C AB?Killer Is Predator=Whoever kills the Predator becomes the next Predator.%$- -D,. CAB?,Drop Keg,1Predator drops Big Keg O' Health on death,%,$,- -U . CBC? Enforcer Ammo ' , A $ S F&.  ABB?&Enforcer&"Predator gets the Enforcer&%&$&- -m!. CBC?!BioRifle Ammo!'!,!A!$!S Q'.  ABB?'BioRifle'"Predator gets the BioRifle'%'$'- -Y. CBC?ShockRifle Ammo',A$S l%.  ABB?%ShockRifle%$Predator gets the ShockRifle%%%$%- -_. CCC?Pulse Gun Ammo',A$S ]$.  ACB?$Pulse Gun$#Predator gets the Pulse Gun$%$$$- -Z. CCC?Ripper Ammo',A$S X#.  ACB?#Ripper# Predator gets the Ripper#%#$#- -`. C*CC?Minigun Ammo',A$S R).  A*CB?)Minigun)!Predator gets the Minigun)%)$)- -N. C>CC?Flak Cannon Ammo',A$S [".  A>CB?"Flak Cannon"%Predator gets the Flak Cannon"%"$"- -e. CRCC?Rocket Launcher Ammo',A$S p0.  ARCB?0Rocket Launcher0)Predator gets the Rocket Launcher0%0$0- -q. CfCC?Sniper Rifle Ammo',A$S o2.  AfCB?2Sniper Rifle2&Predator gets the Sniper Rifle2%2$2- -n. CzCC?Redeemer Ammo',A$S g3.  AzCB?3Redeemer3"Predator gets the Redeemer3%3$3- -j+.  ACB?+Dual Enforcers+$Predator gets Dual Enforcers+%+$+- -S*. CCB?*Impact Hammer*#Predator gets Impact Hammer*%*$*- -V-.  ACB?-Chainsaw-Predator gets Chainsaw-%-$-- -k(. CCB?(Translocator("Predator gets Translocator(%($(- -P. C AB?Invisibility;Invisibility Charge. 0 = Disable 99999 = Unlimited',A$S >. CAB?Jump Boots9Jump Boots Charge. 0 = Disable 99999 = Unlimited',A$S A. CCB?Kill Points (+),Points awarded to killer of Predator',A$S d. CCB?Suicide Points (-)7Points removed from Predator's score on Suicide',A$S i . CBB? Kill Frags (+) +Frags awarded to killer of Predator ' , A $ S h . CBB? Suicide Frags (-) 6Frags removed from Predator's score on Suicide ' , A $ S ^ . CHBB? Health Predator's base Health ' , A $ S C . C*CB? CTF Team Bonus 2CTF Team Bonus for destroying the Predator ' , A $ S ?. C>CB?Predator Team)Predator's Team Color, 255 = None',A$S G/. CRCB?/Balance Teams/-Balance Teams when changing Predators/%/$/- -b1. CfCB?1Capture Flag1>The Predator will be allowed to capture and hold flags1%1$1- -c. CzCB?Minimum PlayersVMinimum number of players or players and bots before a Predator can be created',pA$S a mF0G[:+I &$F =. -6.-  -7- -D(-(  -D- -7(-( , -U,- )& -m&- S  FJ  }' -Y'- ! QJ! % -_%-  lJ %$ -Z$- O ]J y# -`#-  XJ ) -N)-  RJ !" -e"- K [J u0 -q0-  pJ 2 -n2-  oJ 3 -j3- G gJ q+ -S+- * -V*- - -k-- ( -P(-  >J C AJ m dJ  iJ   hJ    ^J    CJ  ?  ?J  i GJ   ?J  / -b/-  aJ 1 -c1-  )  @:M< D A ACB xxxw{w@x#wwwtwJwewdwTg\wAwpiswhwswow[wgereNwnfIw\eogYfSw@wBw_x^wPh^wXeieOiRwziRhQnSeWwwVx;w w~wgwhhgw[weMw}\!w|fJwr]_eLwifK\%\h[feOhZ\fKha\4h`\gkgVwC\E\+\0eO\D\(fH\7eq\*fLfK\owdwagMwn\,wkw]wlwfwewcwZwTwbwmw?wUw>eW\:wbwY VY<GoZ/ }ZtJ[F X[fe[j s[X @\n M\g Z\Ag\l u\m B] O]^ \]U i]k v]j C^V P^A]^L k^H x^N E_D R_c __J l_T y_F F`A S`E ``@ m`P z`e GaQ TaC aaE naI {aO HbR Uba bbS obW |bX IcY Vcb ccH pcx }cG Jdy WdK ddM qdC ~dAKeH Ye@ eew reb ~ePKfPYf` gf_ tfV @gz MgNZgU hgd tgB @hA Mh` ZhP gh thA@ib NiE [iu hiR tij AjS Njl [ja hje ujT BkX OkZ \kY ikW uka BlD NlR [lE hlc ul2fBmF hp~ upI BqC Oq^ \qx iqy vq{ BrQ Orb \rN ir| vr} CsM Psb ]sJ jsO wsK DtL QtH ^tG ktm xtU DuU Pu]\uujuB xuB Ev Rv' ^v$ kv xvy Ew\ Qwy ]w\ iw\$ vw\' Cx\ Px<I\x=Z?ezF1fMv sG p L!UX+mQlDzQHiV/pd7YTp mN y%r FDx\!UFA[p \I hZt*\Nc jXw0O,wE vq4SC]V\q4Rs(TEq4rY3kKq4Zvp Pq4d]4\Aq4x]ZYU0doN Sv `:Kl[Public] Object=(Name=Predator.Predator,Class=Class,MetaClass=Engine.Mutator,Description="Predator,One Player becomes a Predator with super Weapons and Life") Object=(Name=Predator.PredatorMenuItem,Class=Class,MetaClass=UMenu.UMenuModMenuItem) Preferences=(Caption="Mutators",Parent="Advanced Options") Preferences=(Caption="Predator",Parent="Mutators",Class=Predator.Predator,Immediate=True) ----------------- About Predator ----------------- Predator is an interesting Mutator because it could have just as easily been its own gametype. I coded it as a Mutator, though, in order to allow compatibility with existing gametypes as well as gametypes that will be released in the future. It is extremely adaptable and has alot of configuration options. Predator chooses a player at spawning time (fresh or respawn) to become a "Predator". The "Predator" gets configurable health, weapons, and specialty items. The player who kills the "Predator" scores a configurable frag, points, and team score bonus (depending on the gametype). Predator can be configured via the "Mod" menu option in Unreal Tournament or by the "Advanced Options" menu found by typing "preferences" in the console. Predator has many, many configurable features to create the best game possible. - William 'Ntruder' Chenoweth (ntruder@home.com) ------------------------ Mod Menu Configuration ------------------------ Here is a description of all the options under the "Mod" menu that come with Predator: Players Only - Human players (not bots) will only be chosen to be the Predator. Keep Predator - Once Predator has chosen the "Predator" for that game, the "Predator" will always be respawned as the "Predator." Killer is Predator - What ever player kills the current "Predator" becomes the next Predator instantly. Very good for DeathMatch. Drop Keg - The "Predator" will drop a "Big Keg O' Health" upon death. Weapons/Ammo - The Weapons/Ammo configuration should be self explanatory. Invisibility - The "Predator" will be invisible for X amount of time after creation/spawning. If set to 99999 the "Predator" will be perpetually invisible. Jump Boots - The "Predator" will be given Jump Boots with X charge. If set to 99999 the Jump Boots will never run out. Health - This is the health the "Predator" will have, not health given as a bonus. If you set Health to 500, the Predator will have 500 health on creation. A "Predator" cannot rebuild health to this, only to the current gametype configuration (usually 100 with bonuses to 200). Kill Points (+) - Number of bonus points awarded to player who kills the "Predator," in addition to any points awarded by the gametype or other mutators. Suicide Points (-) - Number of points deducted from the "Predator" for killing his/herself, in addition to any points deducted by the gametype or other mutators. Kill Frags (+) - Number of bonus frags awarded to player who kills the "Predator" in addition to any frags awarded by the gametype or other mutators. Suicide Frags (-) - Number of frags deducted from the "Predator" for killing his/herself, in addition to any frags deducted by the gametype or other mutators. CTF Team Bonus - Team points (like flag captures) awarded to the team who kills the "Predator". Predator Team - Team number the "Predator" will be placed on. In CTF and Assault type games there are by default two teams, red and blue. The "Predator" should probably be on its own team so the default is "2" which is the green team. If set to 255 (no team) the Predator will have a non-team skin but in Team games it will be placed on the Gold Team by default. This was left as an integer value for compatibility with nonstandard team numbers (between 4 and 254 inclusive). The UT default team codes are 0 = Red, 1 = Blue, 2 = Green, 3 = Gold, and 255 = None. Balance Teams - In CTF games the "Predator" will be assigned to the team that needs players. If this is turned off then the Predator will always be assigned to its original team. Capture Flag - Check this if you want the "Predator" to be able to steal flags. If not selected the flag will drop where the "Predator" picks it up. If a "Predator" attempts to steal both flags, the first flag picked up will return to its home base. Minimum Players - This is the minimum number of players *qualified to become "Predator"* that must be in the game before a "Predator" is created. Players are *qualified* depending on the "Players Only" setting. For example, if the Minimum Players setting is 4 and "Players Only" has been selected and there are 3 human players and 2 bots in the game, a "Predator" will *not* be spawned. ------------------ Revision History ------------------ .99b - Fully functional, just needs alot of testing. ;) [Predator.Predator] PlayersOnly=False KeepPredator=False KillerIsPredator=False KillPredatorScore=5 PredatorSuicideScore=5 PredatorTeam=2 PredatorHealth=400 RipperAmmo=50 PulseAmmo=50 RocketAmmo=50 ShockAmmo=50 SniperAmmo=50 RedeemerAmmo=50 EnforcerAmmo=50 FlakAmmo=50 BioAmmo=50 MinigunAmmo=50 JumpCharge=99999 InvisCharge=25 Translocator=True Hammer=True Chainsaw=True DualEnforcer=True GiveRipper=True GivePulse=True GiveRocket=True GiveShock=True GiveSniper=True GiveRedeemer=False GiveEnforcer=True GiveFlak=True GiveBio=True GiveMinigun=True DropKeg=True KillPredatorFrags=5 PredatorSuicideFrags=5 FlagPredatorScore=1 Balance=True Disable=False MinPlayers=0 CaptureFlag=False StopPredator=FalseSystem\Manifest.iniRSystem\Manifest.intR0System\Predator.upSystem\Predator.intSystem\predator.txtSystem\Predator.ini"g