*Ef@;-ZfNoneDeathsCore MultiMeshEngineDead2SetSkinElementSystemBotpack SetMyMeshInitfor GetItemNameMaps TauntString TauntSoundMeshGutHit SetMultiSkin LandGruntSelectionMesh customplayerDead3 MenuNameDefaultSkinName JumpSound VoiceTypeDodgeFTickUWHit1UWHit2LeftHitPlaySkaarjDecapPlayNaliDecap Decapitated HitSound4PlayDyingSoundDefaultCustomPackage TeamSkin DefaultFace HitSound3 HitSound1 HitSound2 GaspSound breathagaindrown Footstep3 Footstep2 RightHitDead4 Suicided Footstep1Dead1 PlayDying CustomBot AckSound AckStringTimerSetMyMultiSkinUser PlayCowDecapPostBeginPlay FFireStringDeadHeadHit FFireSoundbIsMultiSkinned BeginState JumpSmFr JumpLgFrDodgeBJumpingDiedDefaultPackageDead9DodgeL PlayInAirDuckzapped PlayHeadHit FaceSkin PlayDuck TakeDamageDodgeR PlayLeftHit PlayRightHit PlayDodge MatureTaunt FFireAbbrev TeamSkin1 ROLLLEFTLODBias ROLLRIGHT FallBackMesh GetMultiSkin PlayerPawnshot TeamSkin2 numTaunts PlayGutHit MultiSkins SpecialMesh EndStateDead5 CarcassTypePlayVictoryDanceTeamSayPlayerWaiting PlayWaitingPlayerWalkingPlayerSpectating DrawScaleCreateReplacement TeamMessageCarcassSayLandingTaunt1Flip tskaarjhead TSkaarjbotTSkaarj tnalihead tnalibottnaliTDMBonusPackMapListtcowmasterchunk tcowhead tcowcarcasstcowbottcow skaarjvoice nalivoicemultimeshmenucustomplayerreplicationinfo MenuCaption MenuHelpMasterReplacementExecutecustombotplayerreplicationinfoCTFBonusPackMapList FastInAirBackRunStrafeLAckTimeStrafeRWAV CowVoice GreenBloodnumAcksClientExtraChunksUWindow Victory1UMenuThrust StrProperty instigatedBy RotationBot bChecked TalkTexture FaceName SkinActorBaseEyeHeightUWindowPulldownMenuItem EyeHeightNewSkinPackageClassProperty ViewTarget SkinNameHitLocSkinNetMode bIsCrouchingTeamNumDir ZoneGravityNaliSkaarj NamePropertyCowbHighDetailModeUnrealI bIsTurningStructProperty bDropDetailHealth bShowScoresObject Location bIsPlayerMapList bLowGore TimeSecondsLastPlaySound bVeryLowGore AnimSequenceMale bNoVoicescarc TweenTime bGreenBlood DodgeMove DeltaTime injurC2ccMoo1cwalkC DodgeDirinjur1ninjur2n contct1n contct3nfear1n breath1ndeath1ndeath2n bowing1n backup2ncough1n chalnge1s chalnge3sroam11sphraseMLand3MUWHit1lland01MJump1 DeathC1ccMoo2c RemoteRole UnrealShare PointRegionRegionMUWHit2MDrown1 cringe2nOwner EDodgeDir Momentum SKPDrown1 SKPJump1 SKPInjur3 SKPInjur4 SKPDeath1 SKPDeath2 SKPDeath3Land1SK SKPInjur1 SKPInjur2ZoneTournamentPlayerTeamEnumMassUMenuModMenuItemNewMesh MenuItemObjectPropertyFloatProperty BoolPropertyChallengeVoicePackVectorStructPhysicsState bCanDuck bDuckLeft DamageTypeF DrawType injurC1cCollisionHeightX follow1nZY ScriptTextBDynamicLoadObjectLodMeshCowHeadWeaponUTHumanCarcass FixedSkin LevelInfoUTMasterCreatureChunkBotReplicationInfo VoiceMaleTwo UT_Thigh UT_MaleTorsoUT_BloodBurst UTStomachUTLiverUTHeartUTPlayerChunksUTHeadsUTCreatureChunksTMaleMasterChunkTMale1CarcassTournamentMale MaleBotPlus HumanBotPlus bLastJumpAlt FacePackage SkinItem FaceItem SkinPackage CommandoTMJump3 PhraseTime PhraseNumDelayedResponsebDelayedResponseDelayedSenderShortSkinName FullSkinNameEpicCustomModels GameInfo ZoneInfoTCowMeshSkinscowpack TCowMesh tnalimeshTSkM IntProperty NaliHeadWalkBobPlayerReplicationInfoClass TextBuffer MeshName MessageTypebWaitingPlayer bIsSpectator bTeamGame bPressedJump Velocity AccelerationPRoleKillerDamage HitLocation decision SkaarjHead SKPGasp1GameReplicationInfo AuthorInfoLevel FunctionActorPawn BytePropertyAuthorSoundSkWalkTexturebForceDefaultMeshB@@  x@F@9@ =@i@5B 7$廻&.;.;.;廻.;:Jۈ.;.;.;O O O O O O O O \.;\.;\.;\.;O O O O \.;\.;\O"X"`"]CommandoSkins.cmdoHMCommandoSkins.]Botpack.SelectionMale1d]Botpack.TrophyMale1]Custom Player]BotPack.VoiceMaleOne_V 7)TΤT.;.;.;.;.;.;.;.;.;.;.;:Jۈ.;.;O O O O O O O O \.;\.;\.;\.;O O O O \.;\.;:\O"X"`"]CommandoSkins.cmdoHMCommandoSkins.]Botpack.SelectionMale1d]Botpack.TrophyMale1]Custom Player\>@&@+@C@e@5q]jl@$@%@@g@@5.@cY@'@Q@<bRIFF WAVEfmt +"Vdata0 6=4qoX5 -cU!X0`o;{F 0a<X34Y|o} @jaAN B b*'F#R&qe16Y-(p&<:}o]~N. 2 6. ~O~ ,#~ !N)iQrS\ 2N i/q >Pg_`"$!\!  !D+ HQA ! 3U  ^&b ih b7L-  0s _ w.\2p?LC-# -ٺުԁL,ۘڻ}ZeG|ZOApFyz:{,PI t"I 4: y/c6 ,_!Y # #"N%y(='+6'";!#A*"U!#"kUBy/{ 6=+@t oN(<ޅ 5Ma,411.N, > *j sS(a .IVPE!g# QcYWH8^XbsJ;J j=/Hyvy.R|. K )4/tD$rIKB]S} w\O4_HosIr5 8 <! xye=6[XXLfJ!Y\Y)hc6M))z;J[:ob^B(+IFE;| qZ2RQ]2/q;Ph}R pn FV++}j?2Ce<)To2xHOmEs7y=imQte]F=zYeLBG8NPMv0 cK]uZse,;EB2D{_RQ`3m] hevq{ nnil0*D_Au TI)mt7qMlNoi+vfU;$x?)Qw(ImmL;wC`*: bTmoBU^mG]u1J3XMlH2o+0]n !/=d SQ< t,$Q}OQ4ax|~97!*t ^wQyk6  2$3kDH> |<eG|z#*P\mF4jIorPF3hL'+}yCkD|I+nqgXQ  &C!j=a *+NC HTs<;3 pm ITd=fdV B=~ HDrsWb$}gI}{q9`*qy9a9^a3+w(j9*kc0]?")*`V4 X_.9!?R' o/Stl hg^{a3 dkF|[7\u+o73s}  d6)V ?>nMc}?/OI :E9a=n8@l3L%P,+-i.WESL-`UtG77Cinv- 3nv#hYkrqi]33uU-Jj)6X |b~}h%^z29 7 &5g\2h>5A!Sx{ e;|s{Y%Ec&86Y}x2UVrL]SMgF. G;$9]oMWTTUsBjUCS#QdNC- DNA/$JshTd/]z.lEfo}jIKNu3B! y]: -\rD!g2#\]P |:?RmcL#0$.,FG)7?i*7RVtn\aPhpJ/{\Eb{S?4 wwR"0H|Ulcx\%'$epqr]YyMG-GBAS5y &/Q=v^jb](NE`lbpC6<1f*17yH8:C+& D.vt$<&+9:keI~{T:kmKQGe-7>8P3ZWbEIlp +!?9cIDbw| JfN6{ +~|n-.=5D;A q|dfR^ajhNP^`JFYU:%$%":ag]mqwN[Rm^hkuleS22O 2&7&$'9Z[bcW:a[~cl`SG;NlQ@Z_nzsgjrmu|ugIQB@G'31 +',#4,(#&&"  %  /45..;O;FFF:A8";"&$ 7?;FM+-@RD*@HFFVQQ8 &5*! *)  5(&-$ &" '     0-,06JLYKEAJlcXOMSPIP\KCO^P@;FRXXPX@IES?!5=%  ,3    , LISTVINFOICRD 1997-11-23IENGJames SchmalzISFT Sound Forge 4.0;Sound Forge 4.5cue dataLIST<adtlltxtrgn lablRecord Take 001@[Z@H@D@]#@VoD6:Jͷ;aG;aG;aGXVF]&Force Default ModelsG]DBUse the default (Male Soldier) model instead of any custom modelsN@p\flm@@@kcKU@NM $y :-Er* r*-'CommandoSkins.cmdoBlake w*-r%*- w*$r* YH; ErCommandoSkins.cmdoBlake# \z  -|z99-pset multiskin 99 9# l V:#, pp)YR#)%  !. fw!*!pFailed to load {!. !w.*{{  :#,..p -Face xr.*..- ..-   {mBQU!(Ե*Hry~BSXF%4@]vBWfj7F%n$fff?cyBXd<F%)@3@b@0@su O :-ECommandoSkins.cmdoBlake r*-'r*CommandoSkins.cmdoBlaker*- 5@QF ErCommandoSkins.cmdoBlake \z  -|z==9 = q V:, pp*eR %  . Fw*pFailed to load {. w.*Z{  :,..p Face Wr.*.. ..   *@5nhU@@L@j@pj}Br"TR:H9H9RR]H]H]H]H]H]H]HPv (Er P CommandoSkins.cmdoBlake2 _zZ  3}}Zz33)p3 &:2, ,pp)YR25,  ,&w. *{ :2,. .pFace r. *. .- &. .-   fQ{ Xj) oO O-' ze>f!0-(-( a''' 2@qB11 X*$-'-'-'*a(((o$ sJ4?p!rJc #QJ!1a! = hJ!!; 6?,a! = 6c6333?a! = a!3 = KVT.!/a&!V,a&!/V B#gr* #$-(-(-(W::$o$eak {;h " -a! = a!0 =::$a S #L?a<" @w* $ 6 6 6 |}l 0 I4 * !rIk #QI!1a!> = hI!!  6?,ff&?a!0 =a! = 6k6333?33> a! = ?a!> =a! = WRN.!?a&!R,a&!?R DnR2C'L667]Moo!7Moo!T"@@=]Moo!=Moo!WMoo! ]Moo! Moo!a"BP ^a!L?> FiK333?a%!s -ihnLKLhK333?a&!J33>K333a&!R33>Li?%a&!33>a&!E33>-' -(!@2'a%!Fa&!@ 2333?Q!Na&!Rp!Pa&!J!Ma&!Er*?,a&!Ca&!D EIATS`.!a&!T,a&!T yP8)!::$ r*  @ ;i " -a! = a! =::$a X #L?a<" @w* $ 6 6 6 R<% #::$a?' i(4R~!r(g #Q(!1a!3 = h(!! 6?,ff&?a!0 =?a! =a! = (!_ (!Ma!I = Q6g6333?A33>Oa! = n?a!3 =|a! = P<]H:-r<<NU U4V<H<  4Np4}4}HH,  JQ- Q " -a! = a!f =::$a W #L?a<" @w* $ 6 6 6 !@uwmC! oZMbJ;!+?a&!M8a&!/MHa&!M de$ 0 -(-(a''' 9"p V+  .  }}.'}}+稨+.'z'')p'z)pHpS&pS&ppp+S&.pS&:>,pppS&T_R>pS&pppS&T_R>pS&VpS&pS&w.*{..ppp+5. .*  OGu::$v! >r*- lw*r*av! -@[@Z//============================================================================= // TSkaarjHead. //============================================================================= class TSkaarjHead extends UTHeads; O.//============================================================================= // TSkaarjbot. //============================================================================= class TSkaarjbot extends CustomBot; // special animation functions function PlayDuck() { BaseEyeHeight = 0; PlayAnim('Duck',1, 0.25); } function FastInAir() { local float TweenTime; BaseEyeHeight = 0.7 * Default.BaseEyeHeight; if ( AnimSequence == 'DodgeF' ) TweenTime = 1; else if ( GetAnimGroup(AnimSequence) == 'Jumping' ) { TweenAnim('DodgeF', 1); return; } else TweenTime = 0.3; if ( (Weapon == None) || (Weapon.Mass < 20) ) TweenAnim('JumpSMFR', TweenTime); else TweenAnim('JumpLGFR', TweenTime); } function PlayInAir() { local float TweenTime; BaseEyeHeight = 0.7 * Default.BaseEyeHeight; if ( AnimSequence == 'DodgeF' ) TweenTime = 2; else if ( GetAnimGroup(AnimSequence) == 'Jumping' ) { TweenAnim('DodgeF', 2); return; } else TweenTime = 0.7; if ( (Weapon == None) || (Weapon.Mass < 20) ) TweenAnim('JumpSMFR', TweenTime); else TweenAnim('JumpLGFR', TweenTime); } function PlayDodge(bool bDuckLeft) { bCanDuck = false; Velocity.Z = 200; if ( bDuckLeft ) PlayAnim('RollLeft', 1.35, 0.06); else PlayAnim('RollRight', 1.35, 0.06); } function PlayDying(name DamageType, vector HitLoc) { if ( Mesh == FallBackMesh ) { Super.PlayDying(DamageType, HitLoc); return; } BaseEyeHeight = Default.BaseEyeHeight; PlayDyingSound(); if ( DamageType == 'Suicided' ) { PlayAnim('Dead1',, 0.1); return; } // check for head hit if ( DamageType == 'Decapitated' ) { PlaySkaarjDecap(); return; } // check for big hit if ( Velocity.Z > 200 ) { if ( FRand() < 0.65 ) PlayAnim('Dead4',,0.1); else if ( FRand() < 0.5 ) PlayAnim('Dead2',, 0.1); else PlayAnim('Dead3',, 0.1); return; } // check for repeater death if ( (Health > -10) && ((DamageType == 'shot') || (DamageType == 'zapped')) ) { PlayAnim('Dead9',, 0.1); return; } if ( HitLoc.Z - Location.Z > 0.7 * CollisionHeight ) { if ( FRand() < 0.35 ) PlaySkaarjDecap(); else PlayAnim('Dead2',, 0.1); return; } if ( FRand() < 0.6 ) //then hit in front or back PlayAnim('Dead1',, 0.1); else PlayAnim('Dead3',, 0.1); } function PlaySkaarjDecap() { local carcass carc; if ( class'GameInfo'.Default.bVeryLowGore ) { PlayAnim('Dead2',, 0.1); return; } PlayAnim('Dead5',, 0.1); if ( Level.NetMode != NM_Client ) { carc = Spawn(class 'TSkaarjHead',,, Location + CollisionHeight * vect(0,0,0.8), Rotation + rot(3000,0,16384) ); if (carc != None) { carc.Initfor(self); carc.RemoteRole = ROLE_SimulatedProxy; carc.Velocity = Velocity + VSize(Velocity) * VRand(); carc.Velocity.Z = FMax(carc.Velocity.Z, Velocity.Z); } } } L^^wB 6 `v#廻:R]H]H]H]H]Hi~ei~e&] Dominator%] T_skaarj_$= TSkMSkins.,+2/./-/'"*MTSkMSkins.Warr]EpicCustomModels.TSkM()]Skaarj Hybrid]MultiMesh.SkaarjVoiceZ$Q8?T://============================================================================= // TSkaarj. //============================================================================= class TSkaarj extends CustomPlayer; #exec AUDIO IMPORT FILE="Sounds\SkWalk2.wav" NAME="SkWalk" GROUP="Skaarj" // special animation functions function PlayDuck() { BaseEyeHeight = 0; PlayAnim('Duck',1, 0.25); } function PlayInAir() { local vector X,Y,Z, Dir; local float f, TweenTime; BaseEyeHeight = 0.7 * Default.BaseEyeHeight; if ( (GetAnimGroup(AnimSequence) == 'Landing') && !bLastJumpAlt ) { GetAxes(Rotation, X,Y,Z); Dir = Normal(Acceleration); f = Dir dot Y; if ( f > 0.7 ) TweenAnim('DodgeL', 0.35); else if ( f < -0.7 ) TweenAnim('DodgeR', 0.35); else if ( Dir dot X > 0 ) TweenAnim('DodgeF', 0.35); else TweenAnim('DodgeB', 0.35); bLastJumpAlt = true; return; } bLastJumpAlt = false; if ( AnimSequence == 'DodgeF' ) TweenTime = 2; else if ( GetAnimGroup(AnimSequence) == 'Jumping' ) { TweenAnim('DodgeF', 2); return; } else TweenTime = 0.7; if ( AnimSequence == 'StrafeL' ) TweenAnim('DodgeR', TweenTime); else if ( AnimSequence == 'StrafeR' ) TweenAnim('DodgeL', TweenTime); else if ( AnimSequence == 'BackRun' ) TweenAnim('DodgeB', TweenTime); else if ( (Weapon == None) || (Weapon.Mass < 20) ) TweenAnim('JumpSMFR', TweenTime); else TweenAnim('JumpLGFR', TweenTime); } function PlayDodge(eDodgeDir DodgeMove) { if ( Mesh == FallBackMesh ) { Super.PlayDodge(DodgeMove); return; } Velocity.Z = 210; if ( DodgeMove == DODGE_Left ) PlayAnim('RollLeft', 1.35 * FMax(0.35, Region.Zone.ZoneGravity.Z/Region.Zone.Default.ZoneGravity.Z), 0.06); else if ( DodgeMove == DODGE_Right ) PlayAnim('RollRight', 1.35 * FMax(0.35, Region.Zone.ZoneGravity.Z/Region.Zone.Default.ZoneGravity.Z), 0.06); else if ( DodgeMove == DODGE_Back ) TweenAnim('DodgeB', 0.25); else PlayAnim('Flip', 1.35 * FMax(0.35, Region.Zone.ZoneGravity.Z/Region.Zone.Default.ZoneGravity.Z), 0.06); } function PlayDying(name DamageType, vector HitLoc) { if ( Mesh == FallBackMesh ) { Super.PlayDying(DamageType, HitLoc); return; } BaseEyeHeight = Default.BaseEyeHeight; PlayDyingSound(); if ( DamageType == 'Suicided' ) { PlayAnim('Dead1',, 0.1); return; } // check for head hit if ( DamageType == 'Decapitated' ) { PlaySkaarjDecap(); return; } // check for big hit if ( Velocity.Z > 200 ) { if ( FRand() < 0.65 ) PlayAnim('Dead4',,0.1); else if ( FRand() < 0.5 ) PlayAnim('Dead2',, 0.1); else PlayAnim('Dead3',, 0.1); return; } // check for repeater death if ( (Health > -10) && ((DamageType == 'shot') || (DamageType == 'zapped')) ) { PlayAnim('Dead9',, 0.1); return; } if ( HitLoc.Z - Location.Z > 0.7 * CollisionHeight ) { if ( FRand() < 0.35 ) PlaySkaarjDecap(); else PlayAnim('Dead2',, 0.1); return; } if ( FRand() < 0.6 ) //then hit in front or back PlayAnim('Dead1',, 0.1); else PlayAnim('Dead3',, 0.1); } function PlaySkaarjDecap() { local carcass carc; if ( class'GameInfo'.Default.bVeryLowGore ) { PlayAnim('Dead2',, 0.1); return; } PlayAnim('Dead5',, 0.1); if ( Level.NetMode != NM_Client ) { carc = Spawn(class 'TSkaarjHead',,, Location + CollisionHeight * vect(0,0,0.8), Rotation + rot(3000,0,16384) ); if (carc != None) { carc.Initfor(self); carc.RemoteRole = ROLE_SimulatedProxy; carc.Velocity = Velocity + VSize(Velocity) * VRand(); carc.Velocity.Z = FMax(carc.Velocity.Z, Velocity.Z); } } } aTx 6b·TΤ:R]H]H]H]H]H      i~e:&] Dominator%] T_skaarj_$= TSkMSkins.MTSkMSkins.Warr,+2/./-/'"*]EpicCustomModels.TSkM()]Skaarj Hybrid]MultiMesh.SkaarjVoiceZ$Q8?V//============================================================================= // TNaliHead. //============================================================================= class TNaliHead extends UTHeads; }B[*$*Cw*-'-'a(((o$ [//============================================================================= // TNaliBot. //============================================================================= class TNaliBot extends CustomBot; // special animation functions function PlayDying(name DamageType, vector HitLoc) { if ( Mesh == FallBackMesh ) { Super.PlayDying(DamageType, HitLoc); return; } BaseEyeHeight = Default.BaseEyeHeight; PlayDyingSound(); if ( DamageType == 'Suicided' ) { PlayAnim('Dead',, 0.1); return; } // check for head hit if ( DamageType == 'Decapitated' ) { PlayNaliDecap(); return; } // check for big hit if ( Velocity.Z > 200 ) { if ( FRand() < 0.65 ) PlayAnim('Dead4',,0.1); else PlayAnim('Dead2',, 0.1); return; } if ( HitLoc.Z - Location.Z > 0.7 * CollisionHeight ) { if ( FRand() < 0.35 ) PlayNaliDecap(); else PlayAnim('Dead2',, 0.1); return; } if ( FRand() < 0.6 ) //then hit in front or back PlayAnim('Dead',, 0.1); else PlayAnim('Dead2',, 0.1); } function PlayNaliDecap() { local carcass carc; if ( class'GameInfo'.Default.bVeryLowGore ) { PlayAnim('Dead2',, 0.1); return; } PlayAnim('Dead3',, 0.1); if ( Level.NetMode != NM_Client ) { carc = Spawn(class 'TNaliHead',,, Location + CollisionHeight * vect(0,0,0.8), Rotation + rot(3000,0,16384) ); if (carc != None) { carc.Initfor(self); carc.RemoteRole = ROLE_SimulatedProxy; carc.Velocity = Velocity + VSize(Velocity) * VRand(); carc.Velocity.Z = FMax(carc.Velocity.Z, Velocity.Z); } } } LX//============================================================================= // TNali. //============================================================================= class TNali extends CustomPlayer; // special animation functions function PlayDying(name DamageType, vector HitLoc) { if ( Mesh == FallBackMesh ) { Super.PlayDying(DamageType, HitLoc); return; } BaseEyeHeight = Default.BaseEyeHeight; PlayDyingSound(); if ( DamageType == 'Suicided' ) { PlayAnim('Dead',, 0.1); return; } // check for head hit if ( DamageType == 'Decapitated' ) { PlayNaliDecap(); return; } // check for big hit if ( Velocity.Z > 200 ) { if ( FRand() < 0.65 ) PlayAnim('Dead4',,0.1); else PlayAnim('Dead2',, 0.1); return; } if ( HitLoc.Z - Location.Z > 0.7 * CollisionHeight ) { if ( FRand() < 0.35 ) PlayNaliDecap(); else PlayAnim('Dead2',, 0.1); return; } if ( FRand() < 0.6 ) //then hit in front or back PlayAnim('Dead',, 0.1); else PlayAnim('Dead2',, 0.1); } function PlayNaliDecap() { local carcass carc; if ( class'GameInfo'.Default.bVeryLowGore ) { PlayAnim('Dead2',, 0.1); return; } PlayAnim('Dead3',, 0.1); if ( Level.NetMode != NM_Client ) { carc = Spawn(class 'TNaliHead',,, Location + CollisionHeight * vect(0,0,0.8), Rotation + rot(3000,0,16384) ); if (carc != None) { carc.Initfor(self); carc.RemoteRole = ROLE_SimulatedProxy; carc.Velocity = Velocity + VSize(Velocity) * VRand(); carc.Velocity.Z = FMax(carc.Velocity.Z, Velocity.Z); } } } gO{ 6 hHTΤ:R]H]H]H]H]H:&]TNaliMeshSkins.nali-Face%] T_nali_$]TNaliMeshSkins.]TNaliMeshSkins.Ouboudah,+2.-'"*AS]EpicCustomModels.TNaliMesh()]Nali]MultiMesh.NaliVoiceH8U@Ur8 6RC:8:$a!Y̬?33>66 66 u=S:8:$a![̬?33>66 66 u=S:8:$a&!E>Sa!u̬?33>66 66 u= @-class TDMBonusPackMapList extends MapList; d1]:-r11[b b5V1D1  5[p5}5}DD,  k|m̶ ] DM-Agony.unr DM-ArcaneTemple.unr DM-Cybrosis][.unr DM-HealPod][.unr DM-Malevolence.unr DM-Mojo][.unr DM-Shrapnel][.unrnk//============================================================================= // TCowMasterChunk //============================================================================= class TCowMasterChunk extends UTMasterCreatureChunk; simulated function ClientExtraChunks() { local carcass carc; local UT_bloodburst b; local PlayerPawn P; If ( Level.NetMode == NM_DedicatedServer ) return; if ( class'GameInfo'.Default.bLowGore ) { Destroy(); return; } b = Spawn(class 'UT_BloodBurst'); if ( bGreenBlood ) b.GreenBlood(); b.RemoteRole = ROLE_None; if ( Level.bHighDetailMode && !Level.bDropDetail ) { if ( FRand() < 0.3 ) { carc = Spawn(class 'UTLiver'); if (carc != None) carc.Initfor(self); } else if ( FRand() < 0.5 ) { carc = Spawn(class 'UTStomach'); if (carc != None) carc.Initfor(self); } else { carc = Spawn(class 'UTHeart'); if (carc != None) carc.Initfor(self); } } carc = Spawn(class 'UTPlayerChunks'); if (carc != None) carc.Initfor(self); carc = Spawn(class 'UTPlayerChunks'); if (carc != None) carc.Initfor(self); carc = Spawn(class 'UT_MaleTorso'); if (carc != None) carc.Initfor(self); carc = Spawn(class 'UT_Thigh'); if (carc != None) carc.Initfor(self); } S_G- l<% #::$a?' r8 ::$  oaw::$v! o-lr&*_- w*l$r*w*r*ar*0CommandoSkins.cmdoBlakev! vFh%dF,F>a!W333?L>bPF333?a!Y333?L>ba!t333?L> T//============================================================================= // TCowHead. //============================================================================= class TCowHead extends UTHeads; xAbVJ;!+?a&!A8a&!/AHa&!A W//============================================================================= // TCowCarcass. // DO NOT USE THESE AS DECORATIONS //============================================================================= class TCowCarcass extends TMale1Carcass; function CreateReplacement() { if ( Mesh == Default.Mesh ) MasterReplacement = class'TMaleMasterChunk'; Super.CreateReplacement(); } z`NB.!?a&!`,a&!?` ttG |_S.!a&!_,a&!_ ~^T.!/a&!^,a&!/^ a a-' dB (Er d CommandoSkins.cmdoBlake6 _z  ]  0 } }]z00* p0  &  :6, ,pp*eR6 5,  ,&w. *{  :6,. .p Face r. *. . &. .   T///============================================================================= // TCowBot. //============================================================================= class TCowBot extends CustomBot; simulated function SetMyMesh() { Super.SetMyMesh(); bIsMultiSkinned = true; } static function SetMultiSkin(Actor SkinActor, string SkinName, string FaceName, byte TeamNum) { local string SkinItem, SkinPackage; if ( SkinActor.Mesh == Default.FallBackMesh ) { Super.SetMultiSkin(SkinActor, "CommandoSkins.cmdo", "Blake", TeamNum); return; } // two skins if ( SkinName == "" ) SkinName = default.DefaultSkinName; else { SkinItem = SkinActor.GetItemName(SkinName); SkinPackage = Left(SkinName, Len(SkinName) - Len(SkinItem)); if( SkinPackage == "" ) { SkinPackage=default.DefaultCustomPackage; SkinName=SkinPackage$SkinName; } } if( !SetSkinElement(SkinActor, 1, SkinName, default.DefaultSkinName) ) SkinName = default.DefaultSkinName; // Set the team elements if( TeamNum < 4 ) SetSkinElement(SkinActor, 2, default.DefaultCustomPackage$default.TeamSkin$String(TeamNum), SkinName); else SkinActor.MultiSkins[2] = Default.MultiSkins[2]; // Set the talktexture if( Pawn(SkinActor) != None ) { if ( (SkinName != Default.DefaultSkinName) && (TeamNum == 255) ) { Pawn(SkinActor).PlayerReplicationInfo.TalkTexture = Texture(DynamicLoadObject(SkinName$"Face", class'Texture')); if ( Pawn(SkinActor).PlayerReplicationInfo.TalkTexture == None ) Pawn(SkinActor).PlayerReplicationInfo.TalkTexture = Texture(DynamicLoadObject(default.DefaultFace, class'Texture')); } else Pawn(SkinActor).PlayerReplicationInfo.TalkTexture = Texture(DynamicLoadObject(default.DefaultFace, class'Texture')); } } // special animation functions function PlayDying(name DamageType, vector HitLoc) { if ( Mesh == FallBackMesh ) { Super.PlayDying(DamageType, HitLoc); return; } BaseEyeHeight = Default.BaseEyeHeight; PlayDyingSound(); if ( DamageType == 'Suicided' ) { PlayAnim('Dead2',, 0.1); return; } // check for head hit if ( DamageType == 'Decapitated' ) { PlayCowDecap(); return; } // check for big hit if ( Velocity.Z > 200 ) { PlayAnim('Dead3',,0.1); return; } if ( HitLoc.Z - Location.Z > 0.7 * CollisionHeight ) { PlayAnim('Dead2',, 0.1); return; } PlayAnim('Dead1',, 0.1); } function PlayCowDecap() { local carcass carc; if ( class'GameInfo'.Default.bVeryLowGore ) { PlayAnim('Dead2',, 0.1); return; } PlayAnim('Dead4',, 0.1); if ( Level.NetMode != NM_Client ) { carc = Spawn(class 'TCowHead',,, Location + CollisionHeight * vect(0,0,0.8), Rotation + rot(3000,0,16384) ); if (carc != None) { carc.Initfor(self); carc.RemoteRole = ROLE_SimulatedProxy; carc.Velocity = Velocity + VSize(Velocity) * VRand(); carc.Velocity.Z = FMax(carc.Velocity.Z, Velocity.Z); } } } DM@B 6EJ廻:R]H]H]H]H]HO O O \.;\.;\.;\.;&]TCowMeshSkins.WarCowFace%]T_cow_$MTCowMeshSkins.gQ,+2.-'"*]TCowMeshSkins.WarCowAS]EpicCustomModels.TCowMesh()] Nali Cow]MultiMesh.CowVoicec6@Q///============================================================================= // TCow. //============================================================================= class TCow extends CustomPlayer; simulated function SetMyMesh() { Super.SetMyMesh(); bIsMultiSkinned = true; } static function SetMultiSkin(Actor SkinActor, string SkinName, string FaceName, byte TeamNum) { local string SkinItem, SkinPackage; if ( SkinActor.Mesh == Default.FallBackMesh ) { Super.SetMultiSkin(SkinActor, "CommandoSkins.cmdo", "Blake", TeamNum); return; } // two skins if ( SkinName == "" ) SkinName = default.DefaultSkinName; else { SkinItem = SkinActor.GetItemName(SkinName); SkinPackage = Left(SkinName, Len(SkinName) - Len(SkinItem)); if( SkinPackage == "" ) { SkinPackage=default.DefaultCustomPackage; SkinName=SkinPackage$SkinName; } } if( !SetSkinElement(SkinActor, 1, SkinName, default.DefaultSkinName) ) SkinName = default.DefaultSkinName; // Set the team elements if( TeamNum < 4 ) SetSkinElement(SkinActor, 2, default.DefaultCustomPackage$default.TeamSkin$String(TeamNum), SkinName); else SkinActor.MultiSkins[2] = Default.MultiSkins[2]; // Set the talktexture if( Pawn(SkinActor) != None ) { if ( (SkinName != Default.DefaultSkinName) && (TeamNum == 255) ) { Pawn(SkinActor).PlayerReplicationInfo.TalkTexture = Texture(DynamicLoadObject(SkinName$"Face", class'Texture')); if ( Pawn(SkinActor).PlayerReplicationInfo.TalkTexture == None ) Pawn(SkinActor).PlayerReplicationInfo.TalkTexture = Texture(DynamicLoadObject(default.DefaultFace, class'Texture')); } else Pawn(SkinActor).PlayerReplicationInfo.TalkTexture = Texture(DynamicLoadObject(default.DefaultFace, class'Texture')); } } // special animation functions function PlayDying(name DamageType, vector HitLoc) { if ( Mesh == FallBackMesh ) { Super.PlayDying(DamageType, HitLoc); return; } BaseEyeHeight = Default.BaseEyeHeight; PlayDyingSound(); if ( DamageType == 'Suicided' ) { PlayAnim('Dead2',, 0.1); return; } // check for head hit if ( DamageType == 'Decapitated' ) { PlayCowDecap(); return; } // check for big hit if ( Velocity.Z > 200 ) { PlayAnim('Dead3',,0.1); return; } if ( HitLoc.Z - Location.Z > 0.7 * CollisionHeight ) { PlayAnim('Dead2',, 0.1); return; } PlayAnim('Dead1',, 0.1); } function PlayCowDecap() { local carcass carc; if ( class'GameInfo'.Default.bVeryLowGore ) { PlayAnim('Dead2',, 0.1); return; } PlayAnim('Dead4',, 0.1); if ( Level.NetMode != NM_Client ) { carc = Spawn(class 'TCowHead',,, Location + CollisionHeight * vect(0,0,0.8), Rotation + rot(3000,0,16384) ); if (carc != None) { carc.Initfor(self); carc.RemoteRole = ROLE_SimulatedProxy; carc.Velocity = Velocity + VSize(Velocity) * VRand(); carc.Velocity.Z = FMax(carc.Velocity.Z, Velocity.Z); } } } AG~A 6I삦TΤ:R]H]H]H]H]HO O O \.;\.;\.;\.;:&]TCowMeshSkins.WarCowFace%]T_cow_$MTCowMeshSkins.]TCowMeshSkins.WarCow,+2.-'"*gQAS]EpicCustomModels.TCowMesh()] Nali Cow]MultiMesh.CowVoicecC?4?s!r?\ #Q?!1a! = h?!!; 6?,a! = 6\6333?a! = a!3 = Vclass SkaarjVoice extends VoiceMaleTwo; function Timer() { local name MessageType; if ( bDelayedResponse ) { bDelayedResponse = false; if ( Owner.IsA('PlayerPawn') ) { if ( PlayerPawn(Owner).GameReplicationInfo.bTeamGame && (PlayerPawn(Owner).PlayerReplicationInfo.Team == DelayedSender.Team) ) MessageType = 'TeamSay'; else MessageType = 'Say'; PlayerPawn(Owner).TeamMessage(DelayedSender, DelayedResponse, MessageType, false); } } if ( Phrase[PhraseNum] != None ) { if ( Owner.IsA('PlayerPawn') && !PlayerPawn(Owner).bNoVoices && (Level.TimeSeconds - PlayerPawn(Owner).LastPlaySound > 2) ) { if ( (PlayerPawn(Owner).ViewTarget != None) && !PlayerPawn(Owner).ViewTarget.IsA('Carcass') ) { PlayerPawn(Owner).ViewTarget.PlaySound(Phrase[PhraseNum], SLOT_Interface, 16.0,,,0.7); PlayerPawn(Owner).ViewTarget.PlaySound(Phrase[PhraseNum], SLOT_Misc, 16.0,,,0.7); } else { PlayerPawn(Owner).PlaySound(Phrase[PhraseNum], SLOT_Interface, 16.0,,,0.7); PlayerPawn(Owner).PlaySound(Phrase[PhraseNum], SLOT_Misc, 16.0,,,0.7); } } if ( PhraseTime[PhraseNum] == 0 ) Destroy(); else { SetTimer(PhraseTime[PhraseNum], false); PhraseNum++; } } else Destroy(); } HJ;h " -a! = a!0 =::$a S #L?a<" @w* $ 6 6 6 KhB2NG'LO W}DۍW}.;.;W}O W}RW}W}W}O W}O W}O W}W} ]$#%#! %&$##! *@#&$!@4 - !r@f #Q@!1a!> = h@!!  6?,ff&?a!0 =a! = 6f6333?33> a! = ?a!> =a! = *class NaliVoice extends VoiceMaleTwo; 9m V&  %  }}%$}}&稨&%$z$$*p$z*pHpS&pS&ppp&S&%pS&:C,pppS&T_RCpS&pppS&T_RCpS&VpS&pS&w.*{..ppp&5% .*  O ;l " -a! = a! =::$a X #L?a<" @w* $ 6 6 6 PC2S'L6667] Habouji!7  Nouwandi!7 Qupada!OY?@@=] Mouhaga!=  Batai d'va!W  Batai d'va! ] Bywonda!  Habouji!  Nouwandi! Qupada!  Mouhaga!  Batai d'va!a"VV P a!L?> T7L|333?/!7?^Sa%!Fa&!? ^7>r*?,a&!C7a&!D7 bclass MultiMeshMenu expands UMenuModMenuItem config; var config bool bForceDefaultMesh; function Execute() { MenuItem.bChecked = !MenuItem.bChecked; bForceDefaultMesh = MenuItem.bChecked; SaveConfig(); } U;K&333?/!;@^Sa%!Fa&!@ ^;333?r*?,a&!C;a&!D; P //============================================================================= // CustomPlayerReplicationInfo. //============================================================================= class CustomPlayerReplicationInfo expands PlayerReplicationInfo; simulated function PostBeginPlay() { SetTimer(2.0, true); Super.PostBeginPlay(); } simulated function Timer() { local Pawn P; local Mesh NewMesh; if ( TalkTexture == None ) TalkTexture = Texture(DynamicLoadObject("SoldierSkins.blkt5Malcom",class'Texture')); if ( Role == ROLE_Authority ) Super.Timer(); else ForEach AllActors(class'Pawn',P) if ( P.PlayerReplicationInfo == self ) { if ( (P.Mesh == None) && P.IsA('CustomPlayer') ) CustomPlayer(P).SetMyMesh(); else SetTimer(0.0, false); return; } } WoU9J-(6HC6-oa!Y̬?u=Ha![̬?u= eRzB 6 Zv/O}廻:R]H]H]H]H]H&]TNaliMeshSkins.nali-Face%] T_nali_$]TNaliMeshSkins.,+2.-'"*]TNaliMeshSkins.OuboudahAS]EpicCustomModels.TNaliMesh()]Nali]MultiMesh.NaliVoiceY"4C|~!r"j #Q"!1a!3 = h"!! 6?,ff&?a!0 =?a! =a! = "!_ "!Ma!I = Q6j6333?A33>Oa! = n?a!3 =|a! = XeE\GX8.;\\\TΤ[~ " -a! = a!f =::$a W #L?a<" @w* $ 6 6 6 }//============================================================================= // CustomPlayer. //============================================================================= class CustomPlayer extends TournamentMale abstract; var() mesh FallBackMesh; var() string Author; var() string AuthorInfo; var() string DefaultFace, TeamSkin, DefaultCustomPackage; static function SetMyMultiSkin(Actor SkinActor, string SkinName, string FaceName, byte TeamNum) { local string MeshName, FacePackage, SkinItem, FaceItem, SkinPackage; MeshName = SkinActor.GetItemName(string(SkinActor.Mesh)); SkinItem = SkinActor.GetItemName(SkinName); FaceItem = SkinActor.GetItemName(FaceName); FacePackage = Left(FaceName, Len(FaceName) - Len(FaceItem)); SkinPackage = Left(SkinName, Len(SkinName) - Len(SkinItem)); log(SkinItem@FaceItem@FacePackage@SkinPackage); if(SkinPackage == "") { SkinPackage=default.DefaultCustomPackage; SkinName=SkinPackage$SkinName; } if(FacePackage == "") { FacePackage=default.DefaultCustomPackage; FaceName=FacePackage$FaceName; } // Set the fixed skin element. If it fails, go to default skin & no face. if(!SetSkinElement(SkinActor, default.FixedSkin, SkinName$string(default.FixedSkin+1), default.DefaultSkinName$string(default.FixedSkin+1))) { SkinName = default.DefaultSkinName; FaceName = ""; } // Set the face - if it fails, set the default skin for that face element. SetSkinElement(SkinActor, default.FaceSkin, FacePackage$SkinItem$String(default.FaceSkin+1)$FaceItem, SkinName$String(default.FaceSkin+1)); // Set the team elements if( TeamNum != 255 ) { SetSkinElement(SkinActor, default.TeamSkin1, SkinName$string(default.TeamSkin1+1)$"T_"$String(TeamNum), SkinName$string(default.TeamSkin1+1)); SetSkinElement(SkinActor, default.TeamSkin2, SkinName$string(default.TeamSkin2+1)$"T_"$String(TeamNum), SkinName$string(default.TeamSkin2+1)); } else { SetSkinElement(SkinActor, default.TeamSkin1, SkinName$string(default.TeamSkin1+1), ""); SetSkinElement(SkinActor, default.TeamSkin2, SkinName$string(default.TeamSkin2+1), ""); } // Set the talktexture if(Pawn(SkinActor) != None) { if(FaceName != "") Pawn(SkinActor).PlayerReplicationInfo.TalkTexture = Texture(DynamicLoadObject(FacePackage$SkinItem$"5"$FaceItem, class'Texture')); else Pawn(SkinActor).PlayerReplicationInfo.TalkTexture = None; } } static function SetMultiSkin(Actor SkinActor, string SkinName, string FaceName, byte TeamNum) { local string MeshName, SkinPackage; local Texture NewSkin; if ( SkinActor.Mesh == Default.FallBackMesh ) { Super.SetMultiSkin(SkinActor, "CommandoSkins.cmdo", "Blake", TeamNum); return; } if ( SkinName == "" ) SkinName = default.DefaultSkinName; if ( default.bisMultiSkinned ) { if ( FaceName == "" ) FaceName = default.DefaultFace; log("set multiskin "$SkinName@FaceName); //Super. SetMyMultiSkin(SkinActor, SkinName, FaceName, TeamNum); return; } // only one skin for mesh MeshName = SkinActor.GetItemName(string(SkinActor.Mesh)); if( TeamNum != 255 ) SkinName = default.DefaultCustomPackage$default.TeamSkin$String(TeamNum); if( !SetSkinElement(SkinActor, 0, SkinName, default.DefaultSkinName) ) SkinName = default.DefaultSkinName; NewSkin = Texture(DynamicLoadObject(SkinName, class'Texture')); if ( NewSkin != None ) SkinActor.Skin = NewSkin; else { log("Failed to load "$SkinName); if(default.DefaultSkinName != "") { NewSkin = Texture(DynamicLoadObject(default.DefaultSkinName, class'Texture')); SkinActor.Skin = NewSkin; } } // Set the talktexture if( Pawn(SkinActor) != None ) { if ( (SkinName != Default.DefaultSkinName) && (TeamNum == 255) ) { Pawn(SkinActor).PlayerReplicationInfo.TalkTexture = Texture(DynamicLoadObject(SkinName$"-Face", class'Texture')); if ( Pawn(SkinActor).PlayerReplicationInfo.TalkTexture == None ) Pawn(SkinActor).PlayerReplicationInfo.TalkTexture = Texture(DynamicLoadObject(default.DefaultFace, class'Texture')); } else Pawn(SkinActor).PlayerReplicationInfo.TalkTexture = Texture(DynamicLoadObject(default.DefaultFace, class'Texture')); } } static function GetMultiSkin( Actor SkinActor, out string SkinName, out string FaceName ) { local string FullSkinName, ShortSkinName; if ( default.bisMultiSkinned || (SkinActor.Mesh == Default.FallBackMesh) ) { Super.GetMultiSkin(SkinActor,SkinName,FaceName); return; } // only one skin FaceName = ""; FullSkinName = String(SkinActor.Skin); ShortSkinName = SkinActor.GetItemName(FullSkinName); SkinName = Left(FullSkinName, Len(FullSkinName) - Len(ShortSkinName)) $ Left(ShortSkinName, 4); } simulated function PostBeginPlay() { Super.PostBeginPlay(); SetMyMesh(); if ( Role == ROLE_SimulatedProxy ) SetTimer(1.0, true); } simulated function Timer() { if ( (Role == ROLE_SimulatedProxy) && (Mesh == None) ) SetMyMesh(); Super.Timer(); } simulated function SetMyMesh() { local Mesh NewMesh; DrawType = DT_Mesh; if ( class'MultiMeshMenu'.default.bForceDefaultMesh || ((Mesh == None) && (Default.Mesh == None)) ) { bIsMultiSkinned = true; Mesh = FallBackMesh; Super.SetMultiSkin(self, "CommandoSkins.cmdo", "Blake", PlayerReplicationInfo.Team); return; } if ( Default.Mesh != none ) Mesh = Default.Mesh; if ( bIsMultiSkinned ) { if ( MultiSkins[0] == None ) { if ( bIsPlayer && (PlayerReplicationInfo != None) ) SetMultiSkin(self, "","", PlayerReplicationInfo.team); else SetMultiSkin(self, "","", 0); } } else if ( Skin == None ) Skin = Default.Skin; } // should use PostNetBeginPlay, but version 400 doesn't have it, so put code here simulated function Tick(float DeltaTime) { if ( Role != ROLE_SimulatedProxy ) { Disable('Tick'); return; } if ( (PlayerReplicationInfo == None) || !PlayerReplicationInfo.bIsSpectator ) SetMyMesh(); if ( (PlayerReplicationInfo != None) && (PlayerReplicationInfo.Owner == None) ) PlayerReplicationInfo.SetOwner(self); Disable('Tick'); } // don't make assumptions deaths will also work as certain type of hit anim function PlayGutHit(float tweentime) { if ( AnimSequence == 'GutHit' ) { if (FRand() < 0.5) TweenAnim('LeftHit', tweentime); else TweenAnim('RightHit', tweentime); } else TweenAnim('GutHit', tweentime); } function PlayHeadHit(float tweentime) { if ( AnimSequence == 'HeadHit' ) TweenAnim('GutHit', tweentime); else TweenAnim('HeadHit', tweentime); } function PlayLeftHit(float tweentime) { if ( AnimSequence == 'LeftHit' ) TweenAnim('GutHit', tweentime); else TweenAnim('LeftHit', tweentime); } function PlayRightHit(float tweentime) { if ( AnimSequence == 'RightHit' ) TweenAnim('GutHit', tweentime); else TweenAnim('RightHit', tweentime); } // hacks because SetMesh() didn't exist in 400 (to preserve compatibility) state PlayerWalking { ignores SeePlayer, HearNoise, Bump; function BeginState() { if ( Mesh == None ) SetMyMesh(); WalkBob = vect(0,0,0); DodgeDir = DODGE_None; bIsCrouching = false; bIsTurning = false; bPressedJump = false; if (Physics != PHYS_Falling) SetPhysics(PHYS_Walking); if ( !IsAnimating() ) PlayWaiting(); } } state PlayerWaiting { ignores SeePlayer, HearNoise, Bump, TakeDamage, Died, ZoneChange, FootZoneChange; function BeginState() { Texture = None; DrawType = DT_Sprite; Mesh = None; if ( PlayerReplicationInfo != None ) { PlayerReplicationInfo.bIsSpectator = true; PlayerReplicationInfo.bWaitingPlayer = true; } SetCollision(false,false,false); EyeHeight = BaseEyeHeight; SetPhysics(PHYS_None); } function EndState() { SetMyMesh(); PlayerReplicationInfo.bIsSpectator = false; PlayerReplicationInfo.bWaitingPlayer = false; SetCollision(true,true,true); } } state PlayerSpectating { ignores SeePlayer, HearNoise, Bump, TakeDamage, Died, ZoneChange, FootZoneChange; function BeginState() { Texture = None; DrawType = DT_Sprite; PlayerReplicationInfo.bIsSpectator = true; PlayerReplicationInfo.bWaitingPlayer = true; bShowScores = true; Mesh = None; SetCollision(false,false,false); EyeHeight = Default.BaseEyeHeight; SetPhysics(PHYS_None); } function EndState() { PlayerReplicationInfo.bIsSpectator = false; PlayerReplicationInfo.bWaitingPlayer = false; SetMyMesh(); SetCollision(true,true,true); } } <2a@' `,8;r*.SoldierSkins.blkt5Malcom R::$/a0 ,r,r,*,a/!5., a(0 10 K //============================================================================= // CustomBotPlayerReplicationInfo. //============================================================================= class CustomBotPlayerReplicationInfo expands BotReplicationInfo; simulated function PostBeginPlay() { SetTimer(2.0, true); Super.PostBeginPlay(); } simulated function Timer() { local Pawn P; local Mesh NewMesh; if ( TalkTexture == None ) TalkTexture = Texture(DynamicLoadObject("SoldierSkins.blkt5Malcom",class'Texture')); if ( Role == ROLE_Authority ) Super.Timer(); else ForEach AllActors(class'Pawn',P) if ( P.PlayerReplicationInfo == self ) { if ( (P.Mesh == None) && P.IsA('CustomBot') ) CustomBot(P).SetMyMesh(); else SetTimer(0.0, false); return; } } < 1a@' d 8;r*.SoldierSkins.blkt5Malcom R::$/a0 r r * a/!.  a(0 10 baJf脺#fIn\\\廻kKg ]CTF-Hydro16.unr CTF-Darji16.unr CTF-Cybrosis][.unr CTF-Noxion16.unrG8]T--(a/!^.-/:.:G!iG!r.pG(Ow*a/!^.-).?,w.*".a/!q.a$A 333?.a$A 333?.a$A 333?.a$A 333?6?%aLa(Ra {s//============================================================================= // CustomBot. //============================================================================= class CustomBot extends MaleBotPlus abstract; var mesh FallBackMesh; var() string DefaultFace, TeamSkin, DefaultCustomPackage; static function SetMyMultiSkin(Actor SkinActor, string SkinName, string FaceName, byte TeamNum) { local string MeshName, FacePackage, SkinItem, FaceItem, SkinPackage; MeshName = SkinActor.GetItemName(string(SkinActor.Mesh)); SkinItem = SkinActor.GetItemName(SkinName); FaceItem = SkinActor.GetItemName(FaceName); FacePackage = Left(FaceName, Len(FaceName) - Len(FaceItem)); SkinPackage = Left(SkinName, Len(SkinName) - Len(SkinItem)); log(SkinItem@FaceItem@FacePackage@SkinPackage); if(SkinPackage == "") { SkinPackage=default.DefaultCustomPackage; SkinName=SkinPackage$SkinName; } if(FacePackage == "") { FacePackage=default.DefaultCustomPackage; FaceName=FacePackage$FaceName; } // Set the fixed skin element. If it fails, go to default skin & no face. if(!SetSkinElement(SkinActor, default.FixedSkin, SkinName$string(default.FixedSkin+1), default.DefaultSkinName$string(default.FixedSkin+1))) { SkinName = default.DefaultSkinName; FaceName = ""; } // Set the face - if it fails, set the default skin for that face element. SetSkinElement(SkinActor, default.FaceSkin, FacePackage$SkinItem$String(default.FaceSkin+1)$FaceItem, SkinName$String(default.FaceSkin+1)); // Set the team elements if( TeamNum != 255 ) { SetSkinElement(SkinActor, default.TeamSkin1, SkinName$string(default.TeamSkin1+1)$"T_"$String(TeamNum), SkinName$string(default.TeamSkin1+1)); SetSkinElement(SkinActor, default.TeamSkin2, SkinName$string(default.TeamSkin2+1)$"T_"$String(TeamNum), SkinName$string(default.TeamSkin2+1)); } else { SetSkinElement(SkinActor, default.TeamSkin1, SkinName$string(default.TeamSkin1+1), ""); SetSkinElement(SkinActor, default.TeamSkin2, SkinName$string(default.TeamSkin2+1), ""); } // Set the talktexture if(Pawn(SkinActor) != None) { if(FaceName != "") Pawn(SkinActor).PlayerReplicationInfo.TalkTexture = Texture(DynamicLoadObject(FacePackage$SkinItem$"5"$FaceItem, class'Texture')); else Pawn(SkinActor).PlayerReplicationInfo.TalkTexture = None; } } static function SetMultiSkin(Actor SkinActor, string SkinName, string FaceName, byte TeamNum) { local string MeshName, SkinPackage; local Texture NewSkin; if ( SkinActor.Mesh == Default.FallBackMesh ) { Super.SetMultiSkin(SkinActor, "CommandoSkins.cmdo", "Blake", TeamNum); return; } if ( SkinName == "" ) SkinName = default.DefaultSkinName; if ( default.bisMultiSkinned ) { if ( FaceName == "" ) FaceName = default.DefaultFace; SetMyMultiSkin(SkinActor, SkinName, FaceName, TeamNum); return; } // only one skin for mesh MeshName = SkinActor.GetItemName(string(SkinActor.Mesh)); if( TeamNum != 255 ) SkinName = default.DefaultCustomPackage$default.TeamSkin$String(TeamNum); if( !SetSkinElement(SkinActor, 0, SkinName, default.DefaultSkinName) ) SkinName = default.DefaultSkinName; NewSkin = Texture(DynamicLoadObject(SkinName, class'Texture')); if ( NewSkin != None ) SkinActor.Skin = NewSkin; else { log("Failed to load "$SkinName); if(default.DefaultSkinName != "") { NewSkin = Texture(DynamicLoadObject(default.DefaultSkinName, class'Texture')); SkinActor.Skin = NewSkin; } } // Set the talktexture if( Pawn(SkinActor) != None ) { if ( (SkinName != Default.DefaultSkinName) && (TeamNum == 255) ) { Pawn(SkinActor).PlayerReplicationInfo.TalkTexture = Texture(DynamicLoadObject(SkinName$"Face", class'Texture')); if ( Pawn(SkinActor).PlayerReplicationInfo.TalkTexture == None ) Pawn(SkinActor).PlayerReplicationInfo.TalkTexture = Texture(DynamicLoadObject(default.DefaultFace, class'Texture')); } else Pawn(SkinActor).PlayerReplicationInfo.TalkTexture = Texture(DynamicLoadObject(default.DefaultFace, class'Texture')); } } static function GetMultiSkin( Actor SkinActor, out string SkinName, out string FaceName ) { local string FullSkinName, ShortSkinName; if ( default.bisMultiSkinned || (SkinActor.Mesh == Default.FallBackMesh) ) { Super.GetMultiSkin(SkinActor,SkinName,FaceName); return; } // only one skin FaceName = ""; FullSkinName = String(SkinActor.Skin); ShortSkinName = SkinActor.GetItemName(FullSkinName); SkinName = Left(FullSkinName, Len(FullSkinName) - Len(ShortSkinName)) $ Left(ShortSkinName, 4); } simulated function PostBeginPlay() { Super.PostBeginPlay(); SetMyMesh(); if ( Role == ROLE_SimulatedProxy ) SetTimer(1.0, true); } simulated function Timer() { if ( Role == ROLE_SimulatedProxy ) SetMyMesh(); Super.Timer(); } simulated function SetMyMesh() { local Mesh NewMesh; if ( class'MultiMeshMenu'.default.bForceDefaultMesh ) { Mesh = FallBackMesh; Super.SetMultiSkin(self, "CommandoSkins.cmdo", "Blake", PlayerReplicationInfo.Team); return; } if ( Default.Mesh == none ) { bIsMultiSkinned = true; if ( Mesh == None ) { Mesh = FallBackMesh; Super.SetMultiSkin(self, "CommandoSkins.cmdo", "Blake", PlayerReplicationInfo.Team); } } else if ( (PlayerReplicationInfo == None) || !PlayerReplicationInfo.bIsSpectator ) Mesh = Default.Mesh; } // should use PostNetBeginPlay, but version 400 doesn't have it, so put code here simulated function Tick(float DeltaTime) { if ( Role != ROLE_SimulatedProxy ) { Disable('Tick'); return; } if ( bIsMultiSkinned ) { if ( MultiSkins[1] == None ) { if ( bIsPlayer && (PlayerReplicationInfo != None) ) SetMultiSkin(self, "","", PlayerReplicationInfo.team); else SetMultiSkin(self, "","", 0); } } else if ( Skin == None ) Skin = Default.Skin; if ( (PlayerReplicationInfo != None) && (PlayerReplicationInfo.Owner == None) ) PlayerReplicationInfo.SetOwner(self); if ( Mesh == none ) //client doesn't have special mesh, make sure have valid skin { Mesh = FallBackMesh; self.Static.SetMultiSkin(self,"CommandoSkins.cmdo", "Blake", PlayerReplicationInfo.Team); } Disable('Tick'); } function PlayVictoryDance() { local float decision; decision = FRand(); if ( decision < 0.4 ) PlayAnim('Victory1',0.7, 0.2); else if ( decision < 0.7 ) PlayAnim('Thrust',0.7, 0.2); else PlayAnim('Taunt1',0.7, 0.2); } // don't make assumptions deaths will also work as certain type of hit anim function PlayGutHit(float tweentime) { if ( AnimSequence == 'GutHit' ) { if (FRand() < 0.5) TweenAnim('LeftHit', tweentime); else TweenAnim('RightHit', tweentime); } else TweenAnim('GutHit', tweentime); } function PlayHeadHit(float tweentime) { if ( AnimSequence == 'HeadHit' ) TweenAnim('GutHit', tweentime); else TweenAnim('HeadHit', tweentime); } function PlayLeftHit(float tweentime) { if ( AnimSequence == 'LeftHit' ) TweenAnim('GutHit', tweentime); else TweenAnim('LeftHit', tweentime); } function PlayRightHit(float tweentime) { if ( AnimSequence == 'RightHit' ) TweenAnim('GutHit', tweentime); else TweenAnim('RightHit', tweentime); } U a::$ 0 -a Ba V-BSB$(-->a w* (?a w* (a (w* a Qw* a zw* a w* a w*  -class CTFBonusPackMapList extends MapList; o %"r  )class CowVoice extends VoiceMaleTwo; EIx<---E-b ffH^fH_ffH|HGH]FEAGHZH^BRxPHqHdHzAfqftH]HAHHfrfvfEA_BbHDHIH}H\]VsDHxAlHBHlZbNHkBOH~Zx}AkHsCAA\bd`Sf|Dvbc`{H``e`lx\xhHfVAy]4Acb`fXAYFgCMHc]4HgH_H~xpCCbiD`D`DXDXA^bPbkCL]<]8HbV]HmbuWsAhbsbY]8babNbQbZbUbjbbHb`MD[DOC^CnHj]frHZB}D[DOHYbMHHHmbTA@bSbXbRWBbLbYb_]GbW]AdHl]QbQDzbpbwbxbobqC~btbrbvHZHDBdHCWCdd@fH^WAH]Hh]]]o]<bStHf]<]UBuAyCx]]HjfECF]eCyC`I]e]B]BCuAZCjNZwWXC{]wB]bxFb\BB]KCIHi]K]LC@]T]S`G]NHcHdHeCwCm]8]N]h]S]T|mHaH`xQBAHb]Ub[b]gH]P]b]`U]PHfCO]I`OWXWEG\Ui jUi vUa BVda OVPa \Va iVsi vVi CWPi PWa \Wsa iWdi vW5yBX\ {`M Ha\UjG cj` pjG |j~G IkG VkH cko oko {kG GlG Tl` al& nlde {ldnHmRVmPe dmK qmPn~mr Lnq Xnp dnr pnK |n$ Io$ Uop aoRmo& {oq HpclTpr @aLsnZsr h{ t{ AnNH \JhP` vD^BH `ald` znFK TK aH nUznIz W:e cW oK {z GK S{K `L moyH Gi S T`EtayH Z~_fH E` Q|H ]vfiy_O% nsp zi Fj Sp `H lH xH D |P` L{j Xje% Oj [j hSuPCj Qj ^PJ kJ xRDJ RJ ^dJ j}\wPqSuQDj-bO %Oe?ts` sV B\L4khT;SBnN;Q|l-M4pzN;jneRGsK zVFP5TK IKwU[LU ZS;gK bO o89| Qu<8F4z~]@xQxRVPr hm-tbRaue?s9XrqJ[ {a GWT4eTT4Z.yTSwTaT4_:ux@TXT4aTuB^uT4fStU yT4cF{UiUS~dr QT47]]@T|sTV GK TrT4vaGW<8v8/nT]a k]xK UhuaST4_VbRuQT4bGN;iuGdS;CtK ~T;JtnEa %SdqxT4_/i@xH` @T4\/LtVhAxv4gnT4aUt[v;QDBAU4pVT44F9[z QUCYfP5LRt:T4mFKRsT4[ EUY`zUy4zNE}H ERRT4Id<)m8mVT4V C Y<)f8mOJ@|Kq|8GmT4FttrUczT47]R TQo1aT43R:IJErO