*E@W(WX)T ʝlrJbߨyWNoneEavySpawnProtectionSDACreateControlEavySpawnProtectSDAVersionSetTextSetFontCoreSystem SetMaxLengthSetNumericOnlySetDelayedNotify SetValue GetValueUWindowEngineCreatedColor ActivateBotpackFindInventoryTypeTimer DestroyedYPosMinimumProtectionTimeMaximumProtectionTimeYouLostProtectionRemoveIfAttackDeactivateDamageMomentumEavyMenuItemSDAEavyFramedWindowSDAEavyMessageSDA MenuCaption MenuHelpbCenterNotify TakeDamage PreBeginPlayReceiveLocalizedMessageRegisterDamageMutator BeforePaintActivateSpawnProtectEavySpawnProtectorSDAEavyClientWindowSDA FontSizeYColor GetColorExecuteUMenu bFadeMessagebIsConsoleMessageGiveToMutatorTakeDamage ModifyPlayer DrawColor GetString Lifetime ClientClass WindowTitle GetOffset bIsSpecial LocalMessage bIsPlayer Location ScaleGlowXStyleStaticSaveConfig RelatedPRI_2 HitLocationbAutoActivateGameOwner RelatedPRI_1OptionalObject bGameEnded DamageTypeVictimCounterPackageClassECClipY PlayerOwnerY instigatedByi ScriptText ReturnValue actualDamagePickupCount TextBufferObjectOther Momentum FunctionVectorStruct StrPropertyStructPropertyYL NamePropertyObjectPropertyUWindowEditControlUWindowPulldownMenuItemUWindowDialogClientWindowUWindowFramedWindowUWindowRootWindowUWindowCheckboxUWindowDialogControlUWindowWindowUWindowPulldownMenuSetSize CreateWindowFloatProperty LevelInfoAlignWinLeft EditBoxWidth WinHeight WinWidthWinTopRootControlOffset CenterPos CenterWidthMutatorWeaponSwitch RotationUMenuModMenuItem ControlWidth ControlLeft ControlRight bInitialized MenuItem BoolProperty InventoryTournamentPickupLocalMessagePlus GameInfo IntPropertyPlayerReplicationInfo bActivatablebActive bHeldItem BytePropertyCanvasLimitbRemoveIfAttackLevelPawnActorInstigatorDamageScale bChecked bPointingVictimDamageScaleExpireMessageEavySpawnProtectNBbH=$:ettt!tt!tt!!!!!!!!!("!"(LI)2!Xu6ttttttX'ttttttt   ) @&%@!@@@@'@# $.@1O<2-ƿS>=]Protection Lost !!!,*+";1S07"5*$DC!R:2/gצMo o  809]EavySpawnProtectSDAVersionST*m0٩e~bH|.XڈbHbHtbHbHtbHbHtbHbHtbHbH|.XڈbHbH|.XڈbH|.Xچ|.Xچ|.Xچ|.XڈbHtttttttbHtttttttbHtttttttbHtttttttbH|.Xچ|.Xچ|.Xچ|.XڈbH|.Xچ|.Xچ|.Xچ|.XڈbH|.Xچ|.Xڄtttttttttttt|.Xچ|.Xچ|.Xچ|.X 3D4> 5@L?D?,?D?, 9E66%j&6 %+$ !&+$   ;=?@C"3: - w w*--$.  w$*-$-#%*#",d)'"?,d")' H4W.  6w*aJ-a !  Jw*Protection Lost.-'-'-' 2-(-#%#, , !,  UF:["@D3?,2  278'W$854D @D?,?, D?,?D33@D?, ?? ????A??? A???A ?? ?  A ?? ? ?? ? *$.$-*&-*' J+ eA- r*-a-D66  66 -'F-@%??%?%=w*w*--( % -aCacc#% #&a KAV.@w*$%a=' |MEw* j//EavySpawnProtect: "EavySpawnProtector" Stefan Daniel Schwarz // //Modified by Shawn Dube -={SDA}=-D]|[ngus // //Modified the class to subclass TounamentPickup rather than Inventory //DMMutator autolog's all inventory/pickup items UNLESS they are of type TournamentPickup // //Also, added code to remove protection if protected player is attacking //--------------------------------------------------- class EavySpawnProtectorSDA expands TournamentPickup; var int Count; var int Counter; var int Limit; var Pawn PlayerOwner; var bool bRemoveIfAttack; event Destroyed() { if ( PlayerOwner != None ) { PlayerOwner.Style = PlayerOwner.Default.Style; PlayerOwner.ScaleGlow = PlayerOwner.Default.ScaleGlow; } Super.Destroyed(); } function Activate() { PlayerOwner = Pawn(Owner); if ( PlayerOwner != None ) { PlayerOwner.Style = STY_Translucent; PlayerOwner.ScaleGlow = 0; } Counter = Count; SetTimer(0.1, True); } function Timer() { if ( Level.Game.bGameEnded || (PlayerOwner == None) || !PlayerOwner.bIsPlayer ) Destroy(); if ( !bActive && ((Location.X != PlayerOwner.Location.X) || (Location.Y != PlayerOwner.Location.Y)) ) bActive = True; if ( bActive ) { if ( Count > 0 ){ PlayerOwner.ScaleGlow = (1 / Counter) * (Counter - Count--); if (PlayerOwner != None && PlayerOwner.Weapon != None && PlayerOwner.Weapon.bPointing && bRemoveIfAttack) { PlayerOwner.ReceiveLocalizedMessage(class'EavyMessageSDA'); Destroy(); } } else Destroy(); } else if ( (Limit > 0) && (Limit-- == 1) ) Destroy(); } G> D @D?,?,&D?,? D33@D? ,D?&7. ??? ?, . ??? ? Activate Spawn Protect % $ - -,. ????Minimum Protection Time% ',$ ' S !. ?&???Maximum Protection Time% ',$ ' S ,. ????Victim Damage Scale% ',$ ' S  . ?&??? Instigator Damage Scale %  ' , $  '  S , . ??? ? "Deactivate Damage Momentum % $ - -, . ??? ? &Remove Protection if Attacking % $ - - a"//EavySpawnProtect: "EavySpawnProtection" Stefan Daniel Schwarz // //Modified by Shawn Dube -={SDA}=-D]|[ngus class EavySpawnProtectionSDA expands Mutator; var bool bInitialized; var() config bool ActivateSpawnProtect; var() config bool DeactivateDamageMomentum; var() config bool RemoveIfAttack; var() config int InstigatorDamageScale; var() config int MaximumProtectionTime; var() config int MinimumProtectionTime; var() config int VictimDamageScale; event PreBeginPlay() { if ( !bInitialized ) Level.Game.RegisterDamageMutator(Self); bInitialized = True; } function ModifyPlayer(Pawn Other) { local EavySpawnProtectorSDA I; I = EavySpawnProtectorSDA(Other.FindInventoryType(class'EavySpawnProtectorSDA')); if ( I != None ) I.Destroy(); if ( ActivateSpawnProtect ) { I = Spawn(class'EavySpawnProtectorSDA', Other, 'EavySpawnProtectSDAVersion', Other.Location, Other.Rotation); if ( I != None ) { I.ExpireMessage="Protection Lost."; I.bAutoActivate=True; I.bActivatable=True; I.bHeldItem = True; I.GiveTo(Other); I.bRemoveIfAttack = RemoveIfAttack; if ( MaximumProtectionTime > 0 ) I.Limit = MaximumProtectionTime * 10 + 11; I.Count = MinimumProtectionTime * 10; I.Activate(); } } Super.ModifyPlayer(Other); } function MutatorTakeDamage(out int ActualDamage, Pawn Victim, Pawn InstigatedBy, out Vector HitLocation, out Vector Momentum, name DamageType) { local EavySpawnProtectorSDA I; if ( ActivateSpawnProtect && (Victim != InstigatedBy) && (InstigatedBy != None) && Victim.bIsPlayer && InstigatedBy.bIsPlayer ) { I = EavySpawnProtectorSDA(Victim.FindInventoryType(class'EavySpawnProtectorSDA')); if ( I != None ) { if ( DeactivateDamageMomentum || !I.bActive ) Momentum = vect(0,0,0); if ( InstigatorDamageScale > 0 ) InstigatedBy.TakeDamage(ActualDamage * (InstigatorDamageScale / 100), InstigatedBy, HitLocation, Momentum, DamageType); ActualDamage *= VictimDamageScale / 100; } } Super.MutatorTakeDamage(ActualDamage, Victim, InstigatedBy, HitLocation, Momentum, DamageType); } W//====== Created by Shawn Dube -={SDA}=-D]|[ngus shawn_dube@hotmail.com> ====== // EavyMessage. //============================================================================= class EavyMessageSDA expands LocalMessagePlus nousercreate; var localized string YouLostProtection; var color YColor; static function color GetColor( optional int Switch, optional PlayerReplicationInfo RelatedPRI_1, optional PlayerReplicationInfo RelatedPRI_2) { return Default.YColor; } static function float GetOffset(int Switch, float YL, float ClipY) { return (Default.YPos/768.0) * ClipY - 2*YL; } static function string GetString( optional int Switch, optional PlayerReplicationInfo RelatedPRI_1, optional PlayerReplicationInfo RelatedPRI_2, optional Object OptionalObject) { switch (Switch) { case 0: return Default.YouLostProtection; break; case 1: return Default.YouLostProtection; break; } } // ============================================================================ // defaultproperties // ============================================================================ t//EavySpawnProtect: "EavyMenuItem" Stefan Daniel Schwarz // //Modified by Shawn Dube -={SDA}=-D]|[ngus class EavyMenuItemSDA expands UMenuModMenuItem; function Execute() { MenuItem.Owner.Root.CreateWindow(class'EavyFramedWindowSDA', 0, 0, 360, 150); } PW2Q5;єϽ;aGնmo / ]&EavySpawnProtectSDAVersion ]EavySpawnProtectionSDAg//EavySpawnProtect: "EavyFramedWindow" Stefan Daniel Schwarz // //Modified by Shawn Dube -={SDA}=-D]|[ngus class EavyFramedWindowSDA expands UWindowFramedWindow; function Created() { Super.Created(); WinLeft = Int((Root.WinWidth - WinWidth) / 2); WinTop = Int((Root.WinHeight - WinHeight) / 2); } Iq//EavySpawnProtect: "EavyClientWindow" Stefan Daniel Schwarz // //Modified by Shawn Dube -={SDA}=-D]|[ngus // //Modified to allow RemovalIfAttack option in configuration //--------------------------------------------------------- class EavyClientWindowSDA expands UWindowDialogClientWindow; var UWindowCheckBox EavySpawnProtect; var UWindowCheckBox ActivateSpawnProtect; var UWindowEditControl MinimumProtectionTime; var UWindowEditControl MaximumProtectionTime; var UWindowEditControl VictimDamageScale; var UWindowEditControl InstigatorDamageScale; var UWindowCheckBox DeactivateDamageMomentum; var UWindowCheckBox RemoveIfAttack; function BeforePaint(Canvas C, float X, float Y) { local int ControlWidth, ControlLeft, ControlRight; local int CenterWidth, CenterPos; Super.BeforePaint(C, X, Y); ControlWidth = WinWidth/2.5; ControlLeft = (WinWidth/2 - ControlWidth)/2; ControlRight = WinWidth/2 + ControlLeft; CenterWidth = WinWidth/2.3; CenterPos = (WinWidth - CenterWidth)/2; ActivateSpawnProtect.SetSize(CenterWidth, 1); ActivateSpawnProtect.WinLeft = CenterPos; MinimumProtectionTime.SetSize(ControlWidth, 1); MinimumProtectionTime.WinLeft = ControlLeft; MinimumProtectionTime.EditBoxWidth = 25; MaximumProtectionTime.SetSize(ControlWidth, 1); MaximumProtectionTime.WinLeft = ControlRight; MaximumProtectionTime.EditBoxWidth = 25; VictimDamageScale.SetSize(ControlWidth, 1); VictimDamageScale.WinLeft = ControlLeft; VictimDamageScale.EditBoxWidth = 25; InstigatorDamageScale.SetSize(ControlWidth, 1); InstigatorDamageScale.WinLeft = ControlRight; InstigatorDamageScale.EditBoxWidth = 25; DeactivateDamageMomentum.SetSize(CenterWidth, 1); DeactivateDamageMomentum.WinLeft = CenterPos; RemoveIfAttack.SetSize(CenterWidth, 1); RemoveIfAttack.WinLeft = CenterPos; } function Created() { local int ControlWidth, ControlLeft, ControlRight; local int CenterWidth, CenterPos; local int ControlOffset; Super.Created(); ControlWidth = WinWidth/2.5; ControlLeft = (WinWidth/2 - ControlWidth)/2; ControlRight = WinWidth/2 + ControlLeft; CenterWidth = WinWidth/2.3; CenterPos = (WinWidth - CenterWidth)/2; ControlOffset = WinHeight + 1; EavySpawnProtect = UWindowCheckbox(CreateControl(class'UWindowCheckbox', CenterPos, ControlOffset, CenterWidth, 1)); ControlOffset = 15; ActivateSpawnProtect = UWindowCheckbox(CreateControl(class'UWindowCheckbox', CenterPos, ControlOffset, CenterWidth, 1)); ActivateSpawnProtect.SetText("Activate Spawn Protect"); ActivateSpawnProtect.SetFont(F_Normal); ActivateSpawnProtect.Align = TA_Right; ActivateSpawnProtect.bChecked = class'EavySpawnProtectionSDA'.default.ActivateSpawnProtect; ControlOffset += 20; MinimumProtectionTime = UWindowEditControl(CreateControl(class'UWindowEditControl', ControlLeft, ControlOffset, ControlWidth, 1)); MinimumProtectionTime.SetText("Minimum Protection Time"); MinimumProtectionTime.SetFont(F_Normal); MinimumProtectionTime.SetNumericOnly(True); MinimumProtectionTime.SetMaxLength(3); MinimumProtectionTime.Align = TA_Right; MinimumProtectionTime.SetDelayedNotify(True); MinimumProtectionTime.SetValue(string(class'EavySpawnProtectionSDA'.default.MinimumProtectionTime)); MaximumProtectionTime = UWindowEditControl(CreateControl(class'UWindowEditControl', ControlRight, ControlOffset, ControlWidth, 1)); MaximumProtectionTime.SetText("Maximum Protection Time"); MaximumProtectionTime.SetFont(F_Normal); MaximumProtectionTime.SetNumericOnly(True); MaximumProtectionTime.SetMaxLength(3); MaximumProtectionTime.Align = TA_Right; MaximumProtectionTime.SetDelayedNotify(True); MaximumProtectionTime.SetValue(string(class'EavySpawnProtectionSDA'.default.MaximumProtectionTime)); ControlOffset += 20; VictimDamageScale = UWindowEditControl(CreateControl(class'UWindowEditControl', ControlLeft, ControlOffset, ControlWidth, 1)); VictimDamageScale.SetText("Victim Damage Scale"); VictimDamageScale.SetFont(F_Normal); VictimDamageScale.SetNumericOnly(True); VictimDamageScale.SetMaxLength(3); VictimDamageScale.Align = TA_Right; VictimDamageScale.SetDelayedNotify(True); VictimDamageScale.SetValue(string(class'EavySpawnProtectionSDA'.default.VictimDamageScale)); InstigatorDamageScale = UWindowEditControl(CreateControl(class'UWindowEditControl', ControlRight, ControlOffset, ControlWidth, 1)); InstigatorDamageScale.SetText("Instigator Damage Scale"); InstigatorDamageScale.SetFont(F_Normal); InstigatorDamageScale.SetNumericOnly(True); InstigatorDamageScale.SetMaxLength(3); InstigatorDamageScale.Align = TA_Right; InstigatorDamageScale.SetDelayedNotify(True); InstigatorDamageScale.SetValue(string(class'EavySpawnProtectionSDA'.default.InstigatorDamageScale)); ControlOffset += 20; DeactivateDamageMomentum = UWindowCheckbox(CreateControl(class'UWindowCheckbox', CenterPos, ControlOffset, CenterWidth, 1)); DeactivateDamageMomentum.SetText("Deactivate Damage Momentum"); DeactivateDamageMomentum.SetFont(F_Normal); DeactivateDamageMomentum.Align = TA_Right; DeactivateDamageMomentum.bChecked = class'EavySpawnProtectionSDA'.default.DeactivateDamageMomentum; ControlOffset += 20; RemoveIfAttack = UWindowCheckbox(CreateControl(class'UWindowCheckbox', CenterPos, ControlOffset, CenterWidth, 1)); RemoveIfAttack.SetText("Remove Protection if Attacking"); RemoveIfAttack.SetFont(F_Normal); RemoveIfAttack.Align = TA_Right; RemoveIfAttack.bChecked = class'EavySpawnProtectionSDA'.default.RemoveIfAttack; } function Notify(UWindowDialogControl C, byte E) { switch(E) { case DE_Change: switch(C) { case ActivateSpawnProtect: class'EavySpawnProtectionSDA'.default.ActivateSpawnProtect = ActivateSpawnProtect.bChecked; class'EavySpawnProtectionSDA'.static.StaticSaveConfig(); break; case MinimumProtectionTime: class'EavySpawnProtectionSDA'.default.MinimumProtectionTime = int(MinimumProtectionTime.GetValue()); class'EavySpawnProtectionSDA'.static.StaticSaveConfig(); break; case MaximumProtectionTime: class'EavySpawnProtectionSDA'.default.MaximumProtectionTime = int(MaximumProtectionTime.GetValue()); class'EavySpawnProtectionSDA'.static.StaticSaveConfig(); break; case VictimDamageScale: class'EavySpawnProtectionSDA'.default.VictimDamageScale = int(VictimDamageScale.GetValue()); class'EavySpawnProtectionSDA'.static.StaticSaveConfig(); break; case InstigatorDamageScale: class'EavySpawnProtectionSDA'.default.InstigatorDamageScale = int(InstigatorDamageScale.GetValue()); class'EavySpawnProtectionSDA'.static.StaticSaveConfig(); break; case DeactivateDamageMomentum: class'EavySpawnProtectionSDA'.default.DeactivateDamageMomentum = DeactivateDamageMomentum.bChecked; class'EavySpawnProtectionSDA'.static.StaticSaveConfig(); break; case RemoveIfAttack: class'EavySpawnProtectionSDA'.default.RemoveIfAttack = RemoveIfAttack.bChecked; class'EavySpawnProtectionSDA'.static.StaticSaveConfig(); break; } } } M,"I1 $, L  - -   !J    J    J   0  J    i  - -    - -   +V-.  A.< /CC N NNOhOoOmOXOOO]ONOgOYO`syOJOnsv`BSu`qObaI[NO\d>OsOIOtOLIQOCs?N/swOOOdOkSAsxOjOlI=g{OMbg@O@`3sTs@`4gFgWOZOcO<``OKOi`'`szOpIE`rIJI\`IP`$c^s`"IR`dB`6gGOTgH`.OSgGOf`:`-`h*S H/)hU/CV }2M| J30] V30 c30 p30Z }30 J40 W40( d4M~ q4BU }4MD J5GD V5C^ b5M} o5G~ {5GE G6( S6ME _6G} k6[ w6Z C7 O7BL [7 h7 t7] @8B_ L8GF Y8 e8BY q8U }8BV I9M V9MF b9BK n9V z9BD F:G S:- _:TQ k:[x:-, S=J`=*[j?TP EPEe RPER ^PGT kPG@ wP<A CQ0_ OQGQ\Q<X jQ/KvQ<I AS-68NS<C FT<H STUX `TUC mTUHzT3NHU4xVXEX N\-:6Z\EA P]0't\]$9PcSIdT\hHpiW4uxj0VmW4l"C-W4boQW4QpP/W4r@0W4Tqr0"lF-- rUA RQ.J_