*EHFy(Aښ݁ None oldskoolCoreSetTextMapsCreateControlSetFontSystemColorEngine InternalTime SetHelpText AliasNames ReplaceWithAddItemVBitsUClampVClampUBitsMipZeroPaletteGutHitUSizeVSizebotpack MaxColor WriteText UnrealShareUWindowDrawBodyCountLeftHit SetValue RightHitInitforUserSplats DecapitatedSkinsWalkRunSmDefaultTalkTexture TeamSkinMesh HideWindowUMenuDeathsClientSetMusic CarcassTypeDead3CreatedDefaultSkinNameSelectionMeshHeadHitDead2 StillSmFrDefaultPackage StillFrRp SpecialMeshJog MenuNameSwim GetValue SetRangeTickTweenToWaiting altpackageJogFireolroot DuckWlkSLODSetRunLgConsoleCommand JumpLgFr JumpSmFrWalkLg oldskoolhudDead1TitleWalkSmAuthor ClientClassExplosionDecalTweenToSwimming Screenshot PlayWaitingPostBeginPlayDrawFragCount DuckWlkL WalkSmFrNotifyRunLgFrDead5SetSelectedIndexAddPageRunSmFr GetValue2Dead4 PreBeginPlay PlaySwimming WalkLgFrPickupDead6FindInventoryTypeTweenToWalking bodyparts DrawHudIconAimDnLg HUDSetup SetEditableSpawnNotification PostRender HitSound3UWHit1 HitSound4 ShowWindowAimUpSmPlayDyingSoundAimUpLg LandGruntDrawInventoryDie WalkFire PlayHeadHitPlayerSwimmingdrownGetSelectedIndex SetSizePos LabelListAimDnSm GaspSound PlayLeftHit breathagain SpectatorSetSkinElement GetOffsetUWHit2FiringTreadSm JumpSoundUnrealI PlayRightHit PlayDyingDeath2ForceMeshToExist PlayDuck HitSound2 GreenBlood HitSound1 PlayGutHitTreadLg BeginStateVoicePackMetaClassSinglePlayer2 StrafeLeft StrafeLeftFrStrafeRightFr ScriptedPawnCollisionRadius VoiceTypeDead7AttachToSurfaceDeathSlith StrafeRightReceiveLocalizedMessageSkaarjWarriorServerInfoClassClose ShowScoresBird1 MessageBoxPaint LieStill PlayerPawnAnimEnd SetButtons AttachDecal GetItemName PlayChattingDodge PlayInAir spoldskool skinsetclassTakeHitTexture PlayRunning skinbotsetTweenToRunning IsRelevantCollisionHeight PlayFiring Inventory BeforePaint SetMaxLengthSetNumericOnly WindowTitle PlayLandedLand ArtNamesPlayWeaponSwitchSwimLg PlayRising LandLgFrBreath2 LandSmFrDrawIconValue Difficulties DrawArmor DrawHealthJumping Footstep2PowerUpSoundsDeath3 PlayWalking PlayTurning ActorClass TentacleFlyingManta GetFontSizeInAir Footstep1KrallTimer PlayCrawlingSwimSmdrawunrealmessagesSpecialIdentify Footstep3WarLordPlayFeignDeath findicon FixContentsDrawdiffCount GetBigFont GetHugeFontHitWallBaseEyeHeightAddDefaultInventoryFell scorekeeperLaunchUWindowLandedTriggerSendGlobalMessageDesignerNamesGetDesiredDimensionsGibbedTeamSay DrawTimeAtstartup DrawTalkFace SetUpCurrentClientMessageResized PlayDodge StartPressed DrawNumberOfGestureMessageProgrammerNames DisplayMenu AUTOTAUNT Buoyancy Decoration DrawMOTD BizNamesDrawCrossHairPawnTaunt1 DrawAmmoDrawIdentifyInfoWaitingNali ClientTravelWeapon DrawFlag GetColorRightClickTabTree LeglessDeathFallDead2B DuckwalkSkaarjTrooperJumpZArmor2CopyolMessageFlakShellAmmoHealthPlaySpawnEffect RifleRoundClipPlayMetalStep SendPlayerAsh ControlPointCheckReplacement coopgame2 PowerShieldDrawTeamGameSynopsis bpartialteamDuckShield StatusDoll GetMultiSkin LogPickup RenderInfo CheckRender ScoreKilloldskoolashudPreCacheReferences AnimSequence FinishDodgePlayVictoryDance MutatorClassPlayoldskoolbaseHUD ThighPadsWave Miniammo DestroyedUTMenu DeathMessageDraw1337MessageHeader BecomePickupMutatorTakeDamage GetStringDrawFlagStatusDrawTypingPrompt LoadMutatorsCreateReplacement CreatePages musicchanged ChallengeHUDbackgroundchangedRegisterDamageMutator FFChanged AnimEnergy RightDodgeKilledTraceIdentify StatusBeltDedicatedPressed CanSpectateGiveToDisplayProgressMessageGetLookAndFeelTextureDeath5 LeftDodgeAllBreath1Death4 DeathEndDead SetMultiSkinCrosshairChanged Breath1L Breath2L CockGunLDie3 spymessage hudchanged DrawScaleFlyBy DeathEnd2 resetstuffHollowFindItemIndex2SortTurnSm StillLgFr DrawScoreDie4 NaliRabbit AddVelocitySetDelayedNotify DeathEnd3 PostLoginTurnLgBrute ServerTravelMultiplayerUMenuType TakeDamage WalkStepMessageBoxDoneLoginlungeMutate CloseUWindowscoreit cdchanged ParseOption SuicidedPickupMessage bIsFemale bIsHuman Initialize boardchangedbIsMultiSkinnedResolutionChangedCow MusicNamesSayPlayTeleportEffect SpeedChangedMultiDecalLeveltvspCockGunLookDie2 SetFrameSkaarj RegisterMaxSpectatorsChangedMaxPlayersChangedLoadExistingKeys GameName MovingAttack bHumansOnlyRunStepScoreBoardTypeDefaultWeaponDefaultPlayerClassTurnBreath FallingStateHUDType EyeHeightGetUpPlayChallengeAttackHUDConfigWindowTypeSettingsMenuTypeGetPlayerChecksumRulesMenuType CopyMessageSwimAnimUpdate DetachDecal SaveConfigs bPauseable AllowChunkDisplayMessagesbRestartLevel WhiteColor CorrodedCriticalEvent RespawnTimeFlyDrop ItemNameEntry PlayTakeHitChangeCrosshairMass TossWeapon PlayRecoilPickupFunctionbCoopWeaponModePause ResetGameLocalizedMessageShouldRespawnEndGame GameMenuTypedropped BeaconNameDiscardInventoryMutatedDefaultWeapon PickupQuery WarnTargetActivateTranslator ReduceDamage PlayerWaking MusicEventTweenToFighter SetPausebHiddenDiedAcceptInventoryAmmoFindPlayerStartBotDesireabilityTouch LegacySPChallengeDominationHUD strange1 strange8 strange5-2 strange6 strange5 strange7 strange2 strangeIntro strange3shrak2shrak1shrak3CrashedSkyship NaliShipExamplepmlendpml5Arrivalpml3pml2pml4 invasion_5 invasion_4 invasion_6 invasion_2 invasion_1 invasion_3hollow5hollow4hollow3hollow2 illhaven_6 ownerTeam illhaven_end illhaven_5 illhaven_4 illhaven_3 illhaven_2 illhaven_1 Nightfall illhaven_stNightEveNoonash3ash1dawn VeloraEndUnrealBluff TheSunspire TerraniuxTrench SpireVillageSkyTown TerraLiftskybaseruins skycavesPassageNyleve Queenend NaliLordNaliCNoork Isvkran32 IsvKran4 NaliBoatHarobedGateway IsvDeck1 ExtremeDarkPickupViewMesh ExtremeDGen ExtremeCore ExtremeBeg ExtremeGen ExtremeEnd Extremelabdug DknightOpdigdcrater DasaPass DasaCellarsdarkchizra ceremonyBioAmmo warnhelp PlayFlip SetDrawColorTeamScoreBoard somemessage showfrag showtalkface realicons olCrosshairEverythingNotify DecalNotifyOldSkoolScrollKeysOldskoolScrollGOpOldskoolScrollSPOldskoolScrollMainOldskoolScrollAboutOldskoolScrollMusicKeyBinderOpenerGreenBloodSplatOSAExtraKeyBindingsOldSkoolAboutClientOldSkoolCustomizeClientWindow olBloodSplatolSlithProjectilePAmmoOlUTBloodPool2olCreatureChunksGreenUTBloodPool2 olBloodSpurtolCreatureCarcass OlBloodBurst BloodNotify olpawnshadow transhackolTentacleProjectileolQueenProjectileolSkaarjProjectile olMercRocketolBruteProjectileolGasBagBelchol1337krallBolt olKraalBoltolWarlordRocketboltskorchlongOldSkoolspectatorhudoldskoolHUDConfig coopbasecoopcw coopwindowcoopHUD realctfhudOldSkoolMutatorCWOldskoolMutatorWindow playbuttonskinconfigurationoldskoolgameoptionsclientOSWeaponPowerUpoldskoolspclient sktrooperOldSkoolScoreBoardoldskoolmusicclient GetNGSecretoldboardNotifyoldskoolTeamScoreBoard asscoreboard oldhudNotifyoldskoollmsboard OLautomagoldskooldomhudOldSkoolPagesClientWindowoldskoolteamhudunrealCreditsCWunrealCreditsWindow strangeworld enforcer shinigamiperilshrak minigun2 invasiononeday origUnrealtroopercarcass2 U1humanbot Illhaven Unrealhuman sktrooperbot unrealfbot unrealmbot UnrealFemale UnrealMaleoldskoolconfigclient JumpBoots UIweapons MaleOneBotbasedir MaxDesignersArtTextMaxArts MaxMusics AppendItem FindMutatorduskash2pml1Vortex2 FaceColor BladeHopperChallengeCTFHUD PurpleColor TurqColor GrayColorShowServerInfoGrowHUD ShrinkHUD ShockCoreFindFlagHolder RocketPackDone AssaultHUDTournamentAmmoTournamentPickup BlueColor GoldColor BulletBox PermaCarcass PlayWavingUnAir CyanColor CHSpectatorTournamentPlayer FortStandard FemaleTwoBotFlakBoxBloblet RazorAmmoSludge MaleTwoBotMaleTwo ParentBlob RifleAmmoGasbagSquidDead2AHUDConfigChangedAppendGetPage ShowModalUMenuMetalLookAndFeelUMenuBlueLookAndFeelLMSScoreboardPickupMessagePlusDirectionalBlastArmor FlakAmmo ASMDAmmoImpactJumpingUDamageChallengeTeamHUD PermaDecals BiterFishTournamentWeapon SpTauntsClientExtraChunksbdamage bUseDecalsbminiBiterFishSchoololdskoolconfigwindow DrawSkullosDispersionPowerup FemaleTwoWeaponPowerUpEndShipDrawNextMessagePart RedColor GreenColorQueenNoTeamPupae DefaultAmmoGotoTab WindowShownButton1 DevilfishMaxBizRemove DrawPing ShellBox DrawName AmplifierAutoMag MaleThreeBot KevlarSuit FemaleOneBot MaleThree ShieldBeltledinoTitan MercenaryCreateRootWindow Victory1Intro GibSound SetAsMaster Corroding RocketCan SuperHealth OpenBinder UnitColorAssaultScoreboard guncheck StingerAmmoMaleOne DrawTrailer Dead1Land OSAmplifier DrawHeader SortScores SetMultiLine FemaleOnecreditswindow Transporter CarcHeightDelta bIsTypingProgressTimeOutNumDir TweenTimeOther DeltaTimeUnrealTeamScoreBoard bCanThrowtrail DodgeMoveIP LargeFontVolume Difficulty ViewTarget SelectionHUDLocalizedMessageKiller SkinName SpawnClass EDodgeDirshooter bDecorativePingbHighDetailModePickupViewScale bShowMenuResultStinger CarcassClassMaxSpectators bWorldLog HitLocation TrailSizePlayerReStartStateServerLogNameInventoryGroup StartTrace Transition EightballaPawn MutateStringRootItem bShowScores NaliCarcass BloodSpurt BloodTrailHitLocaClassSpriteSmokePuff FemaleHeadRangedProjectile GameSpeed ScoringTypeMale MaleBody MaleHeadASMD MaxPlayersMaleThreeCarcassBruteProjectileReSpawnURLSetPosSkaarjCarcass MOTDLine2 MOTDLine1Msg ngSecretSet SetOrigin RelatedPRI_2 TeamInfoCreatureChunks UnrealHUD MOTDLine4P hitdamage actualDamageUnrealScoreBoardUnrealSpectator VRikersGame FlakCannonN RazorjackRifleBlood2 Lifetime projSpeed DrawIcon bCoopStartbSinglePlayerStart ServerNameIdentifyHealth AnimFramebMustSpawnChunks bMasterChunkGibTwo IdentifyNameGibOne OrString NewMessageSize bCanDuck bGreenBloodIconsfishFoundFocus2D strafemagOffset Palette49Icon Palette45 MomentumEnemy PRIArray NewWeapon HitNormalDest2D Palette37 Palette35Score AltTeamColor bIsSpectatorDamage MultiSkinsRatePRI Palette23EventInstigator Palette19 Palette47PrevMedFont Translator Palette39 Intelligence bMeshCurvyMale3MUWHit1lland01MGasp2MJump1SongGamebMeshEnviroMapMInjur1 Palette11 Acceleration VelocityMSecondsRegionUnrealGameInfoTarget NextDistArm1myHUD NumCarcasses AnimMinRate TeamNames BloodPuffStepGRIMinutesXOffset LoopCount PlayerCount NewVelocityLevelEnterTextIdealPlayerCount bTeamGamebAnimTransitionFemale FemaleBodySlithProjectileGib5Gib3 bPermanent bCorroding DeathZone ExistTime carcRotation finalRot NaliPart PointRegion SkaarjBody SkaarjHead SkaarjLeg SkaarjTailgibP1gibP3gibP4gibP5gibP6 CarcassAnim CarcLocation bSpawnChunksBloodGeneralGibs IconSkullTranslatorHUD3 TinyFontTinyWhiteFont TinyRedFont decisionMenuGfx MenuBarrierSkaarjProjectileTrailsTempY linjur2fem linjur1fem linjur3fem death1dfem lland1femMUWHit2 jump1femFemale1AliasMDrown1Hud1Hud2Hud3Hud4Hud5TeamsTentacleProjectileTentacleCarcassSetClip FadeTimeZOffsetNetModeUnrealCoopGameOptions HumanCarcassDefaultGameType GESBioRifle Crosshair1 Crosshair2 Crosshair3 Crosshair4 Crosshair5 Crosshair7 LargeRedFont WhiteFontCurrentMessage BloodBurstMOTDFadeOutTimeIdentifyFadeTimeIdentifyTarget AmbientSound ArmorOffset bDrawOne bGotNext bGotPrevTI HalfHUDX HalfHUDY AmmoIconSize ArmorAmountCurAbs BestArmor PickupColor ShortMessagePosXPosY BlueSkull GreenSkull RedSkull YellowSkull SkullTexture Dispersion PowerLevelI_ASMD I_Dispersion I_ShellAmmo I_RocketAmmoI_Armor I_kevlar bNewMessagebNotNewMessagebCurrentlyActivatedWeaponPowerUpMeshnumber1number2number3number4 SmokeRateGeneric BloodSGrnLSplashspstwalk3stwalk1stwalk2 hgasp3femnewAnim mdrown2fem hinjur4fem death2afem death3cfem death4cfem lgasp1femFUWHit1 Location bDuckLeft AirControl EndgameHud GroundSpeed PlayerName bDifficulty1 WeaponType bDifficulty2bIsBoss Palette43 bDifficulty3 Palette41Loc2D GasBagBelchCreatureCarcass Message6 Message5 Message4 Message2 Message1troopermasterchunkWarlordCarcassWarlordRocket bNetSpecialHasFlagbWaitingPlayer Palette33 Palette53 Message3TrooperCarcass Palette31walkC QuadShot MercRocketMaleTwoCarcass Palette51pos SongSection KrallCarcassNextlookDir Palette27 Palette25EliteKrallBolt Palette21QueenProjectile VoicePackBest KraalBoltMale1 metwalk1 metwalk2 metwalk3 Palette17 SKPGasp1 SKPDrown1SkaarjwmoveDir SKPInjur4 SKPDeath1 SKPDeath2 Palette13Land1SKblobsMInjur2 Palette3Minigun SKPInjur1 SKPInjur2MessageNumberBRifle I_FlakAmmo I_RazorAmmo I_SludgeAmmo bIsPlayerFatnessChallengeVoicePackMGasp1MInjur4 ScoreBoard LocalMessageGetNextIntDesc Palette7 GetNextInt UT_JumpbootsbIsPawnbBouncePickups bDifficulty0 numTauntsMDeath3bSinglePlayer InstigatorBase RotationRateTypePTEbSpecialFallDamageScoring HealthPackMedBox BestScore Candidate AnimRate SelectedItembOwnsCrosshairPickupAmmoCount AmmoTypeZone DrawColorCTFFlag nextPawnspeedSimAnim TeamColor WallNormalOwnerReset OtherPlayernewTranslator AnimLastbStasisPhysics FinalCount bClientAnim RelatedPRI_1OptionalObject PlayerNamesFriendlyFireScale TimeSeconds PointNameLightCyanColor UTBloodPool2 RifleShellPingsTournamentGameReplicationInfoScores PlayerCounts WarHeadAmmo TalkTexture AmmoNameScorchTournamentConsoleTMale2TeamSayMessagePlusServerInfoDOMServerInfoCTFServerInfoTeam ServerInfoAS ServerInfoSayMessagePlus bDropDetailTournamentScoreBoardIdentifyAssault LevelActioncarcCopyYOffsetLoopCountTeam PlayerOwner Palette5bSound TeamIndex CowBody1 NewPlayer BloodSplat CowBody2Gib4EnhancedRespawnlogo2 OldClipXk bAutoTaunt SkinPackageWoman WomanBelt bTacticalDirbNoTact energymarkOldOwnerLocation ShadowStartHolder FlagListResp2AInVoiceLastTauntTime LastTaunt NextTauntCPMyFonts OwnerGameControllingTeammyFlagPoolbHeld HudElements1 FacePanel FacePanel1 LadrStatic Static_A00LocalMessages bResChanged BaseColor HUDColorSolidHUDColorbDrawFaceAreaFaceAreaOffsetMinFaceAreaOffset bShowInfo FadeValueFlag TeamScore CPTexture AmmoPickforceWallHit WallActor bShowSpeechUMenuCustomizeClientWindowLocalizedKeyName FaceTexture FaceTeam FaceTimebCollideWorld LifeSpan DamageTypebCollideActorsFiretempADXCEZYWPitchTempX BytePropertyRollKeyName SectionNameji ScriptTexttSBRG ReturnValueControlOffsetStaticSaveConfigDynamicLoadObjectMutator LevelInfo GameInfoInterpolationPoint ZoneInfo Teleporter PlayerStartInventorySpotHUDCarcassNavigationPointPlayerReplicationInfoStatLogFrameBFrameTInfoGameReplicationInfoDecalMInjur3 SpawnNotifyMDeath4MusicNewGameTabUnselectedM ViewportHalfHudCanvasFontLevel SpeedTextMDeath1HudLine ExcludeHelp IncludeHelpMoverNavigationPointList PawnListActor bVeryLowGore IconHealth HudGreenAmmoIconSelectionMapTextMutatorBaseClass StartTextbFlashTranslatorStartMatchTabHUDConfigHelpHUDConfigTextCrosshairTextUTCreditsWindowFFHelpMaxSpectatorsHelpMaxPlayersHelpMaxPlayersTextUMenuRaisedButtonUMenuMutatorFrameCWUMenuMutatorExcludeMusicVolumeHelpUMenuMutatorCWMusicVolumeTextMapHelpDedicatedText ServerText bGotSelectedUMenuLabelControlCrosshairHelp SpeedHelp UTCreditsCWFFTextUMenuAudioClientWindowUMenuPageWindowMaxSpectatorsTextUMenuBotmatchClientWindowUMenuDialogClientWindowUMenuGameRulesBaseUMenuGameSettingsBaseUMenuHUDConfigCWUMenuStartMatchClientWindowUMenuServerSetupPageCustomizeHelpDedicatedHelpbNetUMenuMutatorIncludeUMenuMutatorListUMenuMutatorWindowUMenuPageControl EditWidthUWindowButtonUWindowDialogClientWindowUWindowFramedWindowUWindowRootWindowWinTop ParentWindow bSizablebIgnoreMDoubleClickSetSize CloseButton CenterWidth CenterPos CreateWindow SplitterDoubleClickList HelpText ControlWidth ControlLeft ControlRight Initialized UWindowBaseUWindowWindowUWindowDialogControlUWindowCheckboxUWindowClientWindowUWindowComboControlUWindowListControl ButtonWidth ButtonLeft UWindowList RealKeyName BoundKey1 BoundKey2 KeyNames KeyButtonsUWindowControlFrameUWindowEditControl AliasCountNoJoyDesiredHeight ButtonTop LabelWidth LabelLeftbTopUWindowHSplitterUWindowHSliderControlUWindowListBoxItemUWindowLabelControlUWindowListBoxUWindowLookAndFeelUWindowMessageBoxUWindowPageControlPage SpeedSliderUWindowPageWindowUWindowScrollingDialogClientMaxPlayersEditUWindowSmallButtonMaxSpectatorsEditUWindowSmallCloseButtonWindowConsole FFSliderFFSHUDConfigSliderCrosshairSlider CrosshairXbQuickKeyEnableMessageBoxResultWinLeft WinWidth WinHeightPageFonts OwnerWindow bMouseDown bRightGrowRightClientWindow bLanPlayLeftClientWindowbAcceptsFocus bStatusBar MinWinHeight MinWinWidthbIgnoreLDoubleClick ClientAreaDesiredHeight DesiredWidthbIgnoreRDoubleClick SliderWidth LookAndFeel SplitPosGetPlayerOwner bByParent GetLevelPages StartButtonSetAcceptsFocus MutatorListDedicatedButton ServerTabLanPlaySNExcludeInclude FrameExclude FrameIncludeDrawClippedTexture NextDefaultNumMutatorClassesDrawStretchedTextureSegment MapCombo ClipTextItems DrawUpBevelMutatorButton GetParentAlign EditBoxWidth MutatorName bDisabledLodMesh HitActor SendToBackbAllowConsole bTransient bCreatedRoot MaxValueBitmapUTServerSetupPageUTServerSetupSCUTCustomizeClientWindowUTStartGameCWUTTeamRCWindow ConfirmText ConfirmTitleGamePasswordEditAdminPasswordEditWebAdminUsernameEditWebAdminPasswordEditListenPortEdit ConfirmStartUTExtraKeyBindings BindingClassNumBindingClassesNextBindingClassPlayermappackCountOptionsoldskoolnewgameclientwindowoldskoolRootwindowOldSkoolLoadGameWindowOldSkoolSlotClientWindowOldSkoolmapsClientWindowoldskoolWeaponPriorityListBox loadmenu FireTexture coopgameinfo musicclass Backround bQuickModenulltrackcdused packclassbnewmagquicksavetypeSelectedPackTypeSelectedPackclassMaleOneCarcassSoundlandVol loadreleventbLoadedbhud bscoreboard swaptime bswaptrack olweaponsbUnlitMale2 OLminigun osshieldbelt OSShockRifle OSPulseGun quadmode redeemmode maxpowerups bpowerups shieldmodebPowerbFlakbRazorbEballbASMD bBioRiflebStingybPistolbmedbMagODpock ODBlastMarkODEnergyImpact ODbiomarkshieldbeltpowerospowershield SKPJump1 poweruptime bdefautobinvis bmegahealth akimbomag SKPInjur3osut_shieldbeltosflakshellammo SKPDeath3 idletimemastermutatordoswapnewarmorrulesoldfog pulseicon impactVelbjumpbpadbarmor bbandaid arenamodebRetVal bNotForward bIsWalking BaseMutatorDamageMutatorYellowRed OLstingerOLGESBioRifleDispersionPistolWhite ShockRifle UT_EightballUT_FlakCannon SniperRifleripper ut_biorifleHeading PulseGunOLASMDOlrifle OLquadshot OLFlakCannon OLrazorjack OLeightballError OLDpistol Palette29 SkinItemConsole Palette59Frame bNeutralZone Palette9 LocalLog bFogZone RemoteRole bWaterZone KillCount DieCount WorldLog NextMutatorReducedDamageTypeWidthDropWhenKilledRoleCurYCurXClipXOrgYOrgX Palette57Skill Palette55H ExtraSpaceShortMessages NextDescbSuperRelevant bAltFirebFirecarriedDecorationValue bAnimLoopFrameYMsgTypeShadow TweenRateWallbAnimFinishedUsedInWeaponSlotMaxAmmo AmmoAmountAmountbCanHaveMultipleCopies NumCopies ChecksumFireDir Palette1 Misc2Sound Misc1Sound SelectSound AltFireSound FireSoundFemale2RowDesiredRotationTagMapStatictbackupEvent SkinTeamTfixcombine TalktestskinSkaarjt hugeguys TentaclesAnimalsBrutesGasbagsMercsSlithsTitansMantas killtotalClass WhatDiedpoints intlevel oldowneristeamisasislms GreenSplat1 GreenSplat2 GreenSplat3 GreenSplat4 GreenSplat5 GreenSplat6 GreenSplat7 GreenSplat8 GreenSplat9 GreenSplat10lastanimframetimingPackagespectateallowed bloadingsaveOddsOfAppearing scoreholderuselessbaddiespectate PropSetupbshieldStyle oBioRifleoASMDoStingyoRazoroFlakominioEballoRifleodamageopadoarmoromagoshield ViewRotation NewVersionSwitch TextBufferObjectcontshackEnumthingy Function realcarcassCurrent RealSkull bRapidFire bPointingTeam TextSize facemsgsetnohudPockCurrentPickupCriticalMessageoldcolStatestrPlayerNameCdTrackShade lMessage foundiconPlaneRotatorVectorI_RealRedSkullI_RealBlueSkullbTraceIdentifyppOwner bDrawRediScoreI_RealRedFlagGoneI_RealRedFlagInBaseI_RealBlueFlagGoneI_RealBlueFlagInBaseStructtexFlagfWidthfHeight colorOldNametexBaseUTTeleportEffect showtalktex fragiconspitem0item1item2item3item4item5item6item7item8item9item10item13item14item15item16item17item18item21item22item23 ShieldCombo redeemcombo arenacomboquadshotcombo musicselectCDcheck tracklabelbreset requestNoCD nocdtimer musicdescfoundmusicclass StrPropertyStructProperty digimusicClassPropertyitem19SpTauntAircon PermaCarc PermaDec PawnOwner akimbocheck pistolcheck quickmap decalcheckskprop fragiconoldhud oldboard ptimesliderpamountsliderhunterconfirmmutatebgrsMaxbgrNextbgrTempbgr temptitlesbFoundSavedbgr NameProperty CurrentbgrObjectPropertyFloatProperty mainparent pagebase adminlabel baddiecheck BoolPropertyTestTExcoopTab BluePlay MetalPlay Goldplaydrawtex UnrealShotSender bCheckedBot InPasswordPickupMessageClass TeamName RespawnSoundActivateSound PickupSoundAbsorptionPriority bIsAnArmorArmorAbsorptionCharge MOTDLine3 bActivatable bHeldItembActiveInvRemainingTimeFocus FootRegion DestinationbClassicDeathMessagesStartY instigatedByCriticalStringM1StartXM2StringMessage Position StringFont HUDMutator EndOfLife RelatedPRIbAdvancedTactics RotationHudModeMessagingSpectatorNewSkin SkinActorAshShot FaceNamebHomeBugsDayShotTeamNumSkinnewVelbReducedHeightflies content3illShot content2 contents myMarker markedItemnextNavigationPoint FontInfo OwnerHUDRegFontholShotHitVecClipYdotp HitVec2D invadeShot bFadeMessagebCenterYPosEClipVictim bIsUnique perilShot bIsSpecialNextDamageMutatorbResult aClassNameDecapitationMessagebOut shinShot Incomingweap EndTraceViewerinjured shrakShotaPlayerXLYL incomingNameTelDestInNameTextInTeamDeathMessagePlusCTFReplicationInfo CTFMessage2 skaarjpropPortalopcw EnergyImpact IntPropertyHud6NoneWINDOWSVIEWPORT MACVIEWPORTM h M KBu6R蚫}=$:e=$:etxxt2ttttttttU*YUttt2t{#UnWM)2t{#UnWM)222tt=$:e> Y,ъXD,ы> Y> Y,ъ,ъ,ъ t t t> Y> Y222=$:eԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXГГҗOГГԝXԝXԝXԝXГԝXГГГԝX}k}k}kԝXy ԝX8 8 ԝXanԝXt@ԝXԝXgXgXgXgXgXgXgXԝXԝXԝXԝXԝXԝXԝXԝXԝXc 3NԝXԝXԝXԝXԝXGGGԝX##ԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXГԝXAԝX"/ԝX"/"/"/"/"/"/"/"/"/"/"/"/"/"/"/"/"/"/"/"/"/ԝXt~t~t~t~t~t~t~t~t~t~t~t~t~t~t~t~t~t~t~t~t~t~t~t~t~t~t~t~t~t~t~t~t~t~t~ԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXѸBѸBѸBԝXԝX_ԝX5b5b5bԝX"W"W"WԝXeeeԝXxxԝXԝX52X52X52XԝXYtslYtslYtslԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXԝX52X52XԝXԝXԝX52X52XԝXԝXԝXy ԝX}kԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXԝX f d e _  i] Monster viewing cheat enabled.i! Monster viewing cheat disabled.M M qM M ~ @M M lM M M C\p2#DɂXu6ttt> Ytttttttttttttttttttttttttt"/ J]'&You weren't supposed to pick this up!B] Scorekeeper]M M EM M M M hM M VM M M M M M [M M RM M M [r}6{ –دT_0ГГГxxxxГxxГxГГx> YR@GxI&/> YxxxxxxxI&/xxxxxxxxxI&/u0xxxxxxxxxxxx{#U{#U{#U{#Uu0u0xxxxtxxxtxxtxxxttxxxxxxxxxttX'xxxxtX'ѸBxtX'ѸBxtX'ѸBxxtX'ѸBxxxtX'ѸBxtX'ѸBtX'xxtX'ѸBxxxtX'ѸBtX'ѸBxxxxtГГГГГxГГГГxГxxxxxxxxxtttГГГtxxxГxГxГxѸBxxxѸBѸBѸBѸBxxxxѸBxxxxxxxxѸBxxxxГu0xxxxxu0xxxxxxxxxxxxxxu0u0Гxx^^xxГГxxxxxxx^^xxxxГxx^^xxxEl{#U{#UElElElElElElElElElElElElElElxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx{#U{#Uxxxxxxx> Y'n 6xxxxxx'n 6xxxxx'n 6xxxxxxxxxxxxx'n 6xx'n 6xx'n 6xx'n 6xxxxxxxxxxxxtxt{#Uxt{#Uxt{#Uxt{#Uxxt{#UxxxxxZ!Z!xxxxZ!Z!xxx> Y> YԝX> Y> Y–,,‹> Y> Y> Y> Y> YX'xx> Y> Y> Y> Y> Y> YOX> YOX> YR@GtxtX'xxxxxtX'xxxx> Y> Y> Y> Y> Y> Y> Y> YOX> YOXElxElflUxflUxxxElxxxxxxElflUxflUxxxElxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx–؅xxxxx> Y> Yxxxxxxxxxxxxxr|Vxr|Vxr|Vxr|Vxr|Vxr|V> YR@G/T2xxxx=$:e> Y> Y'n 65b5b"W"Weexx52X52XYtslYtsl> YflU "|*o *p *@ *Q *z *{ *m *n *o *j *222H "G F E fp]oldskool.oldskoolhudconfigM M fM M e M M M M WM LLX6a2Ӫ=$:e=$:e=$:e蚫}蚫}蚫}蚫}蚫}蚫}蚫}蚫}蚫}蚫}蚫}蚫}蚫}蚫}蚫}蚫}蚫}蚫}蚫}蚫}蚫}蚫}蚫}蚫}蚫}蚫}蚫}> Y> YR@G> Y> Y> YR@G> Y> Y蚫}> Yt> Y=$:e=$:e=$:e> Y蚫}vmvmvmvmvm蚫}蚫}蚫}蚫}蚫}蚫}蚫}蚫}蚫}蚫}蚫}蚫}蚫}蚫}蚫}蚫}蚫}蚫}蚫}蚫}蚫}蚫}蚫}蚫}蚫}蚫}蚫}蚫}蚫}> Y> YtГГГГ=$:e蚫}tГ=$:eГ蚫}t{#U> Y> Y> Y> Y> Y{#U> Y{#U> Y{#U> Y> Y{#U> Y{#U> Y> Y> Y> Y5I> Y> Y> Y> Y> YttDɂDɂttX'tttГГԝXԝXԝXԝXtГttX'=$:etX'ttX'tX'X'X'tX'X'tttГГГГttttt{#UnWM)t{#UnWM)tt> YDɂԝXԝXԝXԝXu Y> Y> Y> Y> Y> Y{#U> Y{#U> Y{#U> Y> Y{#U> Y{#U> Y> Y> Y5I> YԝXԝXԝXԝXu Y> Y蚫}> YtԝXԝXԝXԝXԝXtt{#UԝXtԝX c{SxSJg feP s]! UMenu.UMenuCoopGameRulesSClientq]! UMenu.UMenuCoopGameRulesSClient~]UTMenu.UTMultiplayerMenukkR]Coopa] Coop Game{M M BM M ^M M *M M EM M T M M M M m@M M QM M M M mM M ^M M dM M HM M tM M QM M M M |M M CM M f M M ` M M aM M tM M M M X M M pM M ~M M  M M jM M EM M 4M M DM M KM M JM M gM M MM M CM M aM M lM M 1M M VM M S@M M mM M @M M @ M M cM M T M M dM M qM M pM M rM M M M 'M M iM M XM M SM M ZM M I M M KM M AM M dM M JM M U M M yM M A M M p M M M M A@M dM G@M M D M M M zQ v kaxW%]Male1Skiny.Gibb1T_0%Male2Skiny.Ivan1T_1%SkTrooperSkiny.offi1T_0%SkTrooperSkiny.snip1T_1%Female1Skiny.Gibb1T_0%Female1Skiny.Drac1T_1%Female1Skiny.Raqu1T_1%Female1Skiny.Niki1T_1%Female2Skiny.Demi1T_1% Male1Skiny.Cart1T_3% Male2Skiny.Kris1T_2% Male3Skiny.Dreg1T_2% Male3Skiny.Krig1T_1% Female2Skiny.Katr1T_2M M W@M M D@M M nM yFu o7XԌԌM M rM M F@M M _ M M _@M M IM M g M M @M M M M \M M iM M [M M l@M M M M M M M M M M h@M M @@M M A@M M kM M @@M M fM M M M {@M M VM M M M ~M M IM M EM M 9M oM M M M M LM M M M GM M p@M M qM M vM M M M nM M tM M |M M ]M M MM M SM M B@M M cM M N M M LM s@] BCawA'/!Q23%1O11蚫}1dVъdVъ'/!'/!'/!'/!;'/!;'/!;;;;tt1ԝXԝXԝXԝXԝXZ!ԝXZ!ԝXԝXԝXԝX"/'/!'/!'/!ԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXԝX1 } M M DM M WM M zM M M M qM M VM M iM M sM M MM M HM M cM M KM M rM M mM M ^@M \gn Kqvp$˻XDXDXD tXD tXD& .'lXDo /T2> Y?{> TyXDXDXD tXD tXD.'lXDo /T2> Y$o > Y> Y> Y> YsxsxԌԌI(I(ВВ7X7X7X7XI(+XI(sx7XÊsx7XÊsx7XÊ+X,M M _M M XM M uM M B M M aM M cM M PM M ]@M M pM M OM M _M M @M M h@M aS ?iiBM M @M M eM M AM M eM M xM M M M gM M HM M v M M g!B I;;@@\ $h $6!C?,;@@6!$6!$ $6!C<$Ȭ;@@6!$6!$  $h ]$6!$6!C<$;@@6!C?,;@@ $6!$6!C<$^;@@6!C<$;@@  $h 3$6!$6!C?,;@@6!$ $6!$6!C<$;@@6!$  $h $6!C?,;@@6!C?,;@@6!$ $6!C?,;@@6!C?,;@@6!C<$;@@  Z!h; M R M M s M M oM M G M M sM M @M M DM M LM M M M m@M M bM M TM M M M XM M M jsV Y *,111 M M \M M UM M eM M [M M ]M M ^M M |M M M M ZM M M M M M fM M gM M iM M WM M oM M J M M ^M M NM M PM M M M uM M B@M M d @M M J@M M jM M @M M vM M yM M DM M FM M |M M OM M ~ M M ZM rNF 6@}n–؆t{#Uxxxt{#Uxxxt{#Ut{#Uxxxxt{#Uxt{#Uxt{#Uxtxxx> Y'n 6t{#Ut{#Ut{#Uxxxxt{#UxtxtxxxxxxxxxԝXtt{#UxxxxxxxxxxxxZ!Z!xxxxZ!Z!xxxxZ!Z!xԝX> Y> Ytttt> Y'n 6t{#U> Y{#Utt{#U> Y;(xxxxxxxxxxxx "fM M _M M M M Y @M M iM M lM M @M M BM M X@M M PM M MM M JM M M M NM M hM M M M zM M DM M kM M I M M M M | M M RM M M M lM M _M M UM M z@M M M M m M M M@M M |M M D@M M b @M M @M M M M Z M M {M M M M @hD M nM M RM M YM M M M SM M @M {tPZ  7kin{吒]H]H]H]H]H]H]H]H]H]H]H]H]H]H]H]H]H "|Co qZhuApGvW]BotPack.VoiceMale/J S Q x M M YM M M M ?@M M _ M M HM qM M M Y @M dM mM M gM M VM M uM M ]M M M M @M M M M VM M M M |M M  M M J@M M jM M ]M M C M QYNX B 7CoQ !&]H]H]H]H]H]H]H]H]H]H]H]H]H]H]H]H]H /|Co q---ApGvJ W]BotPack.VoiceMaleS Q x M M HM M M M lM M m M HAA H {mԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXԝX WM M N M M } M M @M M q@M M dM M w M M k M M UM M GM M v@M M M M e@M M \M M M M M M M M M M NM M gM M ]M M @M M M M MM M j M M M VtE b;m~ԌԌI(I(ВВI(I(I(I(I(I(I(M M J M mcY dVdN111 M M s@M M =M M ] M M ;M M QM M dM M @M M O M M D M M M M @M M M M X M M uM M M M rM M mM M [ M M KM M M M GM M XM M OM M PM M UM M iM M [ M M F @M M H@M dM tM M M M M M bM M {M M @M M M M M M aM M w M M DM M pM M M M Y@M dM [M M M M LM M O@M M M M VM M b M {cY  6WS{ "|C oqZhuAp Gvp V W]BotPack.VoicefeMale/JKS QxM blv 7XOxxԝXԝXԝXkat{#Ut{#Ut{#Ut{#Ut{#Ut{#Ut{#U "(]male2skiny.ashy5)]male1skiny.cart1OSM M @M dM yM M M M M M x@M M C M M o@M M M M nM M ^ M M M M M M M M [M M M M `M M M M M M T M QZW B 7l8Q !& /|C oq---Ap GvJp V W]BotPack.VoicefeMaleKS QxM M M M WM M UM M M M k M M I M M {M M B@M M M M wM M M M O M `PzB 7yL]ԝXԝXԝXkat{#Ut{#Ut{#Ut{#Ut{#Ut{#Ut{#U (]male2skiny.ashy5)]male1skiny.cart1OSM M [@M XmvU  74{XOX'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'1X'X']H]H]H]H]H]H]H]HX'X'X'X'X'X'X'X'X'X'X'X'X' "]Rdm$Al$AM M M M M M e@M M ` @M M M M WM M wM M vM M DM M jM M |@M M M M @M dM M M kM M uM M O M M M M Z @F V -mN h"N P  S%E-mN ZPN  |&n-mN [yN  ,N  ,N  : , -mI F W _ N I F W _ N' M O M M RM y_wS B 72Q !&yX'X'X'X'X'X'X'X'X'X'X'X'tX'X'X'X'X'X'1X'X']H]H]H]H]H]H]H]HX'X'X'X'X'X'X'X'X'X'X'X'X' ]RdL]$A}$BG$BM M ]@M M U M M M M _M M M M E@M M \M M jM M 6M M O@M M M M V @M Y`R ^6hY #\ #_#o #r #t #q#z #|#h# Tx\ M M kM M UM M ^M M M M D M M W M M WM M M M M M M M M M wM M TM M "M M D M M }M M E M M fM M HM M nM M iM M V M M pM M M M YM M M M wM M M M M M M M } M M e M M E M M M M lM M M M tM M E@M M Z@M M M M M M xM M M M n M M M M T M M Y M M ZM M M M d M M M M EM M RM M UM M eM M H M M XM M YM M zM M TM M \ nf/k w.*6r.* i-Ha/!Kq s .-E m-C-Z(-D- ,-ZwT*q~.-w.* .-KD??,D??,r.*w.*.a..{w.*. hI.b w *::$   n$6=,6=,6=,  -KD??,D??, aTESTvCqC?,?,B#-Zkq?,6{q9k6j. ZBB.-r.*w.*.a..@w.*. h  %& ,  w6 *6 - -$x6 xG-~6 ?%e6 [6 &6 tj6 tk6 3a6 6 6 6 6 4F6 6 6 b(6 x6 =?6 6 a6 ( j -~6 ?%6 [6 &6 tj6 tk6 3a6 6 6 6 6 4F6 6 6 $6 =?6 6 a6 ( I$6=,6=,6=, -C ,wD?,`%(  ?@, ,O%%( F , ,O%D?, (  ,OD?,@D?,@' ,ND?,0?,@D?,  ND?,0D?, / ,P%D?,   , ,PD?,D?,   ,PD?,@D?,  ,wD?,`%( 1 ,wD?,`D?,@( t ,wD?,@D?,@'  ,wD?,?,@D?, (sa/!K-E,VD?, D?,@sG,V%D?,@ss,V%D?, OB|Ending Sequencev..wv*v,2.*wv*v,3Qi%iaA'k-([ DH D(i,v C A?,@ aCB${i&a (i,a (i,a (i,a (#i,a (Mi,a (i,k..qi,?[ ?H  v CkI4w* nw.*w.*.-lb M ]M M ^M M _M M `M M aM M V M M L@zM dM M ^ M M IM M M M M r" " " " *vbM* "* M @6"楥66##66朰񳳈_#-#8%88-"ώ"{@ L88{%ѵ##-LݐB_8$Q%񖖳BĤB!{LQ瓓$ #y蘘ѳ_ݳ!斫8Q]HRR RHHQòy--8BQӞqDz6ora --{6ϵKpLě`Q_ᱵ888!X`6@a^ݰ!4ڐ $B"'L_ |%  }}y^۰ %3 yJ=!4݊[%{{#X6!ט-8\QHZ]힒8@'?@5ʤ6瓳'Z?(Z@X# ً`y`QıY@Y(~:YW8c@a#b"Y:Z(椏BƥaȰң`fXXX)᳝a.yƏ#dޛǛLYYY6.H#d8gt[@LZ"/F-Hcgggfsd.sa#gsIJ)?'jtdsAҎ#gsuI >[W$0hhggA{Qd,I.YLX?[V01ԝ{{fc˶Shh\[ZYZ>i0z##cdS0u*(?[[)>YX?fkjDvzQHl..ggiihXXT2wEvwC..xO"ѣT2kxEEjg-.guvtPPj/ѣ+mvj1kwD"-QQQFfF9f&fQfQ M N M M OM M M M M M M M ZM M [ @M M M M CM M `M M M M RM M i M M xM M EM M M M M M t M M b M M K @M M s M M M M @M M A M M K M M M M M M FM M dM M L M M M M vM M p@M M M M M M nM M M M FM M AM M A@vM M M g M M T M M yM M vM M cM M ] M M Q@M }SUv6,Y ۩H}nԝXxxxxxxx> Yxxxx> Y'n 6> Y'n 6> Y'n 6xxxxxxxxxxxxxxxxxxx "f M M q M M oM Ec """"*q~v* "D( M H@󖖖򖖖򖖖ɤطɖ幛ŻȩɖİĶŮǷ򖖖זν۬룖򖖖󖖖ܨמȮĥ󖖖Ź󝢢佶ٿ򯖖򠘖Ƭ߷ŹȹӲȲǚŽǪ۩ϱ󨶯ɞűѼ򖖖­Ͻ̳򖖖󖖖Ԗ٢ɶŹζ򡶩󖖨а򖖖ͪ󖖖Øʫ꽻̮굤ϳն󞜫ޤ󝶫ջᚖϹ󝝞훪߮شڶɯʹڽد¯ֵĨ齜򖖞›ƷֽǯΠϨǶǩ󖖖󖖖ήῲű߸г̹ᅳǽл󘞿󖗶η¶ְ¯Ѳݷڻ۵Ƿ򖗜ǻݳɹĭȳŶɵȳԷѩ󖖖δۿ󖖖жƬ򣝖򨣖ȶɵ޵󣖖ܿ򥪪ĨѼ򢖖ĩѹެ󖖘ɲ󞖖󢥝ȶȰ󘝠Ľ򗖘󖖖󘗘±Ĭ򖖖򖖖󘣥ӿ򖖘󘖖󖖖󖖖ȶǫ򖖖ճ؛Ƚŷ򖖖շй󖖖ͳڹ󖖖ݻλ̷󖖖Į¿򖖖׹򖖖󖖖½ѵ˚򖖖ƛ벖ɟ򖖖Κ򖖖󖖖򖖖Ŷ󖖖󖖖δģµڽɵ󖖖ǹķ򢛠ǽ̻Ϸƹӹнij򘖖ȷخඩŻͻɲ򖖖¹򖖖󖖖Ͻ򖖖ճǽŷɷǻϽ򢚱Ȝ򖖖›󖖖ٿ󖖖򖖖򖖖Y@@򖖝򝶳Ңֵ򖖖áв󖖖Ĝҫ㶯Ü㵧ߤ򖢸ϱ㵞ߢ򖖖ÚǜǮĶçûě򥥞򖖖߷Ң㹚񴖖빿쮸ǚśҚ㱥򖖖㥫ծҫߞӶ㯞Ģ¥ɢ˜󝽨ņ̀򜛘ӯɜ򖖖ŨԱ­ߴ󖖖󖖘򘢨򖖖򡡢㱤򖖖Ļ̿ڻ򖖖ǰ򘝘߹ȷ㫶İ󘘖Öűî򖖖򖖖򖖖ʰ򖖖㳢б£ǹ󖤧򞤨̹з򖖖ıϻ򖖖ǜ󖖖@@]@򖖖򖖖򖖖򖖖ê򖘨ئ߶ߨ㱤öҠè㛪򛶢㡖쬞㣞㧢ʤȸ򢫮ø򖖞Ү򘘖ҷȫ򖖖Þ߻򖖖зı¨󖖖򖖖 .^@㸳ߪ񫖖ҞŜýÛ~^@Û㘖򝖖^^^n]Z B,] 2;awAŒOO'/!'/!'/!;'/!;'/!;;<<ԝXԝXԝXԝX t}|OO t}|OO M M M bM a M wS`  ` (Q23%ԝXԝX'n 6ԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXԝX111ԝXԝXԝXԝXԝXԝXԝXԝX V"x k$?M M fM M M xGa @c 3U[ڒttttt M M iM M M M g M M M M ZM M q M M M M M M k M M l M M m M M n M M M M UM M h M M j M M o M M t M M u M M M M v M M x M M y M M z M M @ @jM QM M a@M M _ M M A M M |M SBl 6IB /D–,,‹> Y> Y> Y> Y> Y> Y> Y> YOX> YOX> YElxElflUxflUxxxElxxxxxxElflUxflUxxxElxxxxxxxxxxxxx=$:exxxxxxxxxxxx "M M @M M @M M o @M M @M M U M WyK67H l–؆txxxxxxxxDɂxDɂxDɂxDɂxDɂxDɂxDɂxDɂxDɂxxDɂx> Y> YR@G/T2> YR@G/T2XDXDXD> YR@G/T2o  t> YR@G/T2o  "M M M M M M S M M M M @M M wM M L @M FA  2%P  )9;> Yx> Y'n 6> Y'n 6{#U{#U{#U{#U{#U{#U{#U{#Uxxxxxxxxxxxxxxxx;(xxx M M y M M }M Gs~ S 8mԝXԝXԝXԝXԝX WM M @M M v M M @ @M M M M [ M M {M }sHr 63Z P}n> Y'n 6> Y'n 6{#U> Y'n 6> Y> Yrj\t{#Uj\j\xxxxx> Y;(xxxxxj\j\txx{#Uxxx{#Ux{#Uxxxt{#U> Yj\> Y "f M M :M M M M Y M M fM M M M M ^oo Ja Pa$˨|[$|[$nR|[$|[$|[$k9S$˵tttt$˵ttttt$˵t$ˈ|.XqvXD t_4_4_4_4|.Xڈ|.Xڨ|[$|[$|[$tttttt|[$|[$|[$qv_4_4_@_4_@_4_4XD t_4XD tXD t_4XD_4qvXDqvXD tt't'tttttt't'tttttt$˵t$ˈ|.Xڈ|.Xڈ|.Xڊ$˨|[$$˨|[$|[$nR|[$nR|[$|[$|[$k9S|[$k9S|[$|[$$,M M jM M M M JM M bM XkR Bf k#ܬ;;;tt h hh h h hh xa*]$B}$(BF$CM M M M M M ~M M f @M M i M M M M M M IM M ]M M r M M M M DM M zM M hM M M M M M  M M M M M M w M M z M M M M SM M M M M M A M M ^M M }M M M M B M M QM M M Rpk G ! }k111 V"x k$L>M M E M M M M IM M B@M M M M M M J M M S M M uM td^ Q c蚫} M M M M X M M MM M M M HM M M M M M HM M { @M M a@M M M M FM M iM M NM M d M M M M M M M M j@M M @M M M M M M l M M h M M QM M M M xM M j M M M M n M M E M M p @M M q M M M M JM M s M M GM M IM M M M M M TM M UM M { M M @M M M M ~ M M dM M ~ M M xM M sM M `M M } M M M M F M M KM M M M gM M KM M M M xM M PM M N M M CM M M @@@M M @M M R M M K M M M M M M _ M M qM M V @M M f M M M M [ M M M M `M M ] M M RM M ` M M { M M xM M c M M M M e M M 7M M @ M M RM M M M M M M M UM M M M n M M M M gM M o M M M M uM M E M M M M u M M ^ M M k M M IM M M c M z M M M M tM M OM M M M @ #h&@ ..#Y #V #%v,åO%,%}V%%, w.*g.g-g-V gVgVgVgV gV:gZ V%9VG<?,?&fD#?,#?,afD#?,#: } #?f:q{ #?f:q#:t#?f:q:q%,%??,?&fD#?,#?,fD#?,&%s#?,?,,?, s#?,?,##?fs#ak i #a(#?f,`s##aSD@ (@6#=,6#=,6#=, M +M M \M M CM M fM M W M M oM M {M M cYi Y?i?[YY?Y?,Y?,Y `%a/!mw *`D `,dY?,`, Y?,`%Y?,L-^ 6Y$6Y$Y aS`(-^ 6Y=,6Y=, M K M M L M M jM M S`cg, ( M MM M SM M UvG0^e=,I.UwI*UwI*eI:e M M M lM M M M Q M M M M M M M M pM M eM M wCVw8C?D?Eh-mC h?W CCbC ?C?,C?,r * C  ?,dC?,5 ?, C?,f ?%C?, ?C?,CaSD (-mCW  M H M M lUC 61r -C'ta n|Ending Sequence!m a/!Kqaa,  $,   $,  $,  $,  $,  $,   $%  $,  $,  $%  $,  $,  $,  $ M [M M RM M ^ M M a M M C M M mM M @u~xvycnal^|i_}jn~touovmtj}qk~rlsc~mdna|k_k[}h\~iY{fZ|gZhX}fW|eW~fU|dS|cUeR{bT~dR~cP|aO{`My^M}_PcK{]ObJz\K_I~]EzYG~\F}[BwVD{YCzXD[A{W@zVB~Y>xTBZ>zU@~X>|VW9wQ<}U:{S9zR8yQ;U7xP7|Q5zO7~R4yN3xM6R2wL3|O4~P6T0wK1{M0zL1O/{LOQS U!V!Y"Z"]$^$`%{}z|irg~pe~oa}lM{_I|]H{\FyZx{r~wsx|~M @M M u M M E@M M M M rM M sM M H M M i M M j @M M q M M @M E|""""*gyn* ">S M @cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccۛ|cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccmccccdccfcccclccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc~ccխccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccso~cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc׈ccuyԭkcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccldplccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdccccccdccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccfprgccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccm}mccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccpcccccc|clfccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccclcccccccccccccccccccccccccccccccccccccccscccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccch~cccccccccccccccccccccccccccccccccccccccccccccccccsccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc֜ccccccccccccccccccccccccccccccccccccccccccccccccޘԈcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccmcccccccccccccccԒ՜cccccccccccccccccccccccpccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc֠cccccccccccccccۂ{ccccccccccccccedcdcccpk|тcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccco{cccccccccccccccccԳcccccccccoާmkccceccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccf}jcccccccccccccccrҮccdcccccppcccccccccceccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccecccccccccccccccc՚occccoplccccccccccccոcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccyccccccccccccx֛פccccmpcccccccccccccccpcccccccccccccccccccccccccccccccccccccccccccccccccccccccccctceccccccccccԢgcccccccdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccclgcccccccccccdceccccccccccfӇccccccccccccccccc׭cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccmcccmgkf|mccccccccccccccccccccccccccccccccccccccccccccccccccpmcccccccccccccccccccccccccccccccccccccccccccccccccccccccccpoccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccfccccccccccccccpcccccccccccccccececdcccccccccccccceccccccccccccccccلccccccccccccccccccccccccccccccccccccccccccccccmecccccccccccc}֗ccccccccccccccclcdccccccccccccdlcccncccccccccccccccccccccccqccccccccccccccccccccccccccccccccccccccccfcccccccccc؜Ԓccccdcccccpcccppoccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccceccccc}ccccccpccecccfcc|ۂccccccccccgoccciւcccccccccccccccccccccccccqcckccccccccccccccccccccccccccccccccccccccccccfllfcclckcccccccleԇgdccxddfpcӡcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccmylcdcccecpcc||cٸcccccccccccccccccccccccccccccccկccccccccccccccccccccccccccccccccccccccc֘rfpӛevco~poccccԵycccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc֩tckݭՂcfccccގoccccccccccccէdcccccccccccccccccccccccccccccccccccccccccccccccccccccccԩrcӉkcnccf~cccccccccccc݃ccccccccccccccccccccccccccccccccccccccccccccccccccccccة{oҒcԂcfmckdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|cԢԭόdccccccccccct{ccccccccccccccccccccccccccccccccccccccccccccccccccccclcmccoӒՋccccccccccccccccccccvcccccccccccccccccccccccccccccccccccccccccccccoccc~odccdcc{ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc}dccccdc~mcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccւccccccc~ӉԒh۹oոӅccccccccccccccqvcccccccccccccccccccccccccccccccccccccccccccc֜ccccccc}ؠpkcwކ։oכd؈cccccccccccccoccccccccccccccccccccccccccccccccccccccccccccccccccccc؛ecek~ԆҚkp֛ccccccccccccecccccccccccccccccccccccccccccccccccccccccccccccccccևgp~Ԙdd֧fۄcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccmdq֠oԠlfؾccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccӢvcgccԧfcscccccccٯcccccccccccccccccccccccccccccccccccccccccccccccccccco}qսkpccccccc٭qccccccccccccccccccccccccccccccccccccccccccccccccceccccvԸmcccccccccccccccccccccccccccccccccccccccccccccccccccccovҰvcccccmէcccccccccccccccccccccccccccccccccccccccccccccccӜkcccccݯؔdyccccccccccccccccccccccccccccccccccccccccccccԭcfҹfccccctccݧcccccccccccccccccccccccccccccccccccccccccccfپcccc֐|ccccgc{ccccccccccccccccccccccccccccccccccccccccf٬t}cccccccccccccccccccccccccccccccccccccccccccccccccc֛himdcccccccccccucccccccccccccccccccccccccccccccccccccccccccccrhfcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdhԻiedccccccccccccqӉcccccccccccccccccccccccccccccccccccccӢkccccccccccc݄dcccccccccccccqccgӹcۯccccccccccccccccccccccccccccccccccccccccccc|tcccccccccccccgccycոcccccccccccccccccccccccccccccccccccccccccccccצhccccccccccccmccccctuۯcccccccccccccccccccccccccccccccccccccccccccցxhccccccccccccckccccccccccccccccccccccccccccccccccccccccccccccccfցݪՆlcccccckccncccccccccccccccccccccccccccccccccccccccccccccccccccdԯޣِhfccckԒcccccccccccccccccccccccccccccccccccccccccccccccgׯԁc}۩ФccccՕcccccccccccccccccccccccccccccccccccccccccccccccccccc~mheiתccٶcccc׵cccccccccccccccccccccccccccccccccccccccccccccccccccccccַzhecֆۂ~cccfcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccce~cؘcccqucccccu|ccdccccccccccccccccccccccccccccccccccccccccccccccccccccccccccrliٶddcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccxicckccrsduccccc{|qcccccccccccccccccccccccccccccccccccccccccccccccccccccccݪcicdiffccccc|ghcԸcccccccccccccccccccccccccccccccccccccccccccccccccccccccccx،~hccpcccդqhlcccccccccspccccccccdcccccccccccccccccccccccccccccccccccccidcccccccccliccccccckqccccccccccrcccccccccccccccccccccccccccccccccclccccccccccccccܨcchcccccccۧcccccccccchccf}tcccccccccccccccccccccccccccccccccccccccccccccccccccc~ضxiccccccccccccccctgcccccccccccccccccccccccccccccccccccc~cccccتccccccctcccccgցdcccccccccccccccccctccccccccccccccccccccccccccccccccccccccccc֜cccccccccccccccӘhcccuۈccccccccccccccdcccccccccccccccccccccccccccciccccccccccccccccccyccccccccccccccccԯccpcccccccccccccccccccccccccccccccccccccccccccԻicccccccccccccccccccccccccccccccccciݝldۂcmcmhccfccqccccccccccccctcccccccccccccccccccccccccccccccccccccccccccccc٪ccccccccccccccccccccf{cccmp|etccuccccccccccccccccccccccccccccccccccccccccccdcccccccccccccccucgccccccycccccccccutcccccccccccccccccdcccccccccccccccccccccccccdؔi}cccccccccccccyccgccccccccicccccfcccccc~f|rccccccccccccccccccydceccccccccccccccccccccccccccccccccccccccccrcccccccccccclԵc֥kcccccccՓ؂dccccccccccccccccccucccccccccccccccccccccccccccccccccccccccccccccccccccccccccczcccccccccՓظcccccccdpccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc֓ccqcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccԊ޿cccccc׹qcc݈cccccnccccccccccccccccccccccccccccccccccccccccccctcccccccccccccccccccccuccccccpר~tcccccccccccccccccccccccccccccccccccccccccccccccָcccccccccccccccccc|ҷբcccccccccdmcccgecccccccccccjccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc}ݪթtc~cccӊccccccccccccc}cccccccccccccu~cmcccccccccccccccccccccccccccccccccccccccccݒcccccccccccccccccccccccccuckcԆՈccccccccccccc{c}cccccccccccccchfdcddccccccccccccccccccccccccccccccccccccccccccicccccccccccccccccccccccccccccccccc֤ccccccccccccccncccccccccccccccccsccccccccccccccccccccccccccccccccccccccccccccccttccccccccccfccccccccccccccccccccccccccpcuccccccccccccccccۿccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccgccpcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccuүcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccfccccccccccccccc|cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccckӼccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccckcccccccccccccccccccccccccccdccccccccdtccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccyccccccccccccccccccccccccccccccccccccccucccccccccc󔔑yqccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccgdcccmpccpccccc{{cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccmcccccccccccccccccccccccc׎cnccccccpmcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccקccccccccccccccccccc{ccccccc}{|dccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc׉cccccccccccchccccctcchccccccccccce|{hy}ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccmmccccccccccccccccgcccccchcccc}tcctfcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccmcccccccccccccc֑mcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc@@cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccgggccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccfskccccccccccccccccccccccccccccccccccccccccccccccccccccccccxkwccccccccccccccccccccccccccccccccccccccccccccccwcccccccccccfcccccccccccccccccccccccccccccccccccccccccccccchqqccccccccccccccccccccccccccccccccccccccccccccccccccccckmccomfecccccccccccccchmoccccccccccccccccccccccccccccccccckgcccccccccccccccccccccccˆccccccccccccccccccccccccccccccccccccccccccccccfǰccccccccccccccccccccccccccccccccqcccccccdԩccfɰԆkfcmcccccccccccccccccccccccccccccpccccdgݰcgְfccccccwyccccccccccccccccccccccccccccmccccsְ|ccwkɰfdccccccyccccccccccccccccccccccccccccccccccckchccccccccccccccccccccccckqcccccccccccccccccccppcccccfccccckdmkccccccfcccccckccciccccccccccccccccccccccװccfcm횰cccccffccccccccccckwgoccccccccccccccccccccl۰fc}dy܆cccccccccccccccmcccccccccccccccccccɊvذհdcڰɰװccccccwpcccccccccccccccccccccccccccֆװ՚wװcccccccccccccccccccccccccccccccyjwlڠڰӆcccccmcckcccccccccccccccccccccchcm԰dccccccckccccccccccccccccccccccccs}ܰݰհccccccpccccccccccccccccccccccccccesܟxɛذoccccccccccccccccccccccccccccccհɰןwdcccccccccccccccccccccccccccmװccccmcccccccccccccccccccccɰccghcccccccccccccccccccccڰְְذcc֚qdccccccccccccccckcccygfkccccccccccccccccccccccccܰɰذccccccccccccccccccccccfcccccڰcccccckfmcccccccccccccckccccccٰ۰ɰcccccwck˰cccccccccccccccڰccccccڃհ֚ٺc݆ccccccccccccccccckkccccgkհɰޚְ{cذhccccccccccccccccccccccccckqw˚ڰްcɰcciccccccccccccccccccccccccccckذgf˰ccwڰccccccccccccccccccccccccccckqwհ~fcckcccccccccccccccchڰccckcccwxmc~؜wcpoccmdmccccccccccccccݬcccwccccchcc߰ɰkkcccccpqccccccccccccckwcccccccgcccccccךܰ˚mcccccchccccccccccccwrcccccccccˆcccccccdt׺כfևhdhccccck}ccccccccccccmccccccfcccrccffwpmcccccfgtcccccccccccccޚccccccccccccװccccpcccdkcccd{cccccccccccccccccccccccccccckհcck{kcwkccccccccccccccccccccqkcccccccchڰkcccccc˚ccccccccccccccccccccɆccccccccɟddwcccccdfwccccccpdccccccccccccccccccccco|ccccccccccccccccccccccdccccccccmccccccccccccccccccccccccccccwwccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccfkcccccccmmcchccckcccccccccccccccccccccccccccccccqhcccccfcfcccccccccckwk{wcct{wcccccccccccccccccccccccccccccfccccccccccccccchccwrmcctccccccccccccccccccccccccccccccccccccccckccccccpckcc|}jccccccccccccccccccccccccccccccccccccccccwcccccccccdfcpddccccccccccccccccccccccccccccccccccccccccccccccccccccccclccctccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc@@#@cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdsklneccccccccccccccccccccccceccckwecccccccccccccccccccffskmccccccfcccccccccccccccclfcccccccnݰcccccccccccccccc|wcclښkɆeesccccccccccccccdccpgcnncccncencccccccccfcccccdlccnscncccccccccwvhwcceccclcccccccccwɰװɚcclcgccccccccccnfkccckcccccccccccccݰ~հwcccccccccccccw׆wwhcccccccckcڰɰsccccccccncckvccccccfcccװdkhccccccclccְ߆ְksccccccccncccceװ~ڰܚkcccccccckcnn򚟰nkshcccccclcclccccװۚvknccnccccccccccwskܟٰecmdcccccccfccckcwwɰwcݚccccccccccnccccwsdcccsccsoccccccccccccceoccccccwscccscceccccccccccccccchcccccelsccccccccccccccccccewcclwccccccccccccccccccccfcccccclcdccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc 3@cccccccccccccccccccccccfeccccccccclgcccccccwcsdccccccclnlndcklcccclܰކcnccccfwescccceڰkcccccڰ߆gcccwfkwsɆlccwcfwɰkccccllgcgcccccccccsklocccccccccccccccccccccccccccccccc@ccccccclgkfccclfccwذkclݚcnsncclelecccccccccfecencfsnsM dM M W M Ev"@"@"@"@*GhT* " M 8@@-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------0df----------------------------------------------------------}Ź_---------------------------------------------------------A䷱]--------------------------------------------------------gk^WZkV1--------------------------------------------------.tlw0------------------------------------------------1.3mH------------------------1EPO2---------------------2.zѽV------:3.------------c~rR1-------------------.qǶQ-----2I\gaP----------.aM------------------eQĴ[-.?VsvS2---------Bx------------------eXŲi88M^pxB--------7c\----------------M\[upZxU----?`.--------------;Voy羪Ӈvi8MbkgZfp9------------Mpȭxwľ`1-----------1Y׻ľѺՃ-----------1aı¹̾яO----------YǺŮƽѿӉO-----------F´ɼŴpD------------7i´׆P1------------Gɻ6a9-------------0ǹ¾ź6y-------------I6ɻt------------2Spľǰ±>-------------@h¹ѽ²P---------------?ĻɵƽO---------------0]¶ɾ6ГF---------------->b¹ڒ----------------3Nu/@-----------------n̹65-----------------------2Hhɸ666ր---------------------.K{Ľ6¶@---------------------;x66ʷƓ<---------------------Nͽ6ͻh--------------------lŶ66ʄ2---------------------0sIJ6n2---------------------.oؾ6\.--------------------2.gβĻoC--------------------9z`ǭŶʔa9--------------------9ޗŽƴZW:xEhC-------------------Mzձdz̕CKg--------------------F̴xZcʶǹF-0K--------------------Xӌ;[ѽ6н.------------------------7LAD|`auj8rJGGGr5_G ƪGߧuG| 37{ GG45 } 634ĒTz4634722333yGG3513;<335::757u4 77?Ś37?Bw=yG77r߲aG}33L37PJ39M}L3:^h6Il4ײG:~8: GGGL9Y22yRu Gz45WJG456yM{S G3:GrM46753321:2123v54>61/ߺ4855544336637787J1Ƚ35;@T37212qzIT4634554455459;:8jh332233357<@22589WLGG4543443335679::622225333343458;rGyz18@BeG736G455454345357865313653112344569: 3Dž?m` G34:tGG444554333333433333223322333654233134wr ߬27;333454333210133434468863333343342337uGGu4f2:=S6662344333111355458:;:85433345457::97 q456:4787212333343366546:;:97555777558==;:9u344335GY765673432333358::8645887555579:8779;<:;=b34742G43G886443543333459::865555444556887767988;xͪ Si6643J}7320Jk9:6233443333457887555554444556665566668V 568_wGߣ4553Ӯ74311g9986323333334446776555555554444444444333r λ^G Y655453343115::863233233344567754555555665544433332110021 Gu r߉G78532443239:87333223345567765445556677655544332320/1101 f|e8532343337876433333356667666555566777766554433521123345G6\߈58633334663333333566666666555667777665555543333789::7}::43443333333433566665666666666666555555554445:>>>=;72OrT:;935543533333455676655566666666655555555554559>??><:632111631 56;;74533775333345777765556666666555555555555556:=>>;:7554367kz333333367::354379733334568887655556666665555555555555569;;:765555;??^37::7537876454598633445578887644455666655555555555555557886333457=@ GMLg7<;;8536735543886345555678876544335666655455555555555556763333337;zdQc524558633634555666777765444346666555555555555555555643333338:: 3j6874:722235676666666655444355665444555555555555555544434479:9X458::286111367765555555554455665553444555555555555555544579::9645c  5iJ37:76972113565555555555545556665534445555555555555555568;==:732355:^  52342;;6312335554455555555556766665554555555566655555568;>?>:64467:ћIL6| 2/.0;8333333444444445555556777777665555555556665555668:=>?>:56:<=a i210034433333344444334455556788887765555555566665555678:<>>>:68>@` u JY330/13543333444444444555678888877655555556666655566789::;;68> GM31oo24533334444554555567899988776555555566666556667889999fiMMMe30o13333333445555566677899988765555555566666666677888999ףYeGc3211332223335556677677889987765555555566666666677788::;;:43r_{t䰿321222222333456777777888988766555555566666666677789:;===;558Qr}33222222233346778887888888776555555566666666677789:;=>><;;>GR 3322221223345677887777777776555555566666666677889:;=>><:9GG4G33223333334567777777677666555555556666666677789::<>><:77G36rG}33134233334666666666666665545555566666666677888::;<;:768:J3u 43111234334566555555555555545555667777766777888888876569; z1/o23344456555555555555555556667777777778887765433337;JGMJy J2oo1334445454555555555556666777777777778888765433235:= i]GGu R5Ƿ1//13456544455555556666677777777777777888886554358:=> 5G Jr454431/1247763334555566667777887777777777789999888:;<>@@Gd}55542//17:963333445667777888988888777777789:::;<=>>@BB@ G Gf|78720018:96333345677888889:99888888877778::;=>????@ABOuG3:~212588633333357888889:::::988999887789:;<>?@@?>>>bu 123883233333467898889:::::999::::9888::;<>?@@?bߥ02:<71123334578998889::::999:::;::988::;<=>>?[5==6//12345678888889::98889:;<;;:988::;;<<7558PR靈32333578623467765557::;;;<==>>?ABB@=76<@32GMyGXS334336:;83247987558:=>>>?@@@???@?Ψ:@E35;u GM238768;>;4138:;98:<>?@@BCDCA??>;43е^tuz y3;uK24;:79=@<5138;<:;=>???@BDEC@>>e5437 L8l pᆙ(8;;78>@<3139<;:=???>>?@BC鄏339>bG GrJe|Hc&8=26:<;:<@AA?==>?@rߡ>{r }wGpKTn؞r7::87:>?\:d _GpN!UUʱqG557;ˠ ^Gs (--n蒆SHG57;Vrr(-F, uHG5ض H n,n$THG{s ph'%Z HGGG}#"ZNHuǚ GZZG GTUUHHLTq H&,*NGH 'F,HuJHK'"T5ĚGqL pΔ GGqqHHGqLHGHpHyGV@@qHGz;(qG*tGgHq HGg<Lq*[6,:66,q,G|NA|)gq6*[,g ) *|HG6,[g[@*GG[8[HRG**;544578):)y*B7,33*GGHg[G*443347722322359M [BGGMH 4g344322233362334224G,G=g$742332254::64666;:*H35[;G*6632337:747546977::G=4g*29>7233336765544454446zqJ**G*643229722234674455654332101[G[H[<53366333466655677654432477qGJ@74333344665666665555449>=8:$*2**6:5376335775566655555555;<8649+B:9476467444687434665455555576336CG޺;674236666654356545555555533379vG,[=963146555554565444555555546::6*<* q,J20:323444455567665455565556:><57AqG:02333344345578875555665567:>>?-)>@$6q297=829::>?ADB>,;;H*jGc g,>D*2::>?>>AO,CsGGzHUɫ[,6:+GqXG)+SRq*7*~GHHG G*,VGHGG%!qTUyHGShT HznTG[GqGM HHqG@@Z@GGqGHHHqq[qHq*@gqHp H[HG>>*= g[[gHpq*G3344223=*qH>*g52366666:H>9=:224645432g:34346666545:@K:966447455455774):52665454455547*$Gq25233467645558>:g1235677656668>$qzq 223777655668;: N?1445556777757GU>1735788779<>)q?337798:9:<Hy*36667;HK9247557@g266677gpHq75799BKp:7=,[GqqGGp\@HNp?gG:44>H966=q[7=H p$\pp**HY^bxĞԈ%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*Zп@0%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*[Ŷ<%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Tܻ.y?%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%=忯(,,(lj9%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+~Ʋ(,((󏏌d%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*nȯ((-(w*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Nճ(v)%%%%%%%%%%%%%%%%%%%%%%%%%%%%%3nì􌌌1%%%%%%%%%%%%%%%%%%%%%%%%%%%%%4tëB%%%%%%%%%%%%%%%%%%%%%%%%%%/hѳ\*UC%%%%%%%%%%%%%%%%%%%%%%%?̹ƽgn䴂%%%%%%%%%%%%%%%%%%%%%%%lth᪔..Mଫf_%%%%%%%%%%%%%%%%%%%%%%%%%%077Iת.-o/%%%%%%%%%%%%%%%%%%%%%%%%%%%%*Aoײv%%;޺i<%%%%%%%%%%%%%%%%%%%%%%;us8%%%%%%%1Jʡ6%%%*Gff8)%%%%%%%%%%%%%%%%%%%%%%%%%%IM9%%%%%%%%*i*%%%%%CdokP*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Rϳu%%%%%%%9%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%RڀL*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%3;8%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@p@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%rr<%%%%%%%%%%%%%%%%%%%%%%%%%%%+gʨ%%%%%%%%%%%%%%%%%%%%*A<1/Σ%%%%%%%%%%%%%%%%%MrĢX*%%%%%%%%%%%%%%%%%Ur*%%%%%%%%%%%%%%%%=ǣ(g%%%%%%%%%%%%%%%Σ,.,%%%%%%%%%%%%%%J.B%%%%%%%%%%%%%ΰ\<%%%%%%%%%%%%;USmаO%%%%%%%%%%%% Y> Y5I|.Xڒ> Y> Ym> Y|.Xo |.Xڋ> Y5I> Y5ImmmH {mm> Y5I|.Xڋ> Y5I> Ym> Y_4o .'lo 蚫}|.Xڊ蚫}A|.XڊA D|.Xڊ Dka|.Xڊka|.XڵttttrL|.XڊrLrLtrLA|.XڊArLtrL_4tt_4_4_4_4_4_4> Y> Y> Y> Y_4_47X7X7X7XÈ|.Xڈ|.Xڈ|.Xڈ|.Xڈ|.Xڊ蚫}|.Xڈ|.Xڈ|.Xڈ|.Xڈ|.Xڊ D|.Xڈ|.Xڈ|.Xڈ|.Xڈ|.XڊA|.Xڈ|.Xڈ|.Xڈ|.Xڈ|.XڊA|.Xڈ|.Xڈ|.Xڈ|.Xڈ|.Xڜ|.Xڈ|.Xڈ|.Xڈ|.Xڈ|.Xڜ|.Xڈ|.Xڈ|.Xڈ|.Xڈ|.XڊrLttttrLtttttttrLtttrLtt,M wt 2]a Ȇ,PhC]! Configure SinglePlayer MutatorsM M _M M YM PUj "`֒ aK QM Mi "aF9K QG M M GM Hg #c =oK QM Ff "d(>Qk QM De "eA>K QM }Pd "f1I Q M M R}M t4}!Ia!L333?= T>a!0333?= 6?, 333?a!5333?= }!$%6s 6?1r*-}!$::$Wa  #L?a<" @wW*W!W 6W 6W 6Wa!e333?= >a!L333?= zt h6zF s L F 6L nL zn5?a!`333?=nF t zn1r*-a!_333?=Wa wwW*W!W 6W 6W 6a![333?= M F M q]\ iRO蚫} M M O M uX_ k)*mԝX蚫}ԝXԝXԝXԝXԝXԝX蚫} WM M M kJW #mF9 2 M M gmTwL! !5<?a&!mIa&! muh?a&!mua&!5m hzU 2$omnss᱘᱘sss֋> Y> Yo > Y?i?i?i?i?i?i> Y᱘᱘᱘᱘᱘sssssB,]Single Player, Next ItemPrevious ItemActivate ItemReloadQuicksave/Ping  QuickLoad ]InventoryNext InventoryPrevious InventoryActivate button bextra3 stat net | mutate quicksave mutate quickload                      ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6M M a M M pM M Q@BG[0! !0a&!@YL?a&!@Ya&!0@ VP st$PeM M vM M w M M S M KO wadK$PsM HN xÆ$Ps M M HM EM zŒ$PYM M rlLO[0!  ![a&!lYL?a&! lYa&![l M }M M bM xBJ  ~hU"m蚫}ԝXԝXԝX蚫} WM v~I ':mԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXt"/ԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXt"/ԝX M M P @vM tM M @vM b M M qM M GM M f M M M M NM M XM M M M M M JM M M M FM M xM M HT8%Y::$333?Nr*?,a!IVa!Uw*-?,a&!6>a&!8>(=r*?,a!X??>%a!g??>sr*?,e,2!_p!K,2!e!fa>333?a>333?> M NM M OM M M M rM M z M M b@zM OM XG 2X>" \:a,D  Nick MichonD Steven PolgeDJames SchmalzuT. Elliot CannonuCedric Fiorentinou Jeremy War` "a ]Art & AnimationF] Artur BialasF  Dave CarterF Mike LeathamFJames Schmalzb "R Dave EwingRMichiel Van De Bosc "J= Nigel KentJCraig LaffertyJ  Mark Reiny "M kP|U  6 YokinX'1 "(]male1skiny.kurg5)]male1skiny.kurg1A] male1skins.2]male1skiny.kurgan7] male1skiny./ 3]UnrealI.Male19]Botpack.TrophyMale1;]Kurgan* M \H 2Z; RG,PXC]Unreal I CreditsM M M M ^|L$[0!  ![a&!|YL?a&! |Ya&![| PwB  ]d>i!xxxxxxxxxx M M _BB [0! !0a&!BYL?a&!BYa&!0B M `Q z[0!4 !`a&!Q YL?a&!4Q Ya&!`Q  M c\TwL! !5<?a&!\Ia&! \uh?a&!\ua&!5\ M gM M yM M Lk M4t1>a!0333?= e6?, 333?a!5333?= k !$%6i 6?-k !$::$ja  #L?a<" @wj*j!j 6j 6j 6a!e333?= >a!L333?= ~e b6~yi wy6wYw~NY5?a!`333?=2Yye  Y-a!_333?=ja wj*j!j 6j 6j 62a![333?= }ToD 6%d8}nԝXxxxx')Lxxxx')L> YR@Gӷxxxxxw4w4')Lx')Lxxx')Lxxx')Lw4 "fM Do| Ce;a|.Xڥ_4|[$_4_4|[$|[$᱘|[$᱘|[$|[$> Y7XÈ|.Xڈ|.Xڈ|.Xڋ> Y|.Xڈ|.XoШ|[$|[$7Xå_4|[$|[$᱘|[$> Y|[$|.Xڊ|.X7XË> Y5I_4|[$|[$᱘|[$᱘|[$|[$|[$7Xå_4> Y5I> Y> YoЋ> Y|[$> YoЈ|.Xڥ_4|[$> Y> Y|[$|.Xڋ> Y|[$> Y|[$7XÒ> Y> Y_4_4_4_4|[$|[$᱘|[$᱘᱘> Y> Y> Y|[$|.Xڊ|.Xڊ|.X᱘|[$᱘|[$|.Xڈ|.Xڈ|.Xڈ|.Xڈ|.Xڊ|.Xڈ|.Xڈ|.Xڈ|.Xڈ|.Xڋ> Y|.Xڈ|.Xڈ|.Xڨ|[$|[$> Y|[$ |[$ |[$|[$_4_4_4_4_4_4_4> Y_4> Y_4_4_47X7X7X7X7XË> Y5IooooЈ|.Xڋ> Y5IoЈ|.Xڨ|[$|[$7X7Xå_4|[$_4|[$|[$|[$|[$|[$|[$᱘|[$|.X᱘᱘᱘|[$᱘|.X᱘> Y> Y,M AD{ Qf|33OXxxxxxxxxxxxxxxxxtxxxxxxxxxxxxDɂDɂDɂDɂDɂDɂDɂDɂDɂDɂDɂDɂDɂDɂDɂDɂDɂDɂDɂDɂDɂDɂDɂDɂDɂDɂDɂDɂDɂDɂDɂxDɂxDɂxDɂxDɂDɂxxxxxx N]EasyNMediumNHardNUnrealM P NF@ 2gkP  )5IY ۩Hxx M uGs 2.hǰ9W{TK4    XDXD> YդJK4     > YXDդJ  {TK4դJ````> e> eդJ{TդJ{T{TդJ```,M M [M M H M H hyq 6*k*H lxxxxxxxtxt{#Uxt{#Uxt{#Uxt{#Uxt{#Uxt{#Uxt{#Uxt{#Uxt{#Uxxt{#Ux "M M V_@ i M VM {Nc "n?j^)K Q M M uM M xM yb "qn QM or[ rNdN111 #z #t #\ #o #r x\ M fwT  sTaxxxxo xo xxx,M M @M M t@M CL vx$P\M ~K w Yt> Y> YawAň|.XڊawAŊ蚫}|.Xڊ蚫}|.Xڈ|.Xڈ|.Xڈ|.Xڈ|.Xڊ蚫}|.Xڈ|.Xڈ|.Xڈ|.Xڈ|.Xڊ蚫}|.Xڈ|.Xڈ|.Xڈ|.Xڊ蚫}|.Xڈ|.Xڈ|.Xڈ|.Xڈ|.Xڊ蚫}|.Xڈ|.Xڈ|.Xڈ|.Xڈ|.Xڊ蚫}|.Xڈ|.Xڈ|.Xڈ|.Xڊ蚫}|.Xڈ|.Xڈ|.Xڈ|.Xڈ|.Xڊ蚫}|.Xڈ|.Xڈ|.Xڈ|.Xڊ蚫}|.Xڈ|.Xڈ|.Xڈ|.Xڊ蚫}|.Xڈ|.Xڈ|.Xڈ|.Xڊ蚫}|.Xڈ|.Xڈ|.Xڈ|.Xڈ|.Xڊ蚫}|.Xڈ|.Xڈ|.Xڈ|.Xڊ蚫}|.Xڈ|.Xڈ|.Xڈ|.Xڊ蚫}|.Xڈ|.Xڈ|.Xڈ|.Xڊ蚫}|.Xڈ|.Xڈ|.Xڈ|.Xڊ蚫}|.Xڈ|.Xڈ|.Xڈ|.Xڊ蚫}|.Xڈ|.Xڈ|.Xڈ|.Xڈ|.Xڊ2|.Xڈ|.Xڈ|.Xڈ|.Xڈ|.Xڊ2|.Xڈ|.Xڈ|.Xڈ|.Xڈ|.Xڊ蚫}|.Xڈ|.Xڈ|.Xڈ|.Xڈ|.XڊawAň|.Xڈ|.Xڈ|.Xڈ|.Xڈ|.Xڊ蚫},@ ]43Warning: Enabling this may be considered cheating.M M I{r eDRee@@V {$6{$6{C?,e@@6{$ $6{$6{C<$e@@6{$  M AM M hM M _y BV.!a&!y ,a&!y  M cDf[^=::${.>a $@@(D>L?6-  #<a$@?@(zD?a%!sa ,u=a%!Qa&!E=\\aOa%!wn\a&!E= M m| zN_.!4a&!| ,a&!4|  M aP #a&!n> M ^t"a&!\> M Z&M~U`&-a& a& wc*qTcq?,a& @&G^cyGCc@!C ^z@@&G^cyGCa& Cc@!d &-%, w6*r6&U6 F6A D&F^A D6&6^6c6G6?&6?&6@6&U^cy6 \%8, .r6*6&6^6c6G6?&6@6&U^cy6?&6 %t, t&?6, &6, ^6, c6, G6, ?&6, @6, &U^cy6, ?&6,   M ]x L^.! a&!x ,a&! x  M ``_#a![ M rM M }fa!N333? M ~tDF2,6hr!S6hr!x(qw6Wr*p6WrI 6Wrp=,I h4xx0rItp$r?krn tpI : rY t@r?Y 6hr!xItp$.It=,$' M s~'!:!B:!&!yY!\a&!B<a%!oa%!ba%!s !<a&!H ף< M M M dv @#W=a!{ ::$333?a&!<v Ua&!Hv  M AIG#* M M_{t ;::$09?%R_;@_N J IN-g=r*a!:?_-a!B?_a!:?_NN @?N#WNJ ?%B-a![?_Ta!c?_~-a!Z?_a!Y?_ M tG TAcJ;!+?a&!G 8a&! G Ha&!G  M ^V[Xa!h>> M M M M M Z X ?<<MX K-Z46?%6X ?XK6?%6 M _M M jsT$8a!{ ::$333?a!<rw*-a&!H>L>s!is!Ksas>333?as>333?> M fD M Qt1>a!a333?= e6?, 333?a!N333?= D !$%6B 6?-D !$a!\333?= >a!T333?= }} S6}B E 6E dE }d5?a!T333?=d} da!a333?=a!`333?= M eM M iM M hr o<8,b M zIjb.$a- ' !v  yM }M [ykL=3 y-~y?D D Dy.or* - .  M W~R*!333?a&!<~ M uM M VR+ M DI1&>a!m333?= M GvzE' M GM M M M hu n)/u %u >@=-a!w  M C@M M VUcE%yRed&yBlue,yGreen,yYelloweU qpsp}p}e{b,,e,Se:C,ope111,[ pppso1T_RC%|s,skins.a.ppsT_:Cy Va.pppso1T_RC zwa*%U apTeam color not under p-L_ppbt_RC:C,_ppbt_RC_pEU%_ppOT_:CyZ%Z,@wzZ kQ [ EU%psSpsSZ&EU%pw.U*f|s,skins.|s,female.U.fcommandoskins.cMDo5Ivana c.U.UTtech2.Deco.xmetex2x1 n.ppspS111,5 wn*.Unpno talktexture for p.U.V r.U*|s,female.U.fcommandoskins.cMDo5Ivana .U.UTtech2.Deco.xmetex2x1   M Ery3::$+9?%b1T - - - -a!Z?a!Y?-a![?a!c? @@  n 6n}6}U 6UVn}H U}rVH @r@?r@-Q!BQ!:@E V#?E U}?%-a!Z? a!Y?>1-a![?>a!c? Yr*Q!:y-Q!BQ!:Qa aQ M lUo3::$+9?%b1T Yr*a!&̌?- w*a!y̌?a!&̌? M A uh KqA uoa/!v.Y Byu?u?,Pu?@ M qI=+ r*  $6C6C6C-'[.r[*z[ Game ?% 6$6C?,6CBaTESTM~::$a[6C6C6CB~!apGame Type: [ 'B?,~!apMap Title: 'B?,~apAuthor:  'B?,~3{ (apIdeal Player Load: '6$6C?,6CB?,~a'B?,~a['B?, ~a['B?, ~a['B?, ~a['-($6=,6=,6=, M lM M M M gUT3::$+9?%b1T Tr*a!&-?,a!Xa!c?,a!Na!J M bwb4 , RD?,@LD?, ?R?L ?r * -F(-i(-N (L*V*r   w *-s+r r-F' --Fg-iV -i'}}-N L rV*VLL -N 'w. *I. ,: %w. *-r   A ?R,: ,?L,: , aR (a0(,w. *x%x, :x.  &?R,x,`x%?,<?L, DD?,??. ?. gD,. , . %?,?, aS. (?, ?,D?,6=,6$6$'D,6=,D,6=D,,(q. %(a @?D@?D6=,6=,6=,x  wI*I--(_ D^ D I $6?,?,?,?,D ?6?,?,n?,?,4 aCB$ a (k?_ ?^ -I-I- , 2 wr*,%wL*eL-&- rIL ,6$6$ilNLw.L*.L-A.LlN6=,6=, wr*z r-&- rIr ,6$6$ rV* rL* -sil,@Nr il, Nr$?l, F rV* rL* -s?l,@?N ? w.r*.r-A.rD?, N$6=,6=,2 wV* V-&- rIV ,6$6$il,@NV w.V*.V-A.VD?, N6=,6=, M lm f X*m >a&!a?VIm +?a&!m?Va&!y? M npga;::$09?%Rp;@par*a&!&p- w*a&!ypa&!&p M oS[3$ @S M P~*/!F!Z-:!'!^-W!J!c-t!N!X-!Ia&!I<-!Ha&!H<--a%!P2a%!B !U !I ?,a&!6 ף<-a&!8 ף< M {TB L[0!  !La&!B YL?a&! B Ya&!LB  M j M M Lb@3J333?@r*?,a!aHa!H M R\ R 4T333?Er*?,a&!a\ Ra&!H\  M rd~B [0! !ea&!~YL?a&!~Ya&!e~ M M M a{ M kbF*333?a!< M \LmwL Q  -pL-'e::$L$a Q LLL L L  M ngcTm wL! !5<?a&!cIa&! cuh?a&!cua&!5c M [M M B M M xa| M tM M bAPJ- (6HC6-Aa!]̬?u=Ha!S̬?u= M M M aM M ]M M mrd@_::$ C6-a $?(zD? a $333?(HD? M AgGz.B3r*?,0wg*g?,t!' !^!F0!N !X!J0!I!H0!W!D0!6!80!@!j00!s!u@@rg*g?,!F !Z!'@!J !c!N@!H!I@!D!W@ !8!6@&!j!@@@!u!s M M M M M iI H`*X$!6a!6I  ף<VV!s !8a!sI  ף< M M M }q h7%b M jr)w*a!Y333?> M lLTq!)- r wa!{ ::$333?lr*?,a!Ita!U'66s666606 r*?,a&!s>-a&!u>pcr*?,a&!@>pa&!j>'w*--:% :%a!8?,a&!6>a&!8>'p=Pr*?,a!X??>ma!g??>'r*?,,2L!_L!K,2L!eL!f LaL>333?'aL>333?> M U 94::$ -^7a  M o[@[pa!{ ::$333?`r*?,a&!I[ma&!U[r*?,a&!6[a&!8[ M vu@2O36-a $?(zD? a $=(HD? M n h. f  w*6X=,6X=,6X=,6X$6A=,6A=,6A$6A$6W=,6W$6W$6W$   W 0L> =  aCreatures( 0? =  aKillcount( X&X%BrutesX 2\%Gasbag\ m]%Krall] ^%Mercenaries^ d%Blobsd %_%Sliths_ `V %FliesV X%TentaclesX Y%PupaeY c%Mantasc Pa%Fisha `%Titans` T%Skaarj WarriorsT U%Skaarj TroopersU Ze%Skaarj Leaderse W% WNaliW  X+z% WHarmless Crittersz  XTotal Kills^ iDifficlulty:n Scoref iMap Title iAuthor    0L> L>  IaScore Keeper inventory not found!!! Please stop ]-[4xx1ng the code!( M q`RC9r*?,a!DAa!W M \ ` b-\ 6-6-(ErpB*a6--\  M qPHM>r*?,a&!D>Ka&!W> M M~ g~~ a/!@ ~  8  F  T  b  p  ~      * M U ` b-U 6-6-(ErpB*a6--U  M M M M M ~Qzh~Q,Q33>a!o?=|PQ?a!d333?L>|tQ333?a!M333?L>|a!S  M yt 6v$6v=,6v=,6w=,6w=,6w=,wy?H ,H ,y@y?,?,y?,?j H iBy@i Ay@Hi?yv\ywiy@yaSDi( M U 94::$ -p7a  M zM M `M M yM M {IDZIII=II::$I{.>a $@@I(D>L?6- I #<a$@I?@(zD?CIu=a%!Q3r*?,a&!L=@a&!J=aka%!wo$nr*?,a&!L=a&!J= fh 2 }zyMo .'l.'lo o ԌԌo o o PbC]Configure OldSkoolM M aL k-M @?C,dBAA@?C,dBAAaAB  M vM M EM M g ,m -g ,O,a/!D,aa B ,,!w ,aa Y ,,!l ,aa Z ,,!e,aa d,_,!^ ,aa },,!N,aa ,,  M ]x | rc-}ix ^ Z-P-} w*-}|x ^ -} M KNO-zFm%%NNN?mN?VD %g*F wF*qF- mFqF%%wF*wgF*:-b , iNDNVFMNFqqFD D FgFFFw-b  wg*iNDNVgMNgN?VDm% %NaSm] [D] N aSm( M I} iqH<L>H=H?, v H a} (H<?H=H?, v H a~ ( M ^FbM VQ----t>r%  w.* @AA?,a@@'a@AA?,( M @M M @3338000(( @((8 03(X@0P8(hH0( ( `@8(H0X0xHHPH0@0`0ȘPȐ8(pX0h0`H X@РPИ8hHH880(h بP@hP ШX0 `H` x(Р@p xXX@8(pPP80 pX h ``HX@XH H8hP@0`H8(H@(0(XH( P@pXH8 XHP@hX0(XH( x0H@800(@8x (( 333f3f33f333ff3ff̙3ff33fff3f3fffPh H8x@(hH `3(P@@00X @ @88808P p@X 8x(H @8(h `00P 8( P h @38P0H80X(3 H@80 PH@8HXPX00@033f P@H33P @33H(08@HP (03f33H@8 @0(3( @ 80( 3( 8 0 3( 0 (8(H 0 @3f0 8( (  8(833( X@HM |pr+4'a%!s6?l6?0  !^^*!o::$D6?*#!ox6xo<xx6-a$Axq!j!y2 p M A \t M M M c] Mt1>a!5333?= ~6?,d333?a![333?=va!L333?=|::$"a  #L?a<" @<w"*"!" 6" 6" 6"a w"*" "!" 6" 6" 6"a  #L?a<" @|w"*"!" 6" 6" 6 ] !$%6Y 6?-] !$a!`333?=::$"a  #L?a<" @w"*"!" 6" 6" 6 {b j6{O Y AO 6AlA{Gl5?a!0333?=lO b }la!e333?=a!_333?= M Ol0! -t-'-' M JVWCr*?,a!r>>Ua!{>> M lMr::$Lr% D!Yla!Z333?)\=o$r% w!La!W ?o$lM::$# -p r% 6- mrB*-Ba r PMj d=?,Ba d PM d{.?a Y PM? M Coq`!uV%o t  M ka M Iz P M P bU?ZS.L 6LSO L9S zDka^_O L'wk*w.k*.k-.k@@wk*cbk( -z(Or*-r*-z(-S-3::S-z'-z(-z'-z M M M |QK[  - Mr%  r%  r% Qa ] w%% *Qa ] ի%% #?wQ*w%  w%  w% Q%%  Q%% Q- 'Q%Q!Qw*a*Q*w*a M dp 64-H-H(2-H'.-( M K(! )j)-6-(-(--(-C%C,CC( Cd((w* $(w* $ ( (a(?,(ya a?,%.(-%--%-%( 6%6%((((((-(-6@F6@E6zD6@F-(-( (SL?fff?h!Xa'(( M ^CIBb [0! !ea&!IYL?a&!IYa&!eI M ZM M [M M LM M ^I !>a&!D333? M OZ wqG96q ?|6Z ?%6Z ?q Z  M Qyj !r*a!'_-T?,a!^\a!Z?,a!'a!F Ek""""*wz* "Y M X@:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::EE:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}E::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::<::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::U::::::::::::::::::E<:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::>[:::::::::::::::::㦁<:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::ţ<:::::::::::::::::<{:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::O=:::::::::::::::::iΤK::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;::EEdh:::::::::::::::::`W:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::SY::A::::::::::::::::<]::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::M:ΙΖ<::::::::::::::::Uin\::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::vA:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;::::::c=:IvvE::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::E:::x:;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::q:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::<Ƌ:::::::::::::::::::yޚ<::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::>I¸i:::::::::::::::::::ĨJ:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::Js:::::vW`e:::::::::::::::::::::R:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::U::::::<=::::::::::::::::::::::i::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::<::::::`y:::::::::::::::::::::::::<:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::E:::::::Zʨ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::E::::::::::υE:::::::::::::::Ef:::::::::::::~Dz҆::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::E::::E::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::FCUCS::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::B::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::h@@:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::K}:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::`٩::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::<::::::::::::::::::::::::::::::::::::::e;:::::::::햄:}:::::::::::::::::::::::::::::::::::::::::I:::::::::Ѡ|:::::::::::::::::::::::::::::::::::::U:::h™:::::::::iZ::::::::::::::::::::::::::::::::::::::ɺE::::::::::a:::::::::::::::::::::::::::::::::::::`:::hÇ::::::::::::::::::::::::::::::::::::::::::::::::::::::::A`::T:::::::::::::::::::::::::::::::::::::::::::::::::E<:::::::::::f<:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::Kn::::::::::::::::::::::::::::::::::::::::::::::::::::::]E:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::i::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::i::::::::::::::::::]s::::::::::::::::::::::::::i::::::::::p>::::::::`U::::::;lLV:;:::::::::::::::::::sJz::::::::::i̩:::::::~f::::::=i:::::::::::::::::::휙qy:::::::::e\::::::::`:?:?M:q::::::::::::::::::::Ʌwb::::::::ii:::::::::::::V:::::::::::::::::::p>=:::::::::::U?::::::D::::@Suop:::::::::::::::::@^:::::::::::`J;:::::::::;Yp_L:::::::::::::::::::YH==::::::::Ǡh=::::::=::qC^::::::::::::::::::::dƷ:;::::::::<̿:::;:::::::::::::::::::::::::::::::hɉqG:::::::::;k::::::::::::::::::::::::::::::::::::::::SWxL:::::::::``:J`::::::::::::::::::::::::::::::::::::::::::\L:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::@@l@::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::R:::Kh:::::::::::::::::::::::B<:::Zz:::::::::::::::::::::`@;>a:::::::::::::::::::::::<|uw=::::::::::::::::::::::::q;::::::::::::::::::::::::>~:::::::::::::::::::::::::񏶴::::::::::::::::::::::::kc::::::e::::::::::::::::::t::::Ae:::::::::::::::::<::q:::::::::::::::::::::::h:aƧ<:::::B::::::::::::::::::E::<:i::::::::::::::::::::::::<:A::K:::::::::::::::::::::::::::Ei:::::::::::::::::::::Ey:::::V:::Bi:::Yk:::::::::Z::::J<:::;:::LI::::^@:::::::::>lH::::>kk:::::::::::::::::::::;E::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: m@::::::::::::::::::::::::::::::::::::::::::::::::::::::::a::I::::::::::<;:O::::::::퉏o::::::::::::L:::::::::::Iq::>R::::::::V:::::::::::K::::::::::J:;::;c:::::::B:o;:::;:<::::::::::::::::::::::::::::::::::::::::::::::::::::Ln@::::::::::::::::M^@::::Y<::::E^:=::::VFY::::::::::::::kn::::;:M;=::~nn;M aM M bM M M M }M Q{k ,Q$Q?@QX QRa c?,c?,6? 6? QEQ$Q?@QPaTc?&c?&6?T6?TQ$QB Q?QRa c?,c?,6? 6? QE M dA0gwt*ta M nV{:!-g= Ar*a!'fff?V-~?,a!^fff?Va!Zfff?V?,a!'fff?Va!Ffff?V M NIgg;::$09?%RI;@Iar*a&!&I-?,a&!XIa&!cI?,a&!NIa&!JI M fn{5=::$09?%Rn;@n cr*a&!'n-?,a&!^na&!Zn?,a&!'na&!Fn M M M Jys 3::$+9?%b1T Tr*a!'-?,a!^a!Z?,a!'a!F M O ! a Y M xTK - Ta wT*T- 'T!Tuw*a*T*w*a M iIA !>a&!D333? M tPMM>r*?,a&!D>Ka&!W> M zz dz,z>a!I 333?L>bPz?a!333?L>ba!M333?L> M yi@`c::$333?Sr*?,a&!Ii`a&!Uiw *P  6%666666R6Br*?,a&!s>Oa&!u>r*?,a&!@>a&!j>r*?,a&!6ia&!8i M xM M M M Equ(=;-a%!B !<R= M M Dm f-M D-X Da/!V -O Da/!C -S Da/!R lDDa-O -S a gla P l-X a ]la l  M wrHw*a!Y333?> M \FD1FFF=FFxF{.>a $@@F(D>L?6- F #<a$@FL>@(D?5Fu=a%!Q%r*?,a&!L=2a&!J=aXa%!wnr*?,a&!L=a&!J= M @y{ w{tyuzgr rxqxpwnvjtfrdqcpbo_n^n_o]m[lXjViSgRgPfOeNdKcLdKcJcHbGaGaF`D_C_B^A]?\>\<[;Z:Z8X8Y6W6W6X4V3U1S2U0R1T/S.S+P,R+Q(N(P'O&O%N#L#M!J KJHIHHGFEEDCC?BA@A@ ? @ ? ? > ><<<;;::8:9     # $%')+-/012579:;<>?@BCDEGHIJKLMOPQS U!V!W!Y"[#]$^$_$a%b&c&d&e'f'g'i(k)m*n*o*q+s,u-v-w.x.y.z/{/{.}0}.~011122334456778|~kuitZlUi  ! 3v{ ~}M ut>T333?Er*?,a&!IL?Ra&!HL? M C8N~U5r *r * 8?a 8?` 88 , 8 % ,d8?,6 , 8?,8%aS (88?, 8?,w *8+ ?@C g @wC *8C ?8?,M8 8?` ,8?a ,S& , ,8sa A? ? A@B@ M m`WC9r*?,a!DAa!W M M M M M ce H-w*:&r*-bL=<6-a $?(zD? J J {>c J +?c c ,-ac$?(C?Fac$?(HD? M jzG' M o~DcT|~quicksavee%::$   e}Saved gameeGSaveGame 1000|~quickload::${ .| Customn  mwn*n-n-'neR?load=1000$(.|~spyd00da/!Xe+}:@.-cd .-c.-cRw*D~e M @x{y|uys~wrwo}tp~uqv]{hZxepvqxnupwi|pjrezmhr_ziam\~iWydZ}gXgV}eQv_UfLu\Ku[GsXAsT?qR:qO7pM5oK4nJ3oJ1qI*mD(mB#l?k<k9i3e)0568;=>?@CEFHKLNPS U!V!X"[#]$^$b&|~z|ire|nbykazk_{j]yhQdP~cLz_Iw\Hv[GuZEsWI|^Gz\ExZCvX?rS~X6tO8}T3sM5xP-mG+nF.uK,qH*tH)zJ+Nk;3v}yw~zuzdpeqa}m^zjbocp\zi]{jao^~l[{i^mX{g\lUxdVyeZjW|gV{fSxcYjRycPwaQxbT}eOv`UgQzbS}eOx`TgNw_PzbSfNx`Kt\Mw_Q}dLv^NzaRfJv]N~bL|`Jz^MbIy]Gy\Fx[BrVEwZDvYCuXG|]BtWEz[CxYAvWF^>sTC|[?vW?vVAzY>uV;pQ?xW@|Y:sR7pO;yV7sQ9wT<}X6rP5qO4rO9~W:Y2pM6yS4uP8W1rM0qK.nJ/pK/pJ5~T0sM1vO2yQ-pJ+pI0~R/}Q)nG,vL+tJ-{O'sH(vJ*}M(xJ)N'~L&Mfqd}o`ykb{meqb}n`{l\~kY{hZ|iUwdQfMdJ}a@sWE_3- a-t-'<a@( M QomUM -^wo ov!_o-'o  M kM M <M M Jl @Ya!W=a!{ ::$333?a&!<l Ua&!Hl  M O , a C M O , a K M NF n$/F %F ?@=-a!M M NfV >Eff?xf?,^xf?,yf@xNfRO M M`S!a![ M xMEc=++M(+,+%;;+%+, M OhG-B3r*?,0wh*h?,t!' !^!F0!N !X!J0!I!H0!W!D0!6!80!@!j00!s!u@@rh*h?,!F !Z!'@!J !c!N@!H!I@!D!W@ !8!6@&!j!@@@!u!s M OPM a&!n> M I3y]=r* 3b3Q3N3%F,<gD??,<F%g%F%_F, YF, 3+a AB?Y,AB3?,FF, Y3&a ABAB3?,3+a AB?F,AB3?,-3&a ABAB3?,3?,3&a ABBBAB3?,Yg, 3.a ABA?YAB3?,gg, Y3.a ABA?gAB3?, M RtGI a&!\> M K`K-8+, `?L?J`$a+%` ?%+&` ?%+,` ?%+,` ?%+,` ?%%+,` ?`$ M M M SwD,^www=ww::$w{.>a $@@w(D>L?6- w #<a$@w?@(zD?a%!sa ,wu=a%!Qa&!E=\\aOa%!wn\a&!E= M Tc L$M.! a&!c ,a&! c  M V` B.!a&!` ,a&!`  M M NFcN]Pa/!C (F Fb(b(b~>Fa   OF8F?, ?,F?,JFa  ' M ^ z.!4a&! ,a&!4  M PRPR?Q R?T RRp ,R R ?R?,MR% R?,%RaS% (R?Q ,R?T ,& , ,ROa A? ? A@B@ M Ta$"a/!Xa M M M W\Cp:x!S x!x,w\*q:\,X :\T\q?,z] x!W x!dx!d6UA@6vA]8x!~6UH@6vH]wI*I-IW(8F,F{6vFg_F&gFgF6h%gx6v%g]6W%g\6U%g@ M zTL b T <r  ?dr  ?r *?T  TT M \ vU\ a?' ^" " " " ** "DsFz M @                                               M @333ffffff33̙33ff33 (038@HPX`fhpx33ff33f3f33fff3̙ff3f3̙̙3ff̙3fff3̙3f333ff3f33fff3f3ff3ff33f3f33ff3f3̙33ff333f33ff333f3f3ff3ff̙f3f33̙ff̙3f3ff3f333ff3f33ff3ff3ff3f3f3f33f3ff33f33ff333f33ff33f3f33fff3f3ff3̙3ff3ff3f̙3f333ff3f33ff3fff3f3f3f3f33f3X`hp`" " " " *2* " M U@10111111012221011210000000110000111111112455732222211111011111101111011274NL38723332331111111111110013891UX1;?44433432112221111111135;80f7>;954444212332111011125980 0135:<9575222233211001149:@7 Q532028998445323322011379;3 gN323%#217/;<:74333211248:<1 44--4213:?:53211135895 155FE478532478753212447:@2 gL5.*/MTM5)%21121112479>>" I5$/X]#%3444100137:;?7QI) *PVjb #)3112201248:>2 gN5*'!DXW^^[ -)-332123575:; I!HiVgU&-%1442447505Gd][gO)255237:80 1&R_ae`VF"47413:>5 iLKRc``\+,,284114:92 Q-")/SEaecW$4;3134740 N75424FPCJOR/28>4235510024555(9Z.B)2;;531100%0110014ILR-#.33;95307/249:;9300)5443"E727>954328:79>?94200124)441;>85418:9548<@>73200247733?:744498455588:::<>:4210218?8544 1883357774454:9:7115?;7555 4:545788744579:87:98;;87778 058345588755789955:::;;:87477 155334445888879947989:877544313432333588877854777558844322 23332323577544553455478855321 M @ (((000333888@@@HHHPPPXXX```fffxxx( H(( @ f33X((8P h((@p((0h P8X(( @ (P X0`8@P (038@HPX`fhpx0(hXPp(h 0P0(h((H @X 0`0H(0 ( f3@(@08(0 X@P8P@ H8 @0`HXH @@8ff333ffff33ffff333f33ff3f333ff333f33ff333f3f3ff3ff̙f3f33̙ff̙3xhpp`hhPXX8@@f3ff3f333ff3f33ff3ff3ff3f3f3f33f3ff33f33ff333f33ff33f3f33ff33ffff3f33ffff330H 0`(0(8P(H0(` 0`(PXH08(0x px`hxX`hp ( (b" " " " **p ". M @ M @333ffffff33̙33ff333f33ff33f3f33fff3̙ff3f3̙̙3ff̙3fff3̙3f333ff3f33fff3f3ff3ff33f3f33ff3f3̙33ff333f33ff333f3f3ff3ff̙f3f33̙ff̙3f3ff3f333ff3f33ff3ff3ff3f3f3f33f3ff33f33ff33HPX`p (038@HPX`fhp33ffh`hpP@833f3f33fff3f3ff3̙3ff3ff3f̙3f333ff3f33ff3fff3f3f3f3f33f3f" " " " * 1*x " R M @踽ٶ%! ٯ ٬ ٭  ÿ] 戋 ဇܺ ,ڀԅױ}  $&#  )$*ܧׄ ͜.)) %  ,(ϙҺ[ .֣ۚ  )󉞮΍ '(痺ށ}~ ׾þҾѼĿӽ ӿ  \  M QYpz} [0!4 !0a&!pYL?a&!4pYa&!0p M l\_r*r.* Vw. * d %wv*v- d & M e.T(#r*r* \`.  w\*:\ :.v\`%\-U _U ]`&\-U cU a   .?m?D .U?.?,.?,. k .y `k SDy S.?,S,d.?,!S, .?,?S%.?,. aSS\- ::$R\RH\wR*. .aR| z m%.?m,"6.?m| ?,.?D ?, z I.R$.aR6.=,6.=,6.=, M gLMt4L!Ia!_333?= T>a!5333?= 6?,333?a![333?=a!L333?=::$a  #L?a<" @jw*! 6 6 6a w* ! 6 6 6a  #L?a<" @w*! 6 6 6 L!$%6T 6?-L!$a!`333?=::$a  #L?a<" @w*! 6 6 6 MY H6MNT ZN6ZTZMT5?a!0333?=TNY Ta!e333?=a!_333?= M HX Mnt1>a!a333?= 36?, 333?a!N333?=:a #L?a<" @1w:*: :!: 6: 6: 6: wX !$%6[ 6?-X !$a!\333?=:a #L?a<" @uw:*: :!: 6: 6: 6: >a!T333?= tV H6tu[ pu6pfpt$f5?a!T333?=lfuV Zfa!a333?=la!`333?= M @i~qN|aO}bM{`Gz\@zX?yW>xVzW=yWv>u=v>u=t<u=u;t:v;u:u9 t8 u: v8 u9 u7 t6t5s4t5t4s3s4r3s1R#T#U$V%V$W%X&['\(`(b)c*g-h-j-l.m.n.o/p0s1s0d}oc~oY{hZ|iN|cK{aGz^AzZ?yYuBvAu>v> t< u;t9t4Y'])_*d,f-h.j/k/m0o1q2r2s3j}sk~tlui~sh}rg~rf}qQ{e~}~r~xp~wqxm}un~vowl~umvV{hs~ytzy}x|w|v{{M uGdXY 9M M M M M nJy4Jn IXP-a!B̌?]a!:̌?XJ@?X#XJ@-a!B ?-a!: ?fXn ?%E-a![ =?ca!c =?-a!Z =?a!Y =? M |U d&r*a!&̌?bU- w*a!y̌?ba!&̌? M s w@XM -P(:%-2:&-3:,-3:,-+-::$D-.::$::$+-::$((a/! #(e v 9we *ae   a/!%w.*.. w.*..@a  կ#?.*a/!.-.-'.Iw*a/!~.,d.,P., a/!^.,ZLa/!] .,Z. ,a/!N  -M. a/!J  -G. a/!C a/! . ,F.. ......... .   '( M { M M ZM M pM M ^i/sa/!^ { a c  {  p .  v!s'a/!Ha/!W#|qV,plant$h.h.h.~a/!Zr. *r*. '@::$a/!La/!ea/!^a/!ea/!ia/!ba/!Z$la/!.*W U a/!\  -a/!X.a `   r. . dGr. . e r. . c r. . a r. . P +r. . f dr. . n r. . q r. . m  r. . `. aP a/!\r. {-A. . r. -l. . Jr. 1-@. J. r. -G. . r. -M. . [r. B-{. [. r. -h. . r. -B. . lr. S-]. l. r. . r. r. . P r. r. . 'W 'a/!S a/!a  a/!] ' r  olweapons.OSPulseGun( r  olweapons.osShockRifle('v r T -A olweapons.OSPulseGunt  olweapons.olstinger( r  -l botpack.SniperRifle  olweapons.olRifle(= r  -@ botpack.ripper;  olweapons.olrazorjack(x r  olweapons.olquadshot( r  -G botpack.Minigun2  olweapons.olMinigun(> r  -M botpack.Enforcer<  olweapons.olautomag( r  -{ botpack.UT_Eightball  olweapons.olEightball( r  -h botpack.UT_flakcannon  olweapons.olFlakCannon(x r Y -B olweapons.osShockRiflev  olweapons.olasmd( r  -] botpack.UT_BioRifle  olweapons.olgesBioRifle(r  olweapons.oldpistol('na/!`|V. UnrealShare.Pickups.AmmoSnd. .-'ha/!x a/!s . ';a/!u ,. $, . $. 'a/!X ,. $,. $. 'a/!k ,. $,. $. 'Da/!| , . $%. $'a/!Z ,. $,. $. 'a/!@%. $,. $. 'fa/!,. $,. $. ''a/![ a/!t -B botpack.ShockCore(a/!N -{ botpack.RocketPack(:a/!T -A botpack.PAmmo({a/!G -@ botpack.BladeHopper(a/!c-l botpack.RifleShell(a/!L a/!c-l botpack.bulletbox(ha/!E a/!`-h botpack.FlakAmmo(a/!`-h olweapons.OSFlakshellAmmo(wa/!| a/!d #r*;-M botpack.MiniAmmo(w-G%. $,. $'/a/!d-M #r*-M botpack.EClip(/-G%. $,. $'la/!H -] botpack.bioammo('a/!da/!^. 'a/!~. 'a/!y '8a/!\ -W Botpack.UT_JumpBoots(a/!~ a/!X -E Botpack.UDamage olweapons.osamplifier(a/!l a/!j  olWeapons.OsDispersionpowerup(Ga/!A -X Botpack.ThighPads(a/!O -z Botpack.HealthPack(a/!Y -[ Botpack.Armor2(r -R Botpack.MedBox(a/!D a/!ka-S olweapons.osUT_ShieldBelt olweapons.osShieldBelt(a/!k-S olweapons.shieldBeltpower olweapons.ospowershield('h $' M qM M Zb$k[. l[-I[6UA-'-$$f(B6UA6Cf6Cf6Cf@[?,,a6vA'-($6UH-'$6=,6$6$#[?,?, rI*I-a6vH'-($M,iM_{6vMg!6UMgaTESTBN o,, G , E %DMgo6hMg!C6$6$6$6$6$6$ @?k?oa6vMg(G _N AE M M wR R5T333?Er*?,a&!aR Ra&!HR  M cb64J333?@r*?,a!aHa!H M aM M M M pt rG2Nw*;---(a*J6J%6J%a+J%::$-ka  "@-kRk$-a Y Pt %a ^ Pt o$a'(( M P|2R*::$-pa kT::$-^a ~u::$a  -{ -B-z -A-y -@-x -h-v -G-u -{-t -l-o -E-n -X-m -[-l -M-k -S-` ' Ec """"*q~v* ""DQ M "@󖖖򖖖򖖖ɤطɖ幛ŻȩɖİĶŮǷ򖖖זν۬룖򖖖󖖖ܨמȮĥ󖖖Ź󝢢佶ٿ򯖖򠘖Ƭ߷ŹȹӲȲǚŽǪ۩ϱ󨶯ɞűѼ򖖖­Ͻ̳򖖖󖖖Ԗ٢ɶŹζ򡶩󖖨а򖖖ͪ󖖖Øʫ꽻̮굤ϳն󞜫ޤ󝶫ջᚖϹ󝝞훪߮شڶɯʹڽد¯ֵĨ齜򖖞›ƷֽǯΠϨǶǩ󖖖󖖖ήῲű߸г̹ᅳǽл󘞿󖗶η¶ְ¯Ѳݷڻ۵Ƿ򖗜ǻݳɹĭȳŶɵȳԷѩ󖖖δۿ󖖖жƬ򣝖򨣖ȶɵ޵󣖖ܿ򥪪ĨѼ򢖖ĩѹެ󖖘ɲ󞖖󢥝ȶȰ󘝠Ľ򗖘󖖖󘗘±Ĭ򖖖򖖖󘣥ӿ򖖘󘖖󖖖󖖖ȶǫ򖖖ճ؛Ƚŷ򖖖շй󖖖ͳڹ󖖖ݻλ̷󖖖Į¿򖖖׹򖖖󖖖½ѵ˚򖖖ƛ벖ɟ򖖖Κ򖖖󖖖򖖖Ŷ󖖖󖖖δģµڽɵ󖖖ǹķ򢛠ǽ̻Ϸƹӹнij򘖖ȷخඩŻͻɲ򖖖¹򖖖󖖖Ͻ򖖖ճǽŷɷǻϽ򢚱Ȝ򖖖›󖖖ٿ󖖖򖖖򖖖2@@򖖝򝶳Ңֵ򖖖áв󖖖Ĝҫ㶯Ü㵧ߤ򖢸ϱ㵞ߢ򖖖ÚǜǮĶçûě򥥞򖖖߷Ң㹚񴖖빿쮸ǚśҚ㱥򖖖㥫ծҫߞӶ㯞Ģ¥ɢ˜󝽨ņ̀򜛘ӯɜ򖖖ŨԱ­ߴ󖖖󖖘򘢨򖖖򡡢㱤򖖖Ļ̿ڻ򖖖ǰ򘝘߹ȷ㫶İ󘘖Öűî򖖖򖖖򖖖ʰ򖖖㳢б£ǹ󖤧򞤨̹з򖖖ıϻ򖖖ǜ󖖖@@6@򖖖򖖖򖖖򖖖ê򖘨ئ߶ߨ㱤öҠè㛪򛶢㡖쬞㣞㧢ʤȸ򢫮ø򖖞Ү򘘖ҷȫ򖖖Þ߻򖖖зı¨󖖖򖖖 7@㸳ߪ񫖖ҞŜýÛM8@Û㘖򝖖l888M V-U ::$ EveryThing Notify Initialized/a0 -~:-:$-a/!H9-a/!W#|qV-,plant:-:$-a/!L-a/!e-a/!^-a/!e-a/!i-a/!b-a/!Z-$-a/!\-a/!Xr.-*.-a ` - - 10 M }0m .:0:$0a/!H90a/!W#|qV0,plant:0:$0a/!L0a/!e0a/!^0a/!e0a/!i0a/!b0a/!Z0$0a/!\0a/!Xr.0*.0a ` 0 0 0  M IM M rM M f~z+/!F!Z-:!'!^-W!J!c-t!N!X-!Ia&!I<-!Ha&!H<--a%!P2a%!B !U !I ?,a&!6 ף<-a&!8 ף< M [n Dkw.*:-Hq s ^.-E 6.-r.*w.*.a..3w.*. h gg. Z %K , Aw6 **6 - -$f6 'fl-~6 ?%6 [6 &6 tj6 tk6 3a6 6 6 6 6 4F6 6 6 b(6 f6 =?6 6 a6 (A-~6 ?%6 [6 &6 tj6 tk6 3a6 6 6 6 6 4F6 6 6 $6 =?6 6 a6 ( n$b6=,6=,6=, OBIw* n9?" $V??,V?,:&a CBCB$V??,V?,4 ?$ M }M M sM M FM M fM M NVNa!h>> M uO_eV6vO6vY6UO6UY6WO6WY6hO6hY M M M KYeM m l >,::$a  Pm m U M @||w~xtv[}dmrg|mf}m_iwzt}wu~xvyY|eV}cT{aR|`Pz^Q}`O{^G|YEzWtxp~uqv`~k^|i]{hL|]Jz[CzV={S;yQ7xN8{P4yM1xK/yJ,xGMm(x,m}soul|rmtj|qj}qk~rf{nc~m`{j^yh^~j[}hZ|gXzeVycY~gW|eV{dU|dS|cUeR{bQzaS}cQ}bO{`Nz_L|^Jz\Iy[@rSE|ZCzXE~[G]ByWD~ZB|X>uS@zV?yU>xT=wS:tP={U>~V7qM9uP;yS:xR;|T9yQ9zR7xP6wO7|Q8T3xM4{O.oG2yM2|N1zM/vJ0yL1{M0zL*oD-wI)nC+uG-{K+wH,zJ-}L+|J(xG$m@(yG)|I&vE&yF(I%xE"sA&I!xB zBp=x@v>n8w<k2u7 e, u2t/t-78:;<=>?@CGHJLOQS TU V!X"Y"\#]$_$a%b$c&f'h(i'j)p+r*y~{z|hqe|nf}oe~oc|mb{l`|ka}lO}bLz^J}_J}^I|]H{\FyZGz[ExYzW<c~oY{hf}q{}|}~|~{}p~wiwpk}ttzM HOint\B=r\*\gB=r\* C DOO?@O?OB?O?,O?,Y, , &B- OOa AA?B?B@B@O?C ,  M OYM V aL>( M QYM V aL>( M T? kTi::$l a l $ M hE l.-(..- '..q{ Custom{ V   ..(V BBHCHCj.. BBHCHC E\"@"@"@"@*EmU* "=t M H[@@......................................................................................................................................................................................................................................................................................................................................................................................................7@C@9....................2222.........................ǽՌtkmpihieWH?2....`ԿvK................4DúގsW=..Buλލn@...............?pvk˺ӎd=.RûፁP2...............Hއؿa2/hǾwR...............UɸтDȻqQ...............@s̵׻R=|}û⋃c...............7K۷׸V2AWSVu¹c7..............2fǷ˰6O.@xμu]..............7kʷŮ΃E..={·ýj@................=Rmȵd9.f׳a:....................D_oʽȺjE.<{ͲnG8.....................2DTeø6wP72:B}ηP........................3?EIM\}Ⱥusɻx..........................228kg7..............................g࿯տχL..............................2L໫Ͱt4...............................JẨ޹T.............................2V㺦ʯi............................7ZẨç5wN9............................Zï51156~S...........................RӸ¢101сT4............................AmλyĦ1000001V.............................3Mnɿc`̩10000݁\A.............................Lb߂rӯ65005qV;...........................9Kκɰ55115އmTB2...........................:_ڽ|U@......................../[ȴ}O........................7Lθv@.......................>fݿʌU......................rչc....................2:Ivָg>:4...............8CMeֺe?]I..............3E\xнn7D]S:.............4Zن_=C2.............HxŽù܆^=9.............8ZɹƿƻwN@:.............>`߿ƽT=8............B`۾û̿c<2............>\õƾпvB..............9PͻѿL.............?lŽلdPJMXmɷT..............EmՊ]G>wþQ3...............@Ynxxr|͸r8...;pɴȃK3................4DHXtӈ].....aŮQ9...................MѻtN:......׳W.......................3dÿvZ......7xT9........................j~nfprfYK4......O¸eE.........................7I]nslU@CJNLF=........Sڄu_F3...........................3BHHB3.:3..........sxaMC@;2..................................................4LOE3..................................................................................................................................................................................................@@X_@...................................................................................................;FN>.........;BA...........l`yC........`M.........2Ⱥ{YSSSD..@}˳N.......2UyBa¯ׁ4.......?։Ѳ4ȷzC.......sᲙEfjļԉH.......Iʰͥ64j÷L.......IwʺȱfNs?..........C[p޾XXs³.............9gΩ;...............>ΠѢa..............EΟѷ>..............Dڮس156F..............lӺp005I...............4lȼۼ511sM3.............?ܳW...........p4..........>೟M2.......El۷S4U......y{GA......HԴƻĹi<......LϰĺԺ:.......4࿸ȂjjӴB........yѲF2.UųB........2Bsj2..AE............B{{pH..۴{A............[K;DB2....;s{jZ........................?7..................................... h`@..................42....72.....EsjBA7.M:...2ػE޺Z...9Ͻ]YO...HNӺD......jЭ4.......dĐ5].......Aΐs:......B....7jD...]j9...]Š7...RjUj.....2j]Y9.@j2............2...`@.2...EYI.FŔ]9..E...;@..Y2.YY°2..4DEF`EEEI@;YRE`R@RR`RM RVYM V3 -)\=+>  M XzM Y?::$ -pk ajO?,9(wk *r a ^ j?,OPOa Y j?,OPOv!? M jM M IM M fZd3%O36-a $?(zD? a $333?(HD? M @lt w{uzgr syryqxpwnvjtfrdqcpboao^n]m[lWiSgRgPfOeNeLdJbIbGaE_F`D_C^B^@]?\>\<[;Z:Y9Y6W5W4V3V2U1T/S.S-R,Q+Q*P)P'O&N%M#L"K!K J KIIIGGGFEDCBAAA?@ @ ? = =<;=;::99898     # $')+-/01245789:;<=>?@ACDEGIKLMOQRS U!W!Y"[#\#]$^$_$`%a%b&c&d&e'f'g'h(j)k)k(m*n*o*q+r,s,s+u-v-w.x.y.{/|/}0111223334455666788|~kuitZlYkUiVj ! &3z}v{~}M Wa# -R M _zM `?::$ -pj ar`?,9(wj *w a Y r?,`P`a ^ r?,`P`v!? M rM M M M aM M C ` b-C 6-6-(ErpB*a6--C  M ^a Z -R M t1,,,d,R% OldSkool.OSAExtraKeyBindings%{R{R t,2 ,dvR n%n,znv ,n%ppv,nv Lnv nv ,dntR) OldSkool.OSAExtraKeyBindingstu- '- '- ' uD?,i D?u?,(h D?,d@ ,R, -K '%,dnzn~,6n-K R, A . ?@ , ?R,?A nA &n&R,-K (. ?@ ?R,?h ?   %. ?i ?R?u?   -(- '- '- 'R,M ?R, `\C M gb@#O36-a $?(zD? a $=(HD? M a  k-M  ::$@?C,dBAA@?C,dBAAaAB M V M M }M M p UiB`<ga/!E a/!Qa/!b@?  M Su\ +5M pzq`!{V%z |  M Q@M M h M M jt7Pr ?%-w (3-w r r -w  M @[cL%jRed&jBlue,jGreen,jYellowL[ qSqS}S}L{P ,,L,tL:Q,|pL111,K pppq|1T_RQ%|q,skins.B.ppqT_:Qj VB.pppq|1T_RQ zwB*%[ BpTeam color not under S-AFppP t_RQ:Q,FppP t_RQFSE[%FppBT_:QjE%E,@wzE kQ K E[%pqtpqtE&E[%Sw.[*f|q,skins.|q,female.[.fcommandoskins.cMDo5Ivana c.[.UTtech2.Deco.xmetex2x1 w.ppqpt111,5 ww*.[wpno talktexture for S.[.@ r.[*|q,female.[.fcommandoskins.cMDo5Ivana .[.UTtech2.Deco.xmetex2x1   M |t?DT333?Er*?,a&!IL?Ra&!HL? M @!!11!!!11)991ZR)ZR1޽)!1)91{k9JB)kcJks{B9!cZBޭkZ1kƵ֭޵)!1)JB1RJ9kcRskZsZJ)cR1kZ9kޭZRBƵƥέ޽{sc!{c9B9)ƜcZJ{k9)cJ!kR)sZ1kBRB)ZJ1ƭ{kRֽΥ֭k޵sB1kcR9ƥsֵΜ֥sZ{ƵֽR9ZB!cJ)J9!kR1sZ9{cBkJsR{ZkZBcks{ƭ{cεֽƥέֵc9Z֭{ksέֵ޽ƜΥ֭)!罌JB9kcZB)J11!9)ZB){Z9cJ1cBkJkR9csR{ZlΥ{RB1c{cJ֭kkR޵sZJ9罔sZ{Ɯƥ1)!έkֵs޽ƥ{scR91)έֵ{kZƭεRJB)R9!!B1!J9)sZBcRB{ckZJsc{kcZRcBkJƔkckޭt֭Z9sR9cJkRsZƜ{s罜{ƥB){ZBZB1cJ9{c{cRs޽{1J1!{R9R9)cJkRsZkRBΥsc{k1!{cƜR99)!cRZJB)sRB{ZJB1)J91sk{RBR91cJBkRJ)1!!9))J991))!!!M ev f3 -( M s``o i`%:``%`%``%g`,[GpKEYNAME S``[]{[OGpKEYBINDING []{Oz~O z|Oztaunt|Ozgetweapon |Ozviewplayernum|Ozbutton|Ozmutate|Ozstat|OzspeechOOzd%]dS|dO{dNone1d%d`SSd%d`d`A M PT)4a&!j> M x// ============================================================ // oldskool.EverythingNotify : for co-op. runs tests client-side // The main oldskool package. // Holds the mutators, singleplayer game, windows, Unreal I models and mappacks. // ============================================================ class EverythingNotify expands SpawnNotify; function prebeginplay(); //don't call parent! (screwed up) simulated function PostBeginPlay() { local actor other; if (level.netmode!=nm_client) //mutator works on server. return; Super.PostBeginPlay(); //add. log ("EveryThing Notify Initialized"); ForEach Allactors(class'actor',other){ //mask. if (other.style==STY_NORMAL&&(other.IsA('decoration')&&((other.isa('tree')||left(getitemname(string(other.class)),5)~="plant"))||(other.role==role_authority&&other.isa('pawn')&&(other.isa('skaarjwarrior')||other.isa('krall')||other.isa('warlord')||other.isa('bird1')||other.isa('Slith')||other.isa('manta'))))) Other.Style=Sty_masked; if (other.IsA('scriptedpawn')&&!other.isa('tentacle')&&pawn(other).shadow==none) //no decal for them. scriptedpawn(other).Shadow = Spawn(class'olpawnShadow',other,,other.location); } } simulated event Actor SpawnNotification(Actor other) { if (other.style==STY_NORMAL&&(other.IsA('decoration')&&((other.isa('tree')||left(getitemname(string(other.class)),5)~="plant"))||(other.role==role_authority&&other.isa('pawn')&&(other.isa('skaarjwarrior')||other.isa('krall')||other.isa('warlord')||other.isa('bird1')||other.isa('Slith')||other.isa('manta'))))) Other.Style=Sty_masked; if (other.IsA('scriptedpawn')&&!other.isa('tentacle')&&pawn(other).shadow==none) //no decal for them. scriptedpawn(other).Shadow = Spawn(class'olpawnShadow',other,,other.location); return other; } M k~ .95a!333?L> M i// ============================================================ // oldskool.DecalNotify : Disables timer on decals, thus preventing their destruction. are bgamerelevant. // The main oldskool package. // Holds the mutators, singleplayer game, windows, Unreal I models and mappacks. // ============================================================ class DecalNotify expands SpawnNotify; simulated event postbeginplay(){ if (level.netmode!=nm_client||class'spoldskool'.default.PermaDecals) super.postbeginplay(); else destroy(); //useless on clients that have decals false. //log ("OSA Blood notify initialized:"@!bdeleteme); } function prebeginplay(); //don't call parent! (screwed up) simulated event Actor SpawnNotification(Actor A) //put in olbloodburst. { if (class'spoldskool'.default.PermaDecals&&A.class!=class'pock'){ A.disable('timer'); A.bstasis=true; //doesn't change :P } return A; } M y2V |2?t?vh-m2 h?S 22b2 ?2?,2?,r * 2  ?'2?,; ?2?,m ?,d2?, ?, 2?, ?%2?, ?2?,: ?2?,o ?|2?, ?2?,2aSD (-m2S  M t{@ R D?,g D?R ?,f D?,de , 7%77?R ?7?g 7?f ?7?e 7U7%7%7%7_7%7771pp777 M |M M }M M R M M Z// ============================================================ // oldskool.OldSkoolScrollKeys : // The main oldskool package. // Holds the mutators, singleplayer game, windows, Unreal I models and mappacks. // ============================================================ class OldSkoolScrollKeys expands UWindowScrollingDialogClient; M w M M LA`GwB*Ba?- -t  M oB_!  M M M X// ============================================================ // oldskool.OldskoolScrollGOp : // The main oldskool package. // Holds the mutators, singleplayer game, windows, Unreal I models and mappacks. // ============================================================ class OldskoolScrollGOp expands UWindowScrollingDialogClient; M M M V// ============================================================ // oldskool.OldskoolScrollSP : // The main oldskool package. // Holds the mutators, singleplayer game, windows, Unreal I models and mappacks. // ============================================================ class OldskoolScrollSP expands UWindowScrollingDialogClient; M BS 1dS D @T D?,?S ,yD?,?T VD?,,_D?V,\CBH,2. ?T ,@?H?S ,@?>@&9?   %H,. ?_?H?V?>@&>?.+   %H,A. ?_?H?V?AShow talktextureA^ If checked, the talktexture of players will appear in the HUD, when messages are sent.A%A-.-DH,B. ?_?H?V?BUse Real CTF skullsBM If checked, the skulls from the Unreal Mod, 'Real CTF', will be used.B%B-.-mH,e. ?_?H?V?eShow Frag counteT Do you want the frag count to display on the HUD in Single Player and co-op?e%e-.-Ea/!Ke+ M JPcDfw.P*.P-D..P f wD*D,v!?NDIU.Pw*r.PPw*r.P|r*.P}!d.Pd%** M Z// ============================================================ // oldskool.OldskoolScrollMain : // The main oldskool package. // Holds the mutators, singleplayer game, windows, Unreal I models and mappacks. // ============================================================ class OldskoolScrollMain expands UWindowScrollingDialogClient; M nx jK<L>K=K?, s K ax (K<?K=K?, s K aSy ( M V9y!Ea*a!R>- ' M \// ============================================================ // oldskool.OldskoolScrollAbout : // The main oldskool package. // Holds the mutators, singleplayer game, windows, Unreal I models and mappacks. // ============================================================ class OldskoolScrollAbout expands UWindowScrollingDialogClient; M Et } a i w Pu 3-} R-mE !} t ,d-'q!M  t uw u E  M NM M M M FP@M rd D @c D?,?d ,xD?,?c uD?,,VD?u,?u,<?B?V,<?u?B?VuD?,,VD?u,e?VB?VA?V M QM M RM M d M M AT?/{-h ::$::$r*w%*a/!ea!z(-a!P bt-h 'a ף=(p   p  vN- g::$ a/!\!N   #=={ aw z  #C (r{ * a w a+Pz -_ 6-6-(p A#==6--_   M { M M zalr Z  .w*@%@,J@J %a aJa!aJR la3a?,?,JaaJ(a3R a?,?,JaaSDJ(@<6a=,6a=,6a=, M \// ============================================================ // oldskool.OldskoolScrollMusic : // The main oldskool package. // Holds the mutators, singleplayer game, windows, Unreal I models and mappacks. // ============================================================ class OldskoolScrollMusic expands UWindowScrollingDialogClient; M @1++">9 "8 > `r 08@HP/ $2 > , + & C9 J 1 7C 1 FL< U!3*;B;7-K# @H(% 6I"0"T- h@b9[4 uCJ)L)uK2<#["C, Q3 {TYR7nJX7(j+C09'Z< I0jNtTK6yTjID.0f% `H*X@bF8(S; 9(N67&hPeMy`!u\R?@0A0!XHoXP@y`H8v6)~97q`!x)`P90 XHKxh o"hXp``PH@%  . ! + "#0)# B '% !3 ) ! A) 28$ 1 ; M * T 3' 5 ? ' 8<. . :5 1 "  & 5 5 . H2 #A = E -> "! 3 D 9 @) : 2B %7 9 F &1 ? ]xL 29[ AH- 9) A W E B 6R+ ' 5 J D<B(5M OTkja D @` D?,?a ,RD?,?` U D?,,vD?U ,TqpavU ,.+%T?aB (#.+&T?aB (e.+,T?aB (.+,T?aB (.+,T?aB ((.+,T?aB h%T?v, @ &T?v, @ ,T?v, @ *,T?v, @ k,T?v, @ ,T?v, @  M y// ============================================================ // oldskool.KeyBinderOpener : For the purpose of ONP. Will allow the keybinder to be accessed in the future when changed. // The main oldskool package. // Holds the mutators, singleplayer game, windows, Unreal I models and mappacks. // ============================================================ class KeyBinderOpener expands Object; static function OpenBinder(playerpawn p){ local OldSkoolPagesClientWindow opcw; WindowConsole(P.Player.Console).LaunchUWindow(); if (!WindowConsole(P.Player.Console).bcreatedroot) //odd that this occured, but I must generate root WindowConsole(P.Player.Console).createrootwindow(none); //make menu: opcw=OldSkoolPagesClientWindow(uwindowframedwindow(WindowConsole(P.Player.Console).Root.CreateWindow(class(DynamicLoadObject("oldskool.OldskoolConfigWindow", class'class')) , 100, 100, 200, 200)).clientarea); //log ("Page seems to be:"@OPCW.Pages.GetPage("Keys")); OPCW.Pages.GotoTab(OPCW.Pages.GetPage("Keys")); } W" " " " *: *K "Á] M @ ) ٨W[bQ92 —  AxrpVI"è #Nhmmi\87]iC ž⩩%IrlI8⾳Ԩϳ!]t|O<ٞöUtF]K"㺞 !:Nnx\Oٵ͵Ě*Ab]~pgMI7"տĚ1E[tuUs~UUk[S7'٨*CkjjmJFajTB' =\jLFhsFL`P7、(KgU|Jug8ʻ&>klms|O4*>aYuusnhmF`G+ڵ 5>YooxzqY4㳧,8T[{~b@%ǟ*KYo}~nw[Y8޾ 6K`nwv`<'HJZfxvZJ?ٯֹ ;HJxnx|F۾ײ8aUaRnppfhuH̽ո$QB'$fdngO>?>Ĕؼ/Vb3-_wvy_:8,4>/1+8:;IV?N̴PS?S>DCIF>//;>VS?SⲒO[\JX"A??VFR;S""SZP˱XW`@@@^VRIJTTZ_N̲̯G]b ZI_ ]Oab’ϹGJ HM Ą˾ι#D?ZT@TA@TTXE/͵EF>>RJb@bV;RRI6ƅǾιEIEIE^bJIYIRUě6Y>KLb JIEE6›λAHKL@ZTJEJ=ģ͹UYFS?F& ąMUFVS<\ĔOHQ&ģϻQHH“ͻSU]=SS@ąλJIF==SESTĒϹKIVJJSEK?KKFFFVKK M M M MKA'66o$ YeQ _{%]xW> YR@G/T2> YR@G/T2> YR@G/T2> YR@G/T2o Mb;mI(b;mI(M M r// ============================================================ // oldskool.GreenBloodSplat : Uses Alcor's green blood decals // The main oldskool package. // Holds the mutators, singleplayer game, windows, Unreal I models and mappacks. // ============================================================ class GreenBloodSplat expands olBloodSplat; #exec TEXTURE IMPORT NAME=GreenSplat1 FILE=TEXTURES\GreenSplat1.PCX LODSET=2 #exec TEXTURE IMPORT NAME=GreenSplat2 FILE=TEXTURES\GreenSplat2.PCX LODSET=2 #exec TEXTURE IMPORT NAME=GreenSplat3 FILE=TEXTURES\GreenSplat3.PCX LODSET=2 #exec TEXTURE IMPORT NAME=GreenSplat4 FILE=TEXTURES\GreenSplat4.PCX LODSET=2 #exec TEXTURE IMPORT NAME=GreenSplat5 FILE=TEXTURES\GreenSplat5.PCX LODSET=2 #exec TEXTURE IMPORT NAME=GreenSplat6 FILE=TEXTURES\GreenSplat6.PCX LODSET=2 #exec TEXTURE IMPORT NAME=GreenSplat7 FILE=TEXTURES\GreenSplat7.PCX LODSET=2 #exec TEXTURE IMPORT NAME=GreenSplat8 FILE=TEXTURES\GreenSplat8.PCX LODSET=2 #exec TEXTURE IMPORT NAME=GreenSplat9 FILE=TEXTURES\GreenSplat9.PCX LODSET=2 #exec TEXTURE IMPORT NAME=GreenSplat10 FILE=TEXTURES\GreenSplat10.PCX LODSET=2 M V// ============================================================ // oldskool.OSAExtraKeyBindings : A simple class to allow extra bindings into the OSA bindings window // The main oldskool package. // Holds the mutators, singleplayer game, windows, Unreal I models and mappacks. // ============================================================ class OSAExtraKeyBindings expands UTExtraKeyBindings; M X_ Y\_ ] ] $_ 4d EP  ~A.-DA- B.-mB- e.-Ee-   M \p Xv&-cp - M AM M bd/.+D M x&// ============================================================ //oldskool.oldskoolaboutclient: About this mod! //The main oldskool package. //Holds the mutators, singleplayer game, windows, Unreal I models and mappacks. // ============================================================ class OldSkoolAboutClient expands UMenuPageWindow; //write text: function WriteText(canvas C, string text, out float Y, optional string TestTEx){ local float W, H; if (testtex=="") testtex=text; TextSize(C, TestTex, W, H); Y+=H; ClipText(C, (WinWidth - W)/2, Y, text, true); } function Paint(Canvas C, float X, float Y) { Super.Paint(C,X,Y); //Set black: c.drawcolor.R=0; c.drawcolor.G=0; c.drawcolor.B=0; C.Font=root.fonts[F_Bold]; Y=5; WriteText(C, "OldSkool Amp'd 2.38", Y); Y+=8; WriteText(C, "By UsAaR33", Y); Y+=5; WriteText(C, "and much code and skins by Psychic_313", Y); Y+=5; C.Font=root.fonts[F_Normal]; WriteText(C, "Special Thanks to:", Y); y+=5; WriteText(C, "Preacher: Hosting my WebSite", Y); WriteText(C, "The Renegade Master: Creating my WebSite:", Y); WriteText(C, "&H&T&T&P&:&/&/&w&w&w&.&u&n&r&e&a&l&i&t&y&.&d&k&/&u&s&a&a&r&3&3", Y,"HTTP://www.unreality.dk/usaar33"); y+=5; WriteText(C, "The Real CTF team: Many Skins", Y); y+=5; WriteText(C, "Nemo_NX: Consistant", Y); WriteText(C, "support thoughout this project", Y); y+=5; WriteText(C, "Antonio \"NetDevil\" Cordero:", Y); WriteText(C, "UTPT for mesh extraction", Y); y+=5; WriteText(C, "Bane: Akimbo automag code", Y); y+=5; WriteText(C, "Hellscrag: Music Description", Y); y+=5; WriteText(C, "DrSin: Hosting Forums", Y); y+=5; WriteText(C, "Mongo: Ever wonder why he is on", Y); WriteText(C, "almost every mod's credits list?", Y); y+=5; WriteText(C, "EzKeel and Cerr:", Y); WriteText(C, "Support and testing for Legacy", Y); y+=5; WriteText(C, "DavidM: \"Where are the scripts?", Y); WriteText(C, "Give me the scripts, dammit!\"", Y); y+=5; WriteText(C, "All of my beta testers, and anyone", Y); WriteText(C, "else who somehow contributed to OSA.", Y); y+=5; WriteText(C, "Epic Megagames and Digital Extremes:", Y); WriteText(C, "without &t&h&e&m &y&o&u wouldn't have UT :0", Y,"without them you wouldn't have UT :0"); c.drawcolor.R=255; //reset c.drawcolor.G=255; c.drawcolor.B=255; DesiredWidth = 220; DesiredHeight = Y+13; } M M M LW// ============================================================ //OldSkool.OldSkoolCustomizeClientWindow: Key bindings are easier when seperate //The main oldskool package. //Holds the mutators, singleplayer game, windows, Unreal I models and mappacks. // ============================================================ class OldSkoolCustomizeClientWindow expands UTCustomizeClientWindow; function Created() //ripped from utcostomize. used right now for ONP { local int NumBindingClasses; local string NextBindingClass; local class BindingClass; local int ButtonWidth, ButtonLeft, ButtonTop, I, J, pos; local int LabelWidth, LabelLeft; local UMenuLabelControl Heading; local bool bTop; for (i=6;i<100;i++) //hack. (defaults wouldn't work right AliasNames[i]=""; i=6; NextBindingClass = GetPlayerOwner().GetNextInt("OldSkool.OSAExtraKeyBindings", 0); if(NextBindingClass != "") { while( (NextBindingClass != "") && (NumBindingClasses < 50) && (i < ArrayCount(AliasNames)) ) { BindingClass = class(DynamicLoadObject(NextBindingClass, class'Class')); for( j=0;j= ArrayCount(AliasNames) ) break; } NumBindingClasses++; NextBindingClass = GetPlayerOwner().GetNextInt("OldSkool.OSAExtraKeyBindings", NumBindingClasses); } } bIgnoreLDoubleClick = True; bIgnoreMDoubleClick = True; bIgnoreRDoubleClick = True; Super(UMenuPageWindow).Created(); SetAcceptsFocus(); ButtonWidth = WinWidth - 140; ButtonLeft = WinWidth - ButtonWidth - 40; LabelWidth = WinWidth - 100; LabelLeft = 20; ButtonTop = 10; bTop = True; for (I=0; I<100; I++) { if(AliasNames[I] == "") break; j = InStr(LabelList[I], ","); if(j != -1) { if(!bTop) ButtonTop += 10; Heading = UMenuLabelControl(CreateControl(class'UMenuLabelControl', LabelLeft-10, ButtonTop+3, WinWidth, 1)); Heading.SetText(Left(LabelList[I], j)); Heading.SetFont(F_Bold); LabelList[I] = Mid(LabelList[I], j+1); ButtonTop += 19; } bTop = False; KeyNames[I] = UMenuLabelControl(CreateControl(class'UMenuLabelControl', LabelLeft, ButtonTop+3, LabelWidth, 1)); KeyNames[I].SetText(LabelList[I]); KeyNames[I].SetHelpText(CustomizeHelp); KeyNames[I].SetFont(F_Normal); KeyButtons[I] = UMenuRaisedButton(CreateControl(class'UMenuRaisedButton', ButtonLeft, ButtonTop, ButtonWidth, 1)); KeyButtons[I].SetHelpText(CustomizeHelp); KeyButtons[I].bAcceptsFocus = False; KeyButtons[I].bIgnoreLDoubleClick = True; KeyButtons[I].bIgnoreMDoubleClick = True; KeyButtons[I].bIgnoreRDoubleClick = True; ButtonTop += 19; } AliasCount = I; NoJoyDesiredHeight = ButtonTop + 10; LoadExistingKeys(); DesiredWidth = 220; } function WindowShown() { Super(UMenuPageWindow).WindowShown(); Root.bAllowConsole = False; } function LoadExistingKeys() { local int I, J, pos; local string KeyName; local string Alias; for (I=0; Ia% $u=jD33>a% $u=D?a $u=DL?a $u=a $u= M n // ============================================================ //The main oldskool package. //Holds the mutators, singleplayer game, windows, Unreal I models and mappacks. // ============================================================ class olBloodSplat expands BloodSplat; simulated function AttachToSurface() //fog zone hack (note that this code cannot be compiled normaly) { local bool oldfog; oldfog=region.zone.bfogzone; region.zone.bfogzone=false; //ignore fog zone when attaching. (decals don't work in fogzones) if(AttachDecal(100) == None) // trace 100 units ahead in direction of current rotation Destroy(); region.zone.bfogzone=oldfog; } M i // ============================================================ //oldskool.olslithprojectile: addded in OSA 2.20 finally. like slith decals? //The main oldskool package. //Holds the mutators, singleplayer game, windows, Unreal I models and mappacks. // ============================================================ class olSlithProjectile expands SlithProjectile; auto state Flying { simulated function HitWall( vector HitNormal, actor Wall ) { if (level.netmode!=nm_dedicatedserver) Spawn(class'ODbiomark',self,,Location, rotator(HitNormal)); super.hitwall(hitnormal,wall); } } M in pw%   Z!O O::$la!Z333?)\=Wa!Ynn::$l M r // ============================================================ //The main oldskool package. //Holds the mutators, singleplayer game, windows, Unreal I models and mappacks. // ============================================================ class OlUTBloodPool2 expands UTBloodPool2; simulated function AttachToSurface() //fog zone hack (note that this code cannot be compiled normaly) { local bool oldfog; oldfog=region.zone.bfogzone; region.zone.bfogzone=false; //ignore fog zone when attaching. (decals don't work in fogzones) if(AttachDecal(100) == None) // trace 100 units ahead in direction of current rotation Destroy(); region.zone.bfogzone=oldfog; } M rH// ============================================================ //The main oldskool package. //Holds the mutators, singleplayer game, windows, Unreal I models and mappacks. //olcreaturechunks. more decalz // ============================================================ class olCreatureChunks expands CreatureChunks; simulated function HitWall(vector HitNormal, actor Wall) { local float speed, decision; local BloodSpurt b; Velocity = 0.8 * (Velocity - 2 * HitNormal * (Velocity Dot HitNormal)); Velocity.Z = FMin(Velocity.Z * 0.8, 700); speed = VSize(Velocity); if ( speed < 250 ) { if ( trail != None ) { if ( Level.bHighDetailMode && !Level.bDropDetail) bUnlit = false; trail.Destroy(); trail = None; } if ( speed < 120 ) { bBounce = false; Disable('HitWall'); } } else if ( speed > 350 ) { if ( speed > 700 ) velocity *= 0.8; if ( Level.NetMode != NM_DedicatedServer ) { decision = FRand(); if ( decision < 0.2 ) PlaySound(sound 'gibP1'); else if ( decision < 0.4 ) PlaySound(sound 'gibP3'); else if ( decision < 0.6 ) PlaySound(sound 'gibP4'); else if ( decision < 0.8 ) PlaySound(sound 'gibP5'); else PlaySound(sound 'gibP6'); } } if (Level.NetMode != NM_DedicatedServer){ if (trail == None&& !Level.bDropDetail ) { b = Spawn(class 'Bloodspurt',,,,Rotator(HitNormal)); if ( bGreenBlood ) b.GreenBlood(); b.RemoteRole = ROLE_None; } if ((!Level.bDropDetail || (FRand() < 0.65)) ){ //from UT if (!bGreenBlood) Spawn(class'olBloodSplat',,,Location,rotator(HitNormal)); else Spawn(class'GreenBloodSplat',,,Location,rotator(HitNormal)); } } } simulated function Landed(vector HitNormal) { local rotator finalRot; local BloodSpurt b; if ( trail != None ) { if ( Level.bHighDetailMode && !Level.bDropDetail) bUnlit = false; trail.Destroy(); trail = None; } finalRot = Rotation; finalRot.Roll = 0; finalRot.Pitch = 0; setRotation(finalRot); if ( Level.NetMode != NM_DedicatedServer && !Level.bDropDetail ) { b = Spawn(class 'Bloodspurt',,,,rot(16384,0,0)); if ( bGreenBlood ) b.GreenBlood(); b.RemoteRole = ROLE_None; if ( !bGreenBlood ) Spawn(class'olBloodSplat',,,Location,rotator(HitNormal)); else Spawn(class'GreenBloodSplat',,,Location,rotator(HitNormal)); } SetPhysics(PHYS_None); SetCollision(true, false, false); } function SetAsMaster(Actor Other) //all { Velocity = Other.Velocity; if (carcassclass==class'NaliCarcass'){ Mesh=LodMesh'UnrealShare.NaliPart'; TrailSize=0.500000;} else if (carcassclass==class'SkaarjCarcass'){ Mesh=LodMesh'UnrealShare.SkaarjTail'; TrailSize=0.500000;} else if (carcassclass==class'TrooperCarcass'){ Mesh=None; TrailSize=0.500000;} else CarcLocation = Other.Location; CarcassAnim = Other.AnimSequence; CarcHeight = Other.CollisionHeight; } simulated function ClientExtraChunks(bool bSpawnChunks) { local CreatureChunks carc; local bloodpuff Blood; local bloodspurt b; local int n; If ( Level.NetMode == NM_DedicatedServer ) return; bMustSpawnChunks = false; b = Spawn(class 'Bloodspurt',,,,rot(16384,0,0)); if ( bGreenBlood ) b.GreenBlood(); b.RemoteRole = ROLE_None; if ( !bSpawnChunks || (CarcassClass == None) ) return; n = 1; while ( (n<8) && (CarcassClass.Default.bodyparts[n] != none) ) { if ( CarcassClass.Static.AllowChunk(n, CarcassAnim) ) { if ( CarcLocation == vect(0,0,0) ) CarcLocation = Location; carc = Spawn(class 'olCreatureChunks',,, CarcLocation + CarcassClass.Default.ZOffset[n] * CarcHeight * vect(0,0,1)); if (carc != None) { carc.TrailSize = CarcassClass.Default.Trails[n]; carc.Mesh = CarcassClass.Default.bodyparts[n]; carc.Initfor(self); carc.RemoteRole = ROLE_None; } } n++; } if ( Level.bHighDetailMode && !bGreenBlood ) { Blood = spawn(class'BloodPuff',,, CarcLocation); Blood.drawscale = 0.2 * CollisionRadius; Blood.RemoteRole = ROLE_None; } } state Dead //permanent. { function BeginState() { if ( bDecorative ||class'olCreatureCarcass'.default.PermaCarcass){ lifespan = 0.0; bstasis=true; } else SetTimer(5.0, false); } } M g// ============================================================ //The main oldskool package. //Holds the mutators, singleplayer game, windows, Unreal I models and mappacks. //GreenUTBloodPool2. simply uses bio textures. // ============================================================ class GreenUTBloodPool2 expands UTBloodPool2; /*simulated function BeginPlay() { if ( class'GameInfo'.Default.bveryLowGore ) //its green :P { destroy(); return; } if ( !Level.bDropDetail&&frand()<0.5 ) //well, 2 textures only! Texture = Texture'botpack.biosplat2'; } */ simulated function AttachToSurface() //fog zone hack (note that this code cannot be compiled normaly) { local bool oldfog; oldfog=region.zone.bfogzone; region.zone.bfogzone=false; //ignore fog zone when attaching. (decals don't work in fogzones) if(AttachDecal(100) == None) // trace 100 units ahead in direction of current rotation Destroy(); region.zone.bfogzone=oldfog; } M `LbTf wL! !5<?a&!bIa&! buh?a&!bua&!5b M h// ============================================================ //The main oldskool package. //Holds the mutators, singleplayer game, windows, Unreal I models and mappacks. //olbloodspurt. Decal support // ============================================================ class olBloodSpurt expands BloodSpurt; Auto State StartUp { simulated function Tick(float DeltaTime) { local vector WallHit, WallNormal; local Actor WallActor; if ( Level.NetMode != NM_DedicatedServer&&class'spoldskool'.default.busedecals) { WallActor = Trace(WallHit, WallNormal, Location + 300 * vector(Rotation), Location, false); if ( WallActor != None ){ if (Texture == texture'BloodSGrn') spawn(class'GreenBloodSplat',,,WallHit + 20 * (WallNormal + VRand()), rotator(WallNormal)); else spawn(class'olBloodSplat',,,WallHit + 20 * (WallNormal + VRand()), rotator(WallNormal)); } } Disable('Tick'); } } simulated function PreBeginPlay() //gore stuff for client { if( class'GameInfo'.Default.bVeryLowGore ) GreenBlood(); } M L `b-L 6-6-(ErpB*a6--L  M rw// ============================================================ //The main oldskool package. //Holds the mutators, singleplayer game, windows, Unreal I models and mappacks. //olcreaturecarcass. The creature carcass for all classes if blood decals mode is on. // Uses decals and thx to static functions makes use for all creatures. // used as a decoration, it would screw up. // ============================================================ class olCreatureCarcass expands CreatureCarcass; var class realcarcass; var Decal Pool; //blood pool var config bool PermaCarcass; //carcass does not auto-destruct? //permacarcass: function PostBeginPlay() { if ( !bDecorative &&!PermaCarcass) { DeathZone = Region.Zone; DeathZone.NumCarcasses++; } Super(Carcass).PostBeginPlay(); if ( Physics == PHYS_None ) SetCollision(bCollideActors, false, false); } //DEFAULTED CHECKS: //realcarcass check function Initfor(actor Other) { local rotator carcRotation; local int i; if ( bDecorative) { DeathZone = Region.Zone; DeathZone.NumCarcasses++; } bDecorative = false; bMeshCurvy = Other.bMeshCurvy; bMeshEnviroMap = Other.bMeshEnviroMap; for (i=0;i<8;i++) //NEED THIS! multiskins[i]=other.multiskins[i]; Mesh = Other.Mesh; Skin = Other.Skin; if (skin!=none) skin.lodset=lodset_skin; Texture = Other.Texture; if (texture!=none) texture.lodset=lodset_skin; Fatness = Other.Fatness; DrawScale = Other.DrawScale; SetCollisionSize(Other.CollisionRadius + 4, Other.CollisionHeight); if ( !SetLocation(Location) ) SetCollisionSize(CollisionRadius - 4, CollisionHeight); //if (pawn(other).isa('scriptedpawn')) realcarcass=class(scriptedpawn(other).default.carcasstype); //use default! bgreenblood=realcarcass.default.bgreenblood; //copy. bPermanent=realcarcass.default.bPermanent; lifespan=realcarcass.default.lifespan; DesiredRotation = other.Rotation; DesiredRotation.Roll = 0; DesiredRotation.Pitch = 0; AnimSequence = Other.AnimSequence; AnimFrame = Other.AnimFrame; AnimRate = Other.AnimRate; TweenRate = Other.TweenRate; AnimMinRate = Other.AnimMinRate; AnimLast = Other.AnimLast; bAnimLoop = Other.bAnimLoop; SimAnim.X = 10000 * AnimFrame; SimAnim.Y = 5000 * AnimRate; SimAnim.Z = 1000 * TweenRate; SimAnim.W = 10000 * AnimLast; bAnimFinished = Other.bAnimFinished; Velocity = other.Velocity; Mass = Other.Mass; if ( Buoyancy < 0.8 * Mass ) Buoyancy = 0.9 * Mass; if ( AnimSequence == 'LeglessDeath' ) //krall SetCollision(true, false, false); } function tick(float delta){ if (realcarcass==class'KrallCarcass'&&AnimSequence!='LegLessDeath') //fix up stupid krall col-height bug bReducedHeight = false; //fix this! Disable('tick'); } function CreateReplacement() { local CreatureChunks carc; if (bHidden) return; if (realcarcass==class'NaliCarcass'||realcarcass==class'SkaarjCarcass'||realcarcass==class'TrooperCarcass') carc = Spawn(class 'olCreatureChunks'); else if ( realcarcass.default.bodyparts[0] != None ) carc = Spawn(class 'olCreatureChunks',,, Location + realcarcass.default.ZOffset[0] * CollisionHeight * vect(0,0,1)); if (carc != None) { if (realcarcass!=class'NaliCarcass'&&realcarcass!=class'SkaarjCarcass'&&realcarcass!=class'TrooperCarcass'){ carc.TrailSize = realcarcass.default.Trails[0]; carc.Mesh = realcarcass.default.bodyparts[0];} carc.bMasterChunk = true; carc.CarcassClass=realcarcass; //set my static to this. carc.Initfor(self); carc.Bugs = Bugs; if ( Bugs != None ) Bugs.SetBase(carc); Bugs = None; } else if ( Bugs != None ) Bugs.Destroy(); } function GibSound() //statics. { local float decision; decision = FRand(); if (decision < 0.2) PlaySound(realcarcass.default.GibOne, SLOT_Interact, 0.06 * Mass); else if ( decision < 0.35 ) PlaySound(realcarcass.default.GibTwo, SLOT_Interact, 0.06 * Mass); else if ( decision < 0.5 ) PlaySound(sound'Gib3', SLOT_Interact, 0.06 * Mass); else if ( decision < 0.8 ) PlaySound(sound'Gib4', SLOT_Interact, 0.06 * Mass); else PlaySound(sound'Gib5', SLOT_Interact, 0.06 * Mass); } //crap for warlord: function AnimEnd() { if (realcarcass!=class'WarlordCarcass'){ super.animend(); return;} if ( AnimSequence == 'Dead2A' ) { if ( Physics == PHYS_None ) { LieStill(); PlayAnim('Dead2B', 0.7, 0.07); } else LoopAnim('Fall'); } else if ( Physics == PHYS_None ) LieStill(); } //some blood decal stuff simulated function Landed(vector HitNormal) { if (role==role_authority){ //I could do 1337 new net stuff, but nah.. if (realcarcass==class'WarlordCarcass'){ if ( AnimSequence == 'Fall' ) { LieStill(); PlayAnim('Dead2B', 0.7, 0.07); } SetPhysics(PHYS_None); } else if (realcarcass==class'tentacleCarcass'){ if ( AnimSequence == 'Dead1') PlayAnim('Dead1Land', 1.5); SetPhysics(PHYS_None); LieStill(); } else super.landed(hitnormal); }//normal carcass if (level.netmode==nm_dedicatedserver||!class'spoldskool'.default.busedecals&&realcarcass==class'tentaclecarcass'||region.zone.bwaterzone) return; //I can not see tentacles or water creatures having blood pools. if ( Pool == None){ if (bGreenBlood) Pool = Spawn(class'GreenUTBloodPool2',,,Location, rotator(HitNormal)); //mercs get this :P else{ class'olutBloodpool2'.default.drawscale=0.038*(collisionradius-4); //change drawscale to match size Pool = Spawn(class'olUTBloodPool2',,,Location, rotator(HitNormal)); class'olutBloodpool2'.default.drawscale=0.68;}} //reset else Spawn(class'olBloodSplat',,,Location, rotator(HitNormal + 0.5 * VRand())); } function LieStill(){ super.LieStill(); if (PermaCarcass){ bdecorative=true; bstasis=true; //save mem } } function Drop(vector newVel) //only ever called on tentacle { Velocity.X = 0; Velocity.Y = 0; SetPhysics(PHYS_Falling); } state Dead { function BeginState() { if ( bDecorative || bPermanent||PermaCarcass ) lifespan = 0.0; else { if (realcarcass==class'WarlordCarcass') return; if ( Mover(Base) != None ) { ExistTime = FMax(12.0, 30.0 - 2 * DeathZone.NumCarcasses); SetTimer(3.0, true); } else SetTimer(FMax(12.0, 30.0 - 2 * DeathZone.NumCarcasses), false); } } } //BLOODDECALS: function TakeDamage( int Damage, Pawn InstigatedBy, Vector Hitlocation, Vector Momentum, name DamageType) { local BloodSpurt b; b = Spawn(class'olBloodSpurt',,,HitLocation,rotator(Momentum)); //options can change. if ( bGreenBlood ) b.GreenBlood(); if ( !bPermanent ) { if ( (DamageType == 'Corroded') && (Damage >= 100) ) { bCorroding = true; GotoState('Corroding'); } else Super.TakeDamage(Damage, instigatedBy, HitLocation, Momentum, DamageType); } } simulated event destroyed(){ if (pool!=none) pool.destroy(); if ( !bDecorative&&!PermaCarcass ) DeathZone.NumCarcasses--; super(Carcass).destroyed(); } M _// ============================================================ //The main oldskool package. //Holds the mutators, singleplayer game, windows, Unreal I models and mappacks. //OlBloodFirst. Code ripped from utbloodhit for decal support // ============================================================ class OlBloodBurst expands BloodBurst; Auto State StartUp { simulated function Tick(float DeltaTime) { local vector WallHit, WallNormal; local Actor WallActor; if ( Level.NetMode != NM_DedicatedServer &&class'spoldskool'.default.busedecals) { WallActor = Trace(WallHit, WallNormal, Location - 300 * vector(Rotation), Location, false); //inversed. if ( WallActor != None ){ if (Texture != texture'BloodSGrn') spawn(class'olBloodSplat',,,WallHit + 20 * (WallNormal + VRand()), rotator(WallNormal)); else spawn(class'GreenBloodSplat',,,WallHit + 20 * (WallNormal + VRand()), rotator(WallNormal)); } } Disable('Tick'); } } simulated function PreBeginPlay() //gore stuff for client { if( class'GameInfo'.Default.bVeryLowGore ) GreenBlood(); } M f// ============================================================ //The main oldskool package. //Holds the mutators, singleplayer game, windows, Unreal I models and mappacks. //BloodNotify. This is used for adding blood decals to the unreali blood effects. // ============================================================ class BloodNotify expands SpawnNotify; simulated event postbeginplay(){ if (level.netmode!=nm_client||class'spoldskool'.default.busedecals) super.postbeginplay(); else destroy(); //useless on clients that have decals false. //log ("OSA Blood notify initialized:"@!bdeleteme); } function prebeginplay(); //don't call parent! (screwed up) simulated event Actor SpawnNotification(Actor A) //put in olbloodburst. { if (a.class!=class'OlBloodBurst'&&class'spoldskool'.default.busedecals){ a.bhidden=true; //don't want to risk destroying. if (level.netmode!=nm_client) a.remoterole=role_none; //why replicate? return spawn(class'olbloodburst',a.owner,a.tag,a.location,a.rotation); //copy :P } return A; } M eM M N/// ============================================================ // oldskool.olPawnShadow: By UsAaR33 (well, ripped from playershadow and modified :P // shadows for scripted pawns (not skaarj trooper though). // Why can't I use playershadow and update? It only works if the owner is a player. I still have yet to figure out what L is... // Unfortunately, lighting data is lossed making the shadows a little less 1337 :( // Psychic_313: unchanged. I don't know this stuff :-) // ============================================================ class olpawnshadow expands Decal; var vector OldOwnerLocation; //var vector offset; var float lastanimframe; //stasis check var bool timing; //check if timeing. simulated event PostBeginPlay() { drawscale=0.028*owner.collisionradius; //I'm basing this kinda on the playerpawn one :P if (owner.isa('ledino')||owner.isa('nali')||owner.isa('slith')) //too big on dinos, sliths and nalis! drawscale*=0.75; //if (owner.isa('ledino')) //offset=vect(-40,0,0); } simulated function bool CheckRender(){ local bool bRetVal; if (lastanimframe==0) bRetVal=false; else bretval=(lastanimframe!=owner.animframe); lastanimframe=owner.animframe; return bRetVal; } simulated event timer(){ local pawn p; owner.style=owner.default.style; /*( for (p=level.pawnlist;p!=none;p=p.nextpawn) if (p.isa('playerpawn')){ p.clientmessage(owner@"reset to normal at"@level.timeseconds@"with anim"@owner.animsequence); return; } */ } simulated event tick(float delta) { local Actor HitActor; local Vector HitNormal,HitLocation, ShadowStart; local bool oldfog; //masked stuff? if (!timing&&owner.style==STY_MASKED&&owner.default.style==STY_NORMAL&&(level.game==none||level.game.gamereplicationinfo.priarray[0]!=none&&(/*owner.isa('slith')||*/owner.isa('SkaarjWarrior'))&&!owner.IsInState('startup')&&(owner.bstasis||!owner.IsInState('waiting'))&&owner.PlayerCanSeeMe())&&CheckRender()/*&&owner.IsAnimating()&&(owner.bviewtarget||owner.PlayCanSeeMe())&&owner.RenderInterface!=none&&owner.RenderInterface.Observer!=none*/){ timing=true; SetTimer(0.08,false); //owner.style=owner.default.style; //bstasis=false; } //owner.style=owner.default.style; if ( OldOwnerLocation == Owner.Location ) return; OldOwnerLocation = Owner.Location; DetachDecal(); if ( !Level.bHighDetailMode ) return; if ( Owner.Style == STY_Translucent ) return; if (owner.isa('skaarj')&&owner.AnimSequence == 'Death2') //feign death. return; ShadowStart = Owner.Location +/*offset+ */Owner.CollisionRadius * vect(0.1,0.1,0); HitActor = Trace(HitLocation, HitNormal, ShadowStart - vect(0,0,300), ShadowStart, false); if ( HitActor == None ) return; SetLocation(HitLocation); SetRotation(rotator(HitNormal)); oldfog=region.zone.bfogzone; //ignore fog zone. region.zone.bfogzone=false; AttachDecal(10, vect(0.1,0.1,0)); region.zone.bfogzone=oldfog; } M @// ============================================================ //for oldskool 2.20 //and with the unrealshare.transporter epic said let's break future compatibility by only searching for unreali players! //and so it was //this is a nice ugly hack to fix it. //mutator checks if a transporter is spawned and then copies properties over to this. // Psychic_313: unchanged in Oldskool III. So _that's_ why I couldn't get past Illumination without cheating. Thanks UsAaR33 :-) // ============================================================ class transhack expands Info; var Vector Offset; function Trigger( Actor Other, Pawn EventInstigator ) { local pawn p; //do tournamentplayer here // Move the player instantaneously by the Offset vector // Find the players for (p=level.pawnlist;p!=none;p=p.nextpawn) { if (p.isa('playerpawn')) p.SetLocation( p.Location + Offset ); } Disable( 'Trigger' ); } M I// ============================================================ //The main oldskool package. //Holds the mutators, singleplayer game, windows, Unreal I models and mappacks. // Psychic_313: unchanged // ============================================================ class olTentacleProjectile expands TentacleProjectile; M M M L// ============================================================ //The main oldskool package. //Holds the mutators, singleplayer game, windows, Unreal I models and mappacks. // Psychic_313: unchanged // ============================================================ class olQueenProjectile expands QueenProjectile; auto state Flying { simulated function BeginState() //dumb bug { SetTimer(0.20,False); Super.BeginState(); } } M WT?R 1(r%  !X-(v!? M J// ============================================================ //The main oldskool package. //Holds the mutators, singleplayer game, windows, Unreal I models and mappacks. // Psychic_313: unchanged // ============================================================ class olSkaarjProjectile expands SkaarjProjectile; auto state Flying { simulated function BeginState() //dumb bug { SetTimer(0.20,False); Super.BeginState(); } } M `1"X|`.  A ARC?`'Make Default: Dispersion Pistol`%`$`- - |.  AARC?|Enforcer to Automag|%|$|- - _.  A BRC?_Unreal I BioRifle_%_$_- - ^.  ABRC?^Make ShockRifle ASMD^%^$^- - ].  ABRC?]Make Pulse Gun Stinger]%]$]- - [.  ABRC?[Make Ripper Razorjack[%[$[- - U.  ABRC?UUnreal I MinigunU%U$U- - T.  ACRC?TUnreal I Flak CannonT%T$T- - b.  ACRC?b&Make Rocket Launcher Eightballb%b$b- - Z.  A CRC?ZUnreal I Sniper RifleZ%Z$Z- - \.  A/CRC?\#Chainsaw Disperion Power-up\%\$\- - X.  A>CRC?XRemeemer to:X5 What do you want to change the redeemer into?Xo(Xl(X%X$Xkeep itXASMD with AmpX SMPX\  e.  AMCRC?eUnreal I Jumpbootse%e$e- - f.  A\CRC?fDamage to Amplifierf%f$f- - g.  AkCRC?gThigh Pad to Kevlarg%g$g- - i.  AzCRC?iUnreal I Megahealthi%i$i- - o.  ACRC?oUnreal I Armoro%o$o- - u.  ACRC?uVial to bandageu%u$u- - Z.  ACRC?Zo(ZShieldBelt to:Z0 What do you want to make the shieldbelt?Z%Zl(Z$ZKeep it (150)ZOld shieldbelt (100)ZPowerShield (200)Z\  v.  ACRC?vUnreal I HealthPackv%v$v- - y.  ACRC?yFull Invisibilityy%y$y- - |.  A\BRC?|Start off with automag|%|$|- - *.  ACRC?*Weapon to Quadshot:*y What weapon should become the Quadshot? Note that the Unreal I equivilents will also change with this option....*l(*%*$*Nothing*Impact Hammer*Enforcer*Pulse Gun*Shock Rifle*Rocket Launcher*Flak Cannon*Ripper*GES BioRifle*Sniper Rifle*Minigun*Redeemer*\  '.  ACRC?'Arena:'r Select the weapon you wish to act as an arena. Select No Arena for OldSkool to use all the above options.'l('%'$'No Arena'Dispersion Pistol'Automag'Stinger' ASMD'Eightball'Flak Cannon'Razorjack'GES BioRifle'Sniper Rifle'Minigun'QuadShot' SMP'\  \CC M ~V%EjSemi-Secret MessageClose, but no cigar. Try again!$$$ M \ YR&\ [ [ $\ \` - `-  | - |-  -|-  _ - _-  7^ - ^-  p] - ]-  [ - [-  U - U-  T - T-  Tb - b-  Z - Z-  \ - \-  e - e-  8f - f-  qg - g-  i - i-  o - o-  u - u-  Uv - v-  y - y-  | - |-  Z  Z}  7X  X}  o*  *}  '  '}    M M M cwJa a a a a a a a a  M _pGzv\ [0!4 !0a&!GYL?a&!4GYa&!0G M y// ============================================================ //The main oldskool package. //Holds the mutators, singleplayer game, windows, Unreal I models and mappacks. // Psychic_313: unchanged // ============================================================ class olMercRocket expands MercRocket; M CM M C// ============================================================ //The main oldskool package. //Holds the mutators, singleplayer game, windows, Unreal I models and mappacks. // Psychic_313: unchanged // ============================================================ class olBruteProjectile expands BruteProjectile; M kM M {// ============================================================ //The main oldskool package. //Holds the mutators, singleplayer game, windows, Unreal I models and mappacks. // Psychic_313: unchanged // ============================================================ class olGasBagBelch expands GasBagBelch; M \q f X*q >a&!a?VIq +?a&!m?Va&!y? M Y// ============================================================ //hehe // Psychic_313: unchanged // ============================================================ class ol1337krallBolt expands EliteKrallBolt; M %UY8- -t6 W::$a-(( M BGP%Qw.G*GOGG M V// ============================================================ // kraalbot. // Psychic_313: unchanged // ============================================================ class olKraalBolt expands KraalBolt; M \XKLj[0!  !La&!KYL?a&! KYa&!LK M h 1 h %B.  A AB?BForce MusicB If unchecked, the music choice will only run if there is no music in the level, a menu is running, or you select 'Play'.B%B$B- -4. ?,_ AB?4Use CD music4? If checked, music will be played off a CD in the CDROM.4%4$4-K4Gget ini:Engine.Engine.AudioDevice UseCDMusicT4-B-'B-'R.  A BRC?R>C, RG?J5Gget ini:Engine.Engine.AudioDevice MusicVolumeR R  R%R$.  ApBRC?o(Select Song$5 Select the song that you wish to have played.%l(Cengine.music%]DC{]Z~D,Z@p,S&@p,DZ&DDZ-V z] -V 'Y p]@Dp]@h #engine.musich ]DFqZ pY '\Z%G.  ABB?G RESETG&G$G. Reset the music to the level's defaultG-a/!KM.o o?,NBB?MM%M$M  Play the selected music!4-a/!KM-'.  ABRC?.4-CD Track3 Select the CD track number you wish to playG-'GA You cannot reset to level music while CD music is enabled+>?B&D_Z~D,@DZ&>?J@&&Song Number/ Select the song number you wish to play? %$9.  ABRC?9$& 4-9/ppCD Track S  selected 92ppSong Number S  selected9 01d5k001 0wnz j00!!!!W z@1+9Only One Song Available Z4-9YppLevel's song, V~V. has no INT reference!-Z '\CC M a // ============================================================ //The main oldskool package. //Holds the mutators, singleplayer game, windows, Unreal I models and mappacks. // Psychic_313: unchanged // ============================================================ class olWarlordRocket expands WarlordRocket; //more net bugs: simulated function Tick(float DeltaTime) { local SpriteSmokePuff b; Count += DeltaTime; if ( (Count>(SmokeRate+FRand()*SmokeRate)) && (Level.NetMode!=NM_DedicatedServer) ) { b = Spawn(class'SpriteSmokePuff'); b.RemoteRole = ROLE_None; Count=0.0; } } auto state Flying { simulated function BeginState() { if (Level.bHighDetailMode) SmokeRate = 0.035; else SmokeRate = 0.15; Super.BeginState(); } } M eUU!r*a!&l- w*a?,a!Xia!c?,a!Na!J M b // ============================================================ //boltskorchlong. a longer lasting bolt skorch (for krallbolts) // Psychic_313: unchanged // ============================================================ class boltskorchlong expands EnergyImpact; simulated function AttachToSurface() //fog zone hack (note that this code cannot be compiled normaly) { local bool oldfog; oldfog=region.zone.bfogzone; region.zone.bfogzone=false; //ignore fog zone when attaching. (decals don't work in fogzones) if(AttachDecal(100) == None) // trace 100 units ahead in direction of current rotation Destroy(); region.zone.bfogzone=oldfog; } M AI// ============================================================ //oldskoolspectatorhud. The HUD for spectators (to use parent's stuff :D) // Psychic_313: unchanged // ============================================================ class OldSkoolspectatorhud expands OldSkoolBASEHUD; simulated function PostRender( canvas Canvas ) { local float ypos, YL, XL, fadevalue; local int i; local float StartX; HUDSetup(canvas); if ( PlayerPawn(Owner) != None ) { if ( bShowInfo ) //check this first { ServerInfo.RenderInfo( Canvas ); return; } if ( PlayerPawn(Owner).bShowMenu ) { DisplayMenu(Canvas); return; } if ( PlayerPawn(Owner).bShowScores ) { if ( (PlayerPawn(Owner).Scoring == None) && (PlayerPawn(Owner).ScoringType != None) ) PlayerPawn(Owner).Scoring = Spawn(PlayerPawn(Owner).ScoringType, PlayerPawn(Owner)); if ( PlayerPawn(Owner).Scoring != None ) { PlayerOwner.Scoring.OwnerHUD = self; PlayerPawn(Owner).Scoring.ShowScores(Canvas); return; } } else if ( PlayerPawn(Owner).ProgressTimeOut > Level.TimeSeconds ) DisplayProgressMessage(Canvas); // Master localized message control loop. for (i=0; i<10; i++) { if (LocalMessages[i].Message != None) { if (LocalMessages[i].Message.Default.bFadeMessage && Level.bHighDetailMode) { Canvas.Style = ERenderStyle.STY_Translucent; FadeValue = (LocalMessages[i].EndOfLife - Level.TimeSeconds); if (FadeValue > 0.0) { if ( bResChanged || (LocalMessages[i].XL == 0) ) { if ( LocalMessages[i].Message.Static.GetFontSize(LocalMessages[i].Switch) == 1 ) LocalMessages[i].StringFont = MyFonts.GetBigFont( Canvas.ClipX ); else // ==2 LocalMessages[i].StringFont = MyFonts.GetHugeFont( Canvas.ClipX ); Canvas.Font = LocalMessages[i].StringFont; Canvas.StrLen(LocalMessages[i].StringMessage, LocalMessages[i].XL, LocalMessages[i].YL); LocalMessages[i].YPos = LocalMessages[i].Message.Static.GetOffset(LocalMessages[i].Switch, LocalMessages[i].YL, Canvas.ClipY); } Canvas.Font = LocalMessages[i].StringFont; Canvas.DrawColor = LocalMessages[i].DrawColor * (FadeValue/LocalMessages[i].LifeTime); Canvas.SetPos( 0.5 * (Canvas.ClipX - LocalMessages[i].XL), LocalMessages[i].YPos ); Canvas.DrawText( LocalMessages[i].StringMessage, False ); } } else { if ( bResChanged || (LocalMessages[i].XL == 0) ) { if ( LocalMessages[i].Message.Static.GetFontSize(LocalMessages[i].Switch) == 1 ) LocalMessages[i].StringFont = MyFonts.GetBigFont( Canvas.ClipX ); else // == 2 LocalMessages[i].StringFont = MyFonts.GethugeFont( Canvas.ClipX ); Canvas.Font = LocalMessages[i].StringFont; Canvas.StrLen(LocalMessages[i].StringMessage, LocalMessages[i].XL, LocalMessages[i].YL); LocalMessages[i].YPos = LocalMessages[i].Message.Static.GetOffset(LocalMessages[i].Switch, LocalMessages[i].YL, Canvas.ClipY); } Canvas.Font = LocalMessages[i].StringFont; Canvas.Style = ERenderStyle.STY_Normal; Canvas.DrawColor = LocalMessages[i].DrawColor; Canvas.SetPos( 0.5 * (Canvas.ClipX - LocalMessages[i].XL), LocalMessages[i].YPos ); Canvas.DrawText( LocalMessages[i].StringMessage, False ); } } } Canvas.Style = ERenderStyle.STY_Normal; //start unreal messages loop. drawunrealmessages(canvas); Canvas.DrawColor.r = 255; //reset Canvas.DrawColor.g = 255; Canvas.DrawColor.b = 255; Canvas.Font = Font'WhiteFont'; } // Display Identification Info DrawIdentifyInfo(Canvas, 0, Canvas.ClipY - 64.0); // Message of the Day / Map Info Header if (MOTDFadeOutTime != 0.0) DrawMOTD(Canvas); if ( HUDMutator != None ) HUDMutator.PostRender(Canvas); //use hud mutators..... if (Canvas.ClipY<290) Return; Canvas.Style = ERenderStyle.STY_Translucent; StartX = 0.5 * Canvas.ClipX - 128; Canvas.SetPos(StartX,Canvas.ClipY-58); Canvas.DrawTile( Texture'MenuBarrier', 256, 64, 0, 0, 256, 64 ); Canvas.Style = ERenderStyle.STY_Normal; StartX = 0.5 * Canvas.ClipX - 128; Canvas.SetPos(StartX,Canvas.ClipY-52); Canvas.DrawIcon(texture'Logo2', 1.0); Canvas.Style = 1; } M qi// ============================================================ //oldskoolhudconfig. configure da oldskool hud // Psychic_313: FIXME make this save to default properties so it doesn't require that you're using an OS HUD? // Needs to stay in Oldskool due to circular dependency... // ============================================================ class oldskoolHUDConfig expands UMenuHUDConfigCW; var uwindowcheckbox realicons, showtalktex, fragiconsp; function Created() { local int ControlWidth, ControlLeft, ControlRight, controloffset; local int CenterWidth, CenterPos; local int I, S; Super(umenupagewindow).Created(); ControlWidth = WinWidth/2.5; ControlLeft = (WinWidth/2 - ControlWidth)/2; ControlRight = WinWidth/2 + ControlLeft; CenterWidth = (WinWidth/4)*3; CenterPos = (WinWidth - CenterWidth)/2; DesiredWidth = 220; DesiredHeight = 70; controloffset=50; // HUD Config HUDConfigSlider = UWindowHSliderControl(CreateControl(class'UWindowHSliderControl', ControlLeft+64, controloffset, ControlWidth-64, 1)); HUDConfigSlider.SetRange(0, 5, 1); HUDConfigSlider.SetValue(Root.Console.ViewPort.Actor.myHUD.HUDMode); HUDConfigSlider.SetText(HUDConfigText); HUDConfigSlider.SetHelpText(HUDConfigHelp); HUDConfigSlider.SetFont(F_Normal); controloffset+=25; // Crosshair CrosshairSlider = UWindowHSliderControl(CreateControl(class'UWindowHSliderControl', CenterPos, controloffset, CenterWidth, 1)); CrosshairSlider.SetRange(0, 5, 1); CrosshairSlider.SetValue(oldskoolbasehud(Root.Console.ViewPort.Actor.myHUD).olCrosshair); CrosshairSlider.SetText(CrosshairText); CrosshairSlider.SetHelpText(CrosshairHelp); CrosshairSlider.SetFont(F_Normal); controloffset+=25; //talktexture showtalktex = UWindowCheckBox(CreateControl(class'UWindowCheckBox', CenterPos, controloffset, centerwidth, 1)); showtalktex.SetText("Show talktexture"); showtalktex.SethelpText("If checked, the talktexture of players will appear in the HUD, when messages are sent."); showtalktex.SetFont(F_Normal); showtalktex.bChecked = oldskoolbasehud(Root.Console.ViewPort.Actor.myHUD).showtalkface; controloffset+=25; //Real-CTF icons realicons = UWindowCheckBox(CreateControl(class'UWindowCheckBox', CenterPos, controloffset, centerwidth, 1)); realicons.SetText("Use Real CTF skulls"); realicons.SethelpText("If checked, the skulls from the Unreal Mod, 'Real CTF', will be used."); realicons.SetFont(F_Normal); realicons.bChecked = oldskoolbasehud(Root.Console.ViewPort.Actor.myHUD).realicons; controloffset+=25; //frag in SP.... fragiconsp = UWindowCheckBox(CreateControl(class'UWindowCheckBox', CenterPos, controloffset, centerwidth, 1)); fragiconsp.SetText("Show Frag count"); fragiconsp.SethelpText("Do you want the frag count to display on the HUD in Single Player and co-op?"); fragiconsp.SetFont(F_Normal); fragiconsp.bChecked = oldskoolbasehud(Root.Console.ViewPort.Actor.myHUD).showfrag; if (!Root.Console.ViewPort.Actor.myHUD.Isa('oldskoolhud')) fragiconsp.hidewindow(); } function BeforePaint(Canvas C, float X, float Y) //more shtuff...... { local int ControlWidth, ControlLeft, ControlRight; local int CenterWidth, CenterPos; ControlWidth = WinWidth/2.5; ControlLeft = (WinWidth/2 - ControlWidth)/2; ControlRight = WinWidth/2 + ControlLeft; CenterWidth = (WinWidth/4)*3; CenterPos = (WinWidth - CenterWidth)/2; HUDConfigSlider.SetSize(CenterWidth-60, 1); HUDConfigSlider.SliderWidth = 90; HUDConfigSlider.WinLeft = CenterPos+60; CrosshairSlider.SetSize(CenterWidth, 1); CrosshairSlider.SliderWidth = 90; CrosshairSlider.WinLeft = CenterPos; CenterWidth = (WinWidth/4)*3; CenterPos = (WinWidth - CenterWidth)/2; fragiconsp.WinLeft = CenterPos; realicons.WinLeft = CenterPos; showtalktex.WinLeft = CenterPos; } function Paint(Canvas C, float X, float Y) //over-ride and add too...... { local int ControlWidth, ControlLeft, ControlRight; local int CenterWidth, CenterPos, CrosshairX; ControlWidth = WinWidth/2.5; ControlLeft = (WinWidth/2 - ControlWidth)/2; ControlRight = WinWidth/2 + ControlLeft; CenterWidth = (WinWidth/4)*3; CenterPos = (WinWidth - CenterWidth)/2; Super(umenupagewindow).Paint(C, X, Y); CrosshairX = CenterPos + CenterWidth + 5; // DrawCrosshair if (oldskoolbasehud(GetPlayerOwner().myHUD).olCrosshair==0) DrawClippedTexture(C, CrosshairX, 75, Texture'Crosshair1'); else if (oldskoolbasehud(GetPlayerOwner().myHUD).olCrosshair==1) DrawClippedTexture(C, CrosshairX, 75, Texture'Crosshair2'); else if (oldskoolbasehud(GetPlayerOwner().myHUD).olCrosshair==2) DrawClippedTexture(C, CrosshairX, 75, Texture'Crosshair3'); else if (oldskoolbasehud(GetPlayerOwner().myHUD).olCrosshair==3) DrawClippedTexture(C, CrosshairX, 75, Texture'Crosshair4'); else if (oldskoolbasehud(GetPlayerOwner().myHUD).olCrosshair==4) DrawClippedTexture(C, CrosshairX, 75, Texture'Crosshair5'); else if (oldskoolbasehud(GetPlayerOwner().myHUD).olCrosshair==5) DrawClippedTexture(C, CrosshairX, 75, Texture'Crosshair7'); //hud iconz if (GetPlayerOwner().myHUD.hudmode==0) DrawClippedTexture(C, centerpos-10, 5, Texture'unrealshare.hud1'); else if (GetPlayerOwner().myHUD.hudmode==1) DrawClippedTexture(C, centerpos-10, 5, Texture'unrealshare.hud2'); else if (GetPlayerOwner().myHUD.hudmode==2) DrawClippedTexture(C, centerpos-10, 5, Texture'unrealshare.hud3'); else if (GetPlayerOwner().myHUD.hudmode==3) DrawClippedTexture(C, centerpos-10, 5, Texture'unrealshare.hud4'); else if (GetPlayerOwner().myHUD.hudmode==4) DrawClippedTexture(C, centerpos-10, 5, Texture'unrealshare.hud5'); else if (GetPlayerOwner().myHUD.hudmode==5) DrawClippedTexture(C, centerpos-10, 5, Texture'unrealshare.hud6'); } function Notify(UWindowDialogControl C, byte E) { super(umenupagewindow).notify(c,e); //stupid thing wouldn't show help then :D switch(E) { case DE_Change: switch(C) { case CrosshairSlider: CrosshairChanged(); break; case HUDConfigSlider: HUDConfigChanged(); break; case showtalktex: oldskoolbasehud(GetPlayerOwner().myHUD).showtalkface=showtalktex.bchecked; break; case realicons: oldskoolbasehud(GetPlayerOwner().myHUD).realicons=realicons.bchecked; break; case fragiconsp: oldskoolbasehud(GetPlayerOwner().myHUD).showfrag=fragiconsp.bchecked; break; } break; } } function CrosshairChanged() //ol crosshair stuff..... { oldskoolbasehud(GetPlayerOwner().myHUD).olCrosshair = int(CrosshairSlider.Value); } M LZT0Z-wZ*w -q W a  Z Z W M.Z-m Za  A M UST@;bW !$ wSd wS*Sa/!m-@S d SdW -~ -@Sa/!B -~  wSd W !wS%j?,jFS{%{,F{wFS{%{&w{w{B,wFSt*!F=F@9Sa/!m] .S f .] Fd M OG Y|G U -Z  U $G RGGpset ini:Engine.Engine.AudioDevice MusicVolume UR B.-B- -B-  M 4G -a(j4-90ppCD Track SD selected93ppSong Number SD selected  $G M| Gn   Tem 2dX6׋> Y–ب|[$> Y–؈|.Xڋ> Y–؈|.Xڋ> Y–؈|.Xڋ> Y–؋> Y–؋> Y–؋> Y–؋> Y–؋> Y–؋> Y5I> Y5I> Y5I> Y5I> Y5I> Y5I|[$|[$|[$|[$|[$|[$|.Xڈ|.Xڈ|.Xڨ|[$|[$o /T2> Y5I|[$|[$|[$|[$|[$o /T2> Y–ب|[$|[$|[$|.Xڈ|.Xڈ|.Xڈ|.Xo /T2> Y–؈|.Xڈ|.Xڈ|.Xڈ|.Xo /T2> Y–؈|.Xڈ|.Xڈ|.Xڈ|.Xo /T2> Y–o /T2> Y5I|.X,M M V>Sb2w>*>333?/w> *~a> > _.~w_*__Ew~*~$~o$~- '~ > ?/w_*_ q!d!Qw>*;w>T>-i> A>i?%A > i?i?c6A 6A 6A >GA %A &>*>*_>w_*_a/!p_a__ M W_n UG- -a'w*5.$.V.:9. $=,$.olroot.null.% olroot.null %_&-S  _,R pp.,S_k pR 'k-S '_@\%kT ~_,K J_T &>?K &&? 92ppSong Number S  selectedSK &+9-Only One Song Number in Selected SongDk9YppLevel's song, V~V. has no INT reference!  M E// ============================================================ //oldskoolbasehud. parent of both DM & SP HUDS...... includes many DM enhancements..... // Psychic_313: unchanged // ============================================================ class OldSkoolBASEHUD expands UnrealHUD config; //realctf skull #exec TEXTURE IMPORT NAME=RealSkull FILE=TEXTURES\RealSkull.PCX GROUP="Icons" MIPS=OFF var color BaseColor, WhiteColor, RedColor, GreenColor, CyanColor, UnitColor, BlueColor, GoldColor, HUDColor, SolidHUDColor, PurpleColor, TurqColor, GrayColor, FaceColor; //configuration bools var globalconfig int olCrosshair; //so it doesn't interfere with challenge hud's.... var globalconfig bool realicons; //talktexture stuff..... var globalconfig bool showtalkface; var globalconfig bool showfrag; //if we want the frag counter shown in SP that is...... :D var bool bDrawFaceArea; var float FaceAreaOffset, MinFaceAreaOffset, facemsgset; var texture FaceTexture; var float FaceTime; var color FaceTeam; // Server info. var ServerInfo ServerInfo; var bool bShowInfo; var Pawn PawnOwner; // pawn currently managing this HUD (may be the viewtarget of the owner rather than the owner) var HUDLocalizedMessage LocalMessages[10]; var bool bResChanged; var int MessageNumber; var int OldClipX; var bool nohud; //for endgames and teamvortex.... var FontInfo MyFonts; //for da fonts var translator translator; //univ as various functions require it. var class ServerInfoClass; Struct somemessage { var name Type; var PlayerReplicationInfo PRI; var float lifetime;//don't use console. need to know time of message var string contents; //what it says :P }; var somemessage ShortMessages[4]; //events var somemessage CurrentPickup; //last pickup message var somemessage CriticalMessage; //last criticalevent function Destroyed() { Super.Destroyed(); if ( MyFonts != None ) MyFonts.Destroy(); } exec function ShowServerInfo() { if (bShowInfo) { bShowInfo = False; } else { bShowInfo = True; PlayerPawn(Owner).bShowScores = False; } } simulated function Timer() //for ending hud h4x { MessageNumber++; } simulated function postbeginplay(){ //defaults that get set this way.... Super.Postbeginplay(); FaceAreaOffset = -64; if(Level.DefaultGameType == class'endgame') //verify the gametypes and set accordingly.. nohud=true; MyFonts = spawn(Class'Botpack.FontInfo'); if (level.title~="Ending Sequence") Event='EndShip'; if (!isa('oldskoolhud')){ ServerInfo = Spawn(ServerInfoClass, Owner); //set slot defaults: class'rocketpack'.default.UsedInWeaponSlot[5]=0; class'rocketpack'.default.UsedInWeaponSlot[9]=1; class'Pammo'.default.UsedInWeaponSlot[3]=0; class'Pammo'.default.UsedInWeaponSlot[5]=1; class'bladehopper'.default.UsedInWeaponSlot[7]=0; class'bladehopper'.default.UsedInWeaponSlot[6]=1; class'bulletbox'.default.UsedInWeaponSlot[9]=0; class'bulletbox'.default.UsedInWeaponSlot[0]=1; class'flakammo'.default.UsedInWeaponSlot[6]=0; class'flakammo'.default.UsedInWeaponSlot[8]=1; class'miniammo'.default.UsedInWeaponSlot[0]=0; class'miniammo'.default.UsedInWeaponSlot[7]=1; class'bioammo'.default.UsedInWeaponSlot[8]=0; class'bioammo'.default.UsedInWeaponSlot[3]=1; } } //new functionz to add stuff simulated function postrender(canvas canvas){ local float ypos, YL, XL, fadevalue; local int i; local float StartX; //endgame floatz.... local InterpolationPoint ip; local int TempX,TempY; local Actor A; local Decoration D; HUDSetup(canvas); if ( PlayerPawn(Owner) != None ) { if ( PlayerPawn(Owner).PlayerReplicationInfo == None ) return; if ( bShowInfo && !self.isa('oldskoolhud')) //check this first { ServerInfo.RenderInfo( Canvas ); return; } if ( PlayerPawn(Owner).bShowMenu ) //will end up going to uwindow (only called in sp mode).. { DisplayMenu(Canvas); return; } if (!nohud){ bDrawFaceArea = false; if ( showtalkface && !PlayerOwner.bShowScores && Hudmode<5 ) { bDrawFaceArea = (FaceTexture != None) && (FaceTime > Level.TimeSeconds); } if ( PlayerPawn(Owner).bShowScores ) { if ( ( PlayerPawn(Owner).Weapon != None ) && ( !PlayerPawn(Owner).Weapon.bOwnsCrossHair ) ) DrawCrossHair(Canvas, 0.5 * Canvas.ClipX - 8, 0.5 * Canvas.ClipY - 8); if ( (PlayerPawn(Owner).Scoring == None) && (PlayerPawn(Owner).ScoringType != None) ) PlayerPawn(Owner).Scoring = Spawn(PlayerPawn(Owner).ScoringType, PlayerPawn(Owner)); if ( PlayerPawn(Owner).Scoring != None ) { PlayerOwner.Scoring.OwnerHUD = self; PlayerPawn(Owner).Scoring.ShowScores(Canvas); DrawTypingPrompt(Canvas, playerpawn(owner).player.Console); //allow typing to show. Drawunrealmessages(canvas); //show events, needed at end of game. return; } } else if ( (PawnOwner.Weapon != None) && (Level.LevelAction == LEVACT_None) ) { Canvas.Font = Font'WhiteFont'; PawnOwner.Weapon.PostRender(Canvas); Canvas.Style = ERenderStyle.STY_Normal; Canvas.DrawColor.r = 255; //reset Canvas.DrawColor.g = 255; Canvas.DrawColor.b = 255; Canvas.Font = Font'WhiteFont'; if ( !PawnOwner.Weapon.bOwnsCrossHair ) DrawCrossHair(Canvas, 0.5 * Canvas.ClipX - 8, 0.5 * Canvas.ClipY - 8); } Canvas.Font = Font'WhiteFont'; Canvas.StrLen("TEST", XL, YL); YPos = FMax(YL*4 + 8, 70); if ( bDrawFaceArea ){ facemsgset=Ypos+7+faceareaoffset; //log ("facemsg set is set to "$facemsgset$". Ypos is set to "$ypos$". The face to be drawn is "$facetexture); DrawTalkFace( Canvas, YPos ); } else { facemsgset=0; //ensure it is 0....... faceareaoffset=-64;} if ( PlayerPawn(Owner).ProgressTimeOut > Level.TimeSeconds ) DisplayProgressMessage(Canvas); } else if ( PlayerPawn(Owner).bShowScores ) { if ( (PlayerPawn(Owner).Scoring == None) && (PlayerPawn(Owner).ScoringType != None) ) PlayerPawn(Owner).Scoring = Spawn(PlayerPawn(Owner).ScoringType, PlayerPawn(Owner)); if ( PlayerPawn(Owner).Scoring != None ) { PlayerOwner.Scoring.OwnerHUD = self; PlayerPawn(Owner).Scoring.ShowScores(Canvas); } return; } // Master localized message control loop. for (i=0; i<10; i++) { if (LocalMessages[i].Message != None) { if (LocalMessages[i].Message.Default.bFadeMessage && Level.bHighDetailMode) { Canvas.Style = ERenderStyle.STY_Translucent; FadeValue = (LocalMessages[i].EndOfLife - Level.TimeSeconds); if (FadeValue > 0.0) { if ( bResChanged || (LocalMessages[i].XL == 0) ) { if ( LocalMessages[i].Message.Static.GetFontSize(LocalMessages[i].Switch) == 1 ) LocalMessages[i].StringFont = MyFonts.GetBigFont( Canvas.ClipX ); else // ==2 LocalMessages[i].StringFont = MyFonts.GetHugeFont( Canvas.ClipX ); Canvas.Font = LocalMessages[i].StringFont; Canvas.StrLen(LocalMessages[i].StringMessage, LocalMessages[i].XL, LocalMessages[i].YL); LocalMessages[i].YPos = LocalMessages[i].Message.Static.GetOffset(LocalMessages[i].Switch, LocalMessages[i].YL, Canvas.ClipY); } Canvas.Font = LocalMessages[i].StringFont; Canvas.DrawColor = LocalMessages[i].DrawColor * (FadeValue/LocalMessages[i].LifeTime); Canvas.SetPos( 0.5 * (Canvas.ClipX - LocalMessages[i].XL), LocalMessages[i].YPos ); Canvas.DrawText( LocalMessages[i].StringMessage, False ); } } else { if ( bResChanged || (LocalMessages[i].XL == 0) ) { if ( LocalMessages[i].Message.Static.GetFontSize(LocalMessages[i].Switch) == 1 ) LocalMessages[i].StringFont = MyFonts.GetBigFont( Canvas.ClipX ); else // == 2 LocalMessages[i].StringFont = MyFonts.GethugeFont( Canvas.ClipX ); Canvas.Font = LocalMessages[i].StringFont; Canvas.StrLen(LocalMessages[i].StringMessage, LocalMessages[i].XL, LocalMessages[i].YL); LocalMessages[i].YPos = LocalMessages[i].Message.Static.GetOffset(LocalMessages[i].Switch, LocalMessages[i].YL, Canvas.ClipY); } Canvas.Font = LocalMessages[i].StringFont; Canvas.Style = ERenderStyle.STY_Normal; Canvas.DrawColor = LocalMessages[i].DrawColor; Canvas.SetPos( 0.5 * (Canvas.ClipX - LocalMessages[i].XL), LocalMessages[i].YPos ); Canvas.DrawText( LocalMessages[i].StringMessage, False ); } } } Canvas.Style = ERenderStyle.STY_Normal; Canvas.DrawColor.r = 255; //reset Canvas.DrawColor.g = 255; Canvas.DrawColor.b = 255; Canvas.Font = Font'WhiteFont'; } if (!nohud){ if (HudMode==5) { DrawInventory(Canvas, Canvas.ClipX-96, 0,False); Return; } if (Canvas.ClipX<320) HudMode = 4; // Draw Armor if (HudMode<2) DrawArmor(Canvas, 0, 0,False); else if (HudMode==3 || HudMode==2) DrawArmor(Canvas, 0, Canvas.ClipY-32,False); else if (HudMode==4) DrawArmor(Canvas, Canvas.ClipX-64, Canvas.ClipY-64,True); // Draw Ammo if (HudMode!=4) DrawAmmo(Canvas, Canvas.ClipX-48-64, Canvas.ClipY-32); else DrawAmmo(Canvas, Canvas.ClipX-48, Canvas.ClipY-32); // Draw Health if (HudMode<2) DrawHealth(Canvas, 0, Canvas.ClipY-32); else if (HudMode==3||HudMode==2) DrawHealth(Canvas, Canvas.ClipX-128, Canvas.ClipY-32); else if (HudMode==4) DrawHealth(Canvas, Canvas.ClipX-64, Canvas.ClipY-32); // Display Inventory if (HudMode<2) DrawInventory(Canvas, Canvas.ClipX-96, 0,False); else if (HudMode==3) DrawInventory(Canvas, Canvas.ClipX-96, Canvas.ClipY-64,False); else if (HudMode==4) DrawInventory(Canvas, Canvas.ClipX-64, Canvas.ClipY-64,True); else if (HudMode==2) DrawInventory(Canvas, Canvas.ClipX/2-64, Canvas.ClipY-32,False); // Display Frag count (redone to allow in SP.... if (!self.isa('oldskoolhud')||showfrag) { if (HudMode<3) DrawFragCount(Canvas, Canvas.ClipX-32,Canvas.ClipY-64); else if (HudMode==3) DrawFragCount(Canvas, 0,Canvas.ClipY-64); else if (HudMode==4) DrawFragCount(Canvas, 0,Canvas.ClipY-32); } // Display Identification Info DrawIdentifyInfo(Canvas, 0, Canvas.ClipY - 64.0); } // Endgame h4x..... if (level.title~="Ending Sequence"){ ip = InterpolationPoint(PlayerPawn(Owner).Target); if (ip!=None && ip.Position==50) PlayerPawn(Owner).AmbientSound=None; else if (ip!=None && ip.Position > 51) { if (MessageNumber==0) { MessageNumber++; SetTimer(17.0,True); } HudSetup(Canvas); Canvas.bCenter = false; Canvas.Font = Canvas.MedFont; TempX = Canvas.ClipX; TempY = Canvas.ClipY; if (MessageNumber < 7){ XL=canvas.orgx; YL=canvas.orgy; Canvas.SetOrigin(20,Canvas.ClipY-64); Canvas.SetClip(225,110);} Canvas.SetPos(0,0); Canvas.Style = 1; if (MessageNumber == 1) Canvas.DrawText(class'unreali.endgamehud'.default.Message1, False); else if (MessageNumber == 2) Canvas.DrawText(class'unreali.endgamehud'.default.Message2, False); else if (MessageNumber == 3) Canvas.DrawText(class'unreali.endgamehud'.default.Message3, False); else if (MessageNumber == 4) Canvas.DrawText(class'unreali.endgamehud'.default.Message4, False); else if (MessageNumber == 5) Canvas.DrawText(class'unreali.endgamehud'.default.Message5, False); else if (MessageNumber == 6) Canvas.DrawText(class'unreali.endgamehud'.default.Message6, False); else if (MessageNumber > 6) { Hudsetup(canvas); WindowConsole(Playerpawn(Owner).Player.Console).LaunchUWindow(); } //open window (rather than green thingy...) if (MessageNumber<7) { canvas.clipx=TempX; canvas.clipy=TempY; canvas.orgx=XL; canvas.orgy=YL; } Hudsetup(canvas); //after its over, reset the elements..... } } else{ //Message of the Day / Map Info Header if (MOTDFadeOutTime != 0.0) DrawMOTD(Canvas); } if ( HUDMutator != None ) HUDMutator.PostRender(Canvas); //use hud mutators..... // Team Game Synopsis if ( PlayerPawn(Owner) != None ) { if ( (PlayerPawn(Owner).GameReplicationInfo != None) && PlayerPawn(Owner).GameReplicationInfo.bTeamGame) DrawTeamGameSynopsis(Canvas); } //start unreal messages loop. (would normally be at end of console (end of postrender) here is pretty close... drawunrealmessages(canvas); } simulated function HUDSetup(canvas canvas) { Super.Hudsetup(canvas); bResChanged = (Canvas.ClipX != OldClipX); OldClipX = Canvas.ClipX; Playerowner=Playerpawn(Owner); if ( PlayerOwner.ViewTarget == None ) //set pawnowner stuff.... PawnOwner = PlayerOwner; else if ( PlayerOwner.ViewTarget.bIsPawn ) PawnOwner = Pawn(PlayerOwner.ViewTarget); else PawnOwner = PlayerOwner;} function DrawTalkFace(Canvas Canvas, float YPos) { if ( Hudmode<5 ) { Canvas.DrawColor = WhiteColor; Canvas.Style = ERenderStyle.STY_Normal; Canvas.SetPos(armoroffset, 4); Canvas.DrawTile(FaceTexture, Ypos-1+faceareaoffset, YPos - 1, 0-faceareaoffset, 0, FaceTexture.USize+faceareaoffset, FaceTexture.VSize); Canvas.Style = ERenderStyle.STY_Translucent; Canvas.DrawColor = FaceColor; Canvas.SetPos(armoroffset, 0); Canvas.DrawTile(texture'botpack.LadrStatic.Static_a00',Ypos + 7+faceareaoffset, YPos + 7, 0-faceareaoffset, 0, texture'botpack.LadrStatic.Static_a00'.USize+faceareaoffset, texture'botpack.LadrStatic.Static_a00'.VSize); Canvas.DrawColor = WhiteColor; } } //as the challenge hud has bindings use these to swap options....... exec function GrowHUD() { if (hudmode>0) hudmode--; saveconfig(); } exec function ShrinkHUD() { if (hudmode<5) hudmode++; saveconfig(); } //allow the realctf icon simulated function DrawFragCount(Canvas Canvas, int X, int Y) { local color oldcol; Canvas.SetPos(X,Y); if (realicons) { Canvas.DrawIcon(Texture'Realskull', 1.0); oldcol=canvas.drawcolor; canvas.drawcolor=redcolor; } else Canvas.DrawIcon(Texture'IconSkull', 1.0); Canvas.CurX -= 19; Canvas.CurY += 23; if ( PawnOwner.PlayerReplicationInfo == None ) return; Canvas.Font = Font'TinyWhiteFont'; if (PawnOwner.PlayerReplicationInfo.Score<100) Canvas.CurX+=6; if (PawnOwner.PlayerReplicationInfo.Score<10) Canvas.CurX+=6; if (PawnOwner.PlayerReplicationInfo.Score<0) Canvas.CurX-=6; if (PawnOwner.PlayerReplicationInfo.Score<-9) Canvas.CurX-=6; Canvas.DrawText(int(PawnOwner.PlayerReplicationInfo.Score),False); if (realicons) canvas.drawcolor=oldcol; } //tick the faceareoffsets....... simulated function Tick(float DeltaTime) { local int i; Super.Tick(DeltaTime); //super (ID and MOTD) if ( bDrawFaceArea ) { if ( FaceAreaOffset < 0 ) FaceAreaOffset += DeltaTime * 600; if ( FaceAreaOffset > 0 ) FaceAreaOffset = 0.0; } } //DO NOT USE ITERATEORS!!!!!!! THEY BAD!!!!!!!!!!!!!!!! simulated function DrawMOTD(Canvas Canvas) { local GameReplicationInfo GRI; local float XL, YL; if(Owner == None) return; Canvas.Font = Font'WhiteFont'; Canvas.Style = 3; Canvas.DrawColor.R = MOTDFadeOutTime; Canvas.DrawColor.G = MOTDFadeOutTime; Canvas.DrawColor.B = MOTDFadeOutTime; Canvas.bCenter = true; GRI = PlayerPawn(Owner).GameReplicationInfo; if ( (GRI == None) || (GRI.GameName == "Game") || (MOTDFadeOutTime <= 0) ) return; Canvas.DrawColor.R = 0; Canvas.DrawColor.G = MOTDFadeOutTime / 2; Canvas.DrawColor.B = MOTDFadeOutTime; Canvas.SetPos(0.0, 32); Canvas.StrLen("TEST", XL, YL); if (Level.NetMode != NM_Standalone) Canvas.DrawText(GRI.ServerName); Canvas.DrawColor.R = MOTDFadeOutTime; Canvas.DrawColor.G = MOTDFadeOutTime; Canvas.DrawColor.B = MOTDFadeOutTime; Canvas.SetPos(0.0, 32 + YL); Canvas.DrawText("Game Type: "$GRI.GameName, true); Canvas.SetPos(0.0, 32 + 2*YL); Canvas.DrawText("Map Title: "$Level.Title, true); Canvas.SetPos(0.0, 32 + 3*YL); Canvas.DrawText("Author: "$Level.Author, true); Canvas.SetPos(0.0, 32 + 4*YL); if (Level.IdealPlayerCount != "") Canvas.DrawText("Ideal Player Load:"$Level.IdealPlayerCount, true); Canvas.DrawColor.R = 0; Canvas.DrawColor.G = MOTDFadeOutTime / 2; Canvas.DrawColor.B = MOTDFadeOutTime; Canvas.SetPos(0, 32 + 6*YL); Canvas.DrawText(Level.LevelEnterText, true); Canvas.SetPos(0.0, 32 + 8*YL); Canvas.DrawText(GRI.MOTDLine1, true); Canvas.SetPos(0.0, 32 + 9*YL); Canvas.DrawText(GRI.MOTDLine2, true); Canvas.SetPos(0.0, 32 + 10*YL); Canvas.DrawText(GRI.MOTDLine3, true); Canvas.SetPos(0.0, 32 + 11*YL); Canvas.DrawText(GRI.MOTDLine4, true); Canvas.bCenter = false; Canvas.Style = 1; Canvas.DrawColor.R = 255; Canvas.DrawColor.G = 255; Canvas.DrawColor.B = 255; } // taken from REalCTF........ let offsets for face work...... simulated function bool DisplayMessages( canvas Canvas ) { return true; } //more stuff ripped from real ctf....... simulated function bool Draw1337MessageHeader(Canvas Canvas, somemessage ShortMessage, int YPos) { local float XOffset; local string strPlayerName; local byte Team; if ((ShortMessage.Type != 'Say') && (ShortMessage.Type != 'TeamSay')) return false; if (ShortMessage.PRI != none) { Team = ShortMessage.PRI.Team; strPlayerName = ShortMessage.PRI.PlayerName; } else { Team = 255; strPlayerName = "h4xx0r"; } SetDrawColor(Canvas,Team,1); XOffset += ArmorOffset+facemsgset; XOffset = DrawNextMessagePart(Canvas, strPlayerName$": ", XOffset, YPos); Canvas.SetPos(4 + XOffset, YPos); if (ShortMessage.Type == 'TeamSay') { // Message text is team color for TeamSay SetDrawColor(Canvas,Team,2); } else { // ...otherwise green SetDrawColor(Canvas,255,2); } return true; } final simulated function SetDrawColor(canvas Canvas, byte Team, byte Shade, optional float FadeTime) { if (FadeTime == 0.0) FadeTime = 3.0; switch (Team) { case 0: // Red switch (Shade) { case 1: // Bright Canvas.DrawColor.R = 255 * (FadeTime / 3.0); Canvas.DrawColor.G = 0; Canvas.DrawColor.B = 0; break; case 2: // Dim Canvas.DrawColor.R = 200 * (FadeTime / 3.0); Canvas.DrawColor.G = 0; Canvas.DrawColor.B = 0; break; } break; case 1: // Blue switch (Shade) { case 1: // Bright Canvas.DrawColor.R = 0; Canvas.DrawColor.G = 128 * (FadeTime / 3.0); Canvas.DrawColor.B = 255 * (FadeTime / 3.0); break; case 2: // Dim Canvas.DrawColor.R = 0; Canvas.DrawColor.G = 94 * (FadeTime / 3.0); Canvas.DrawColor.B = 187 * (FadeTime / 3.0); break; } break; case 2: // green switch (Shade) { case 1: // Bright Canvas.DrawColor.R = 0; Canvas.DrawColor.G = 255 * (FadeTime / 3.0); Canvas.DrawColor.B = 0; break; case 2: // Dim Canvas.DrawColor.R = 0; Canvas.DrawColor.G = 128 * (FadeTime / 3.0); Canvas.DrawColor.B = 0; break; } break; case 3: // yellow switch (Shade) { case 1: // Bright Canvas.DrawColor.R = 255 * (FadeTime / 3.0); Canvas.DrawColor.G = 255 * (FadeTime / 3.0); Canvas.DrawColor.B = 0; break; case 2: // Dim Canvas.DrawColor.R = 255 * (FadeTime / 3.0); Canvas.DrawColor.G = 255 * (FadeTime / 3.0); Canvas.DrawColor.B = 128 * (FadeTime / 3.0); break; } break; default: // somehow its non-team.... Noteam(canvas, shade, fadetime); break; } } final simulated function Noteam(canvas Canvas, byte Shade, optional float FadeTime){ // Team-generic green if (FadeTime == 0.0) FadeTime = 3.0; switch (Shade) { case 1: // Bright Canvas.DrawColor.R = 0; Canvas.DrawColor.G = 255 * (FadeTime / 3.0); Canvas.DrawColor.B = 0; break; case 2: // Dim Canvas.DrawColor.R = 0; Canvas.DrawColor.G = 160 * (FadeTime / 3.0); Canvas.DrawColor.B = 0; break; } } //to show challenge DM localized messages. simulated function LocalizedMessage( class lMessage, optional int Switch, optional PlayerReplicationInfo RelatedPRI_1, optional PlayerReplicationInfo RelatedPRI_2, optional Object OptionalObject, optional String CriticalString ) { local int i; if ( !lMessage.Default.bIsSpecial ) { if ( ClassIsChildOf(lMessage, class'SayMessagePlus') || ClassIsChildOf(lMessage, class'TeamSayMessagePlus') ) { if(RelatedPRI_1.talktexture!=none||facetime0) && (Weapon(Inv)!=None) ) { if (PawnOwner.Weapon == Inv) Canvas.Font = Font'TinyWhiteFont'; else Canvas.Font = Font'TinyFont'; Canvas.CurX = HalfHudX-3+Inv.InventoryGroup*6; Canvas.CurY = HalfHudY+4; if (Inv.InventoryGroup<10) Canvas.DrawText(Inv.InventoryGroup,False); else Canvas.DrawText("0",False); } if ( (HudMode < 4) && (Ammo(Inv)!=None) ) { for (i=0; i<10; i++) { if (Ammo(Inv).UsedInWeaponSlot[i]==1) { Canvas.CurX = HalfHudX+3+i*6; if (i==0) Canvas.CurX += 60; Canvas.CurY = HalfHudY+11; AmmoIconSize = 16.0*FMin(1.0,(float(Ammo(Inv).AmmoAmount)/float(Ammo(Inv).MaxAmmo))); if (AmmoIconSize<8 && Ammo(Inv).AmmoAmount<10 && Ammo(Inv).AmmoAmount>0) { Canvas.CurX -= 6; Canvas.CurY += 5; Canvas.Font = Font'TinyRedFont'; Canvas.DrawText(Ammo(Inv).AmmoAmount,False); Canvas.CurY -= 12; } Canvas.CurY += 19-AmmoIconSize; Canvas.CurX -= 6; Canvas.DrawColor.g = 255; Canvas.DrawColor.r = 0; Canvas.DrawColor.b = 0; if (AmmoIconSize<8) { Canvas.DrawColor.r = 255-AmmoIconSize*30; Canvas.DrawColor.g = AmmoIconSize*30+40; } if (Ammo(Inv).AmmoAmount >0) { Canvas.DrawTile(Texture'HudGreenAmmo',4.0,AmmoIconSize,0,0,4.0,AmmoIconSize); } Canvas.DrawColor.g = 255; Canvas.DrawColor.r = 255; Canvas.DrawColor.b = 255; } } } } // List Translator messages if activated if ( Translator!=None ) { if( Translator.bCurrentlyActivated ) { Canvas.bCenter = false; Canvas.Font = Canvas.MedFont; TempX = Canvas.ClipX; TempY = Canvas.ClipY; CurrentMessage = Translator.NewMessage; Canvas.Style = 2; Canvas.SetPos(Canvas.ClipX/2-128, Canvas.ClipY/2-68); Canvas.DrawIcon(texture'TranslatorHUD3', 1.0); Canvas.SetOrigin(Canvas.ClipX/2-110,Canvas.ClipY/2-52); Canvas.SetClip(225,110); Canvas.SetPos(0,0); Canvas.Style = 1; Canvas.DrawText(CurrentMessage, False); HUDSetup(canvas); Canvas.ClipX = TempX; Canvas.ClipY = TempY; } else bFlashTranslator = ( Translator.bNewMessage || Translator.bNotNewMessage ); } if ( HUDMode == 5 ) return; if ( SelectedItem != None ) { Count++; if (Count>20) Count=0; if (Prev!=None) { if ( Prev.bActive || (bFlashTranslator && (Translator == Prev) && (Count>15)) ) { Canvas.DrawColor.b = 0; Canvas.DrawColor.g = 0; } DrawHudIcon(Canvas, X, Y, Prev); if ( (Pickup(Prev) != None) && Pickup(Prev).bCanHaveMultipleCopies ) DrawNumberOf(Canvas,Pickup(Prev).NumCopies,X,Y); Canvas.DrawColor.b = 255; Canvas.DrawColor.g = 255; } if ( SelectedItem.Icon != None ) { if ( SelectedItem.bActive || (bFlashTranslator && (Translator == SelectedItem) && (Count>15)) ) { Canvas.DrawColor.b = 0; Canvas.DrawColor.g = 0; } if ( (Next==None) && (Prev==None) && !bDrawOne) DrawHudIcon(Canvas, X+64, Y, SelectedItem); else DrawHudIcon(Canvas, X+32, Y, SelectedItem); Canvas.Style = 2; Canvas.CurX = X+32; if ( (Next==None) && (Prev==None) && !bDrawOne ) Canvas.CurX = X+64; Canvas.CurY = Y; Canvas.DrawIcon(texture'IconSelection', 1.0); if ( (Pickup(SelectedItem) != None) && Pickup(SelectedItem).bCanHaveMultipleCopies ) DrawNumberOf(Canvas,Pickup(SelectedItem).NumCopies,Canvas.CurX-32,Y); Canvas.Style = 1; Canvas.DrawColor.b = 255; Canvas.DrawColor.g = 255; } if (Next!=None) { if ( Next.bActive || (bFlashTranslator && (Translator == Next) && (Count>15)) ) { Canvas.DrawColor.b = 0; Canvas.DrawColor.g = 0; } DrawHudIcon(Canvas, X+64, Y, Next); if ( (Pickup(Next) != None) && Pickup(Next).bCanHaveMultipleCopies ) DrawNumberOf(Canvas,Pickup(Next).NumCopies,Canvas.CurX-32,Y); Canvas.DrawColor.b = 255; Canvas.DrawColor.g = 255; } } } simulated function DrawArmor(Canvas Canvas, int X, int Y, bool bDrawOne) { Local int ArmorAmount,CurAbs; Local inventory Inv,BestArmor; Local float XL, YL; ArmorAmount = 0; ArmorOffset = 0; Canvas.Font = Canvas.LargeFont; Canvas.CurX = X; Canvas.CurY = Y; CurAbs=0; BestArmor=None; for( Inv=pawnOwner.Inventory; Inv!=None; Inv=Inv.Inventory ) { if (Inv.bIsAnArmor) { ArmorAmount += Inv.Charge; if (Inv.Charge>0 && (Inv.Icon!=None||findicon(inv)!=none)) { if (!bDrawOne) { ArmorOffset += 32; DrawHudIcon(Canvas, Canvas.CurX, Y, Inv); DrawIconValue(Canvas, Inv.Charge); } else if (Inv.ArmorAbsorption>CurAbs) { CurAbs = Inv.ArmorAbsorption; BestArmor = Inv; } } } } if (bDrawOne && BestArmor!=None) { DrawHudIcon(Canvas, Canvas.CurX, Y, BestArmor); DrawIconValue(Canvas, BestArmor.Charge); } Canvas.CurY = Y; if (ArmorAmount>0 && HudMode==0) { Canvas.StrLen(ArmorAmount,XL,YL); ArmorOffset += XL; Canvas.DrawText(ArmorAmount,False); } } simulated function DrawAmmo(Canvas Canvas, int X, int Y) { local texture foundicon; if ( (PawnOwner.Weapon == None) || (PawnOwner.Weapon.AmmoType == None) ) return; Canvas.CurY = Y; Canvas.CurX = X; Canvas.Font = Canvas.LargeFont; if (PawnOwner.Weapon.AmmoType.AmmoAmount<10) Canvas.Font = Font'LargeRedFont'; if (HudMode==0) { if (PawnOwner.Weapon.AmmoType.AmmoAmount>=100) Canvas.CurX -= 16; if (PawnOwner.Weapon.AmmoType.AmmoAmount>=10) Canvas.CurX -= 16; Canvas.DrawText(PawnOwner.Weapon.AmmoType.AmmoAmount,False); Canvas.CurY = Canvas.ClipY-32; } else Canvas.CurX+=16; if (PawnOwner.Weapon.AmmoType.Icon!=None) Canvas.DrawIcon(PawnOwner.Weapon.AmmoType.Icon, 1.0); else{ foundicon=findicon(pawnowner.weapon.ammotype); if (foundicon!=none) Canvas.DrawIcon(foundicon,1.0); } //scan for icon. Canvas.CurY += 29; DrawIconValue(Canvas, PawnOwner.Weapon.AmmoType.AmmoAmount); Canvas.CurX = X+19; Canvas.CurY = Y+29; if (HudMode!=1 && HudMode!=2 && HudMode!=4) Canvas.DrawTile(Texture'HudLine', FMin(27.0*(float(PawnOwner.Weapon.AmmoType.AmmoAmount)/float(PawnOwner.Weapon.AmmoType.MaxAmmo)),27),2.0,0,0,32.0,2.0); } simulated function ChangeCrosshair(int d) //wierd bug that caused challengehud crosshair to change to.... { olCrosshair = olCrosshair + d; if ( olCrosshair>6 ) olCrosshair=0; else if ( olCrosshair < 0 ) olCrosshair = 6; } simulated function DrawCrossHair( canvas Canvas, int StartX, int StartY ) { if (olCrosshair>5) Return; Canvas.SetPos(StartX, StartY ); Canvas.Style = 2; if (olCrosshair==0) Canvas.DrawIcon(Texture'Crosshair1', 1.0); else if (olCrosshair==1) Canvas.DrawIcon(Texture'Crosshair2', 1.0); else if (olCrosshair==2) Canvas.DrawIcon(Texture'Crosshair3', 1.0); else if (olCrosshair==3) Canvas.DrawIcon(Texture'Crosshair4', 1.0); else if (olCrosshair==4) Canvas.DrawIcon(Texture'Crosshair5', 1.0); else if (olCrosshair==5) Canvas.DrawIcon(Texture'Crosshair7', 1.0); Canvas.Style = 1; } simulated function DrawHealth(Canvas Canvas, int X, int Y) { Canvas.CurY = Y; Canvas.CurX = X; Canvas.Font = Canvas.LargeFont; if (PawnOwner.Health<25) Canvas.Font = Font'LargeRedFont'; Canvas.DrawIcon(Texture'IconHealth', 1.0); Canvas.CurY += 29; DrawIconValue(Canvas, Max(0,PawnOwner.Health)); Canvas.CurY -= 29; if (HudMode==0) Canvas.DrawText(Max(0,PawnOwner.Health),False); Canvas.CurY = Y+29; Canvas.CurX = X+2; if (HudMode!=1 && HudMode!=2 && HudMode!=4) Canvas.DrawTile(Texture'HudLine',FMin(27.0*(float(PawnOwner.Health)/float(PawnOwner.Default.Health)),27),2.0,0,0,32.0,2.0); } //read PRI face simulated function Message( PlayerReplicationInfo PRI, coerce string Msg, name MsgType ) { local int I; local float PickupColor; if ((MsgType=='say' || msgtype=='teamsay')&& (pri.talktexture!=none||facetime-1;i--){ //move events down. if (shortmessages[i].contents!="") copyolmessage(shortmessages[i+1],shortmessages[i]); } shortmessages[0].type=msgtype; //setup new message. shortmessages[0].contents=msg; shortmessages[0].PRI=PRI; shortmessages[0].lifetime=6+level.timeseconds; } } simulated function drawunrealmessages(canvas canvas){ //for unreal style criticalevents, pickups, events, speech, and deathmessages local float XL, YL; local int I, J, YPos, ExtraSpace; local float PickupColor; local console Console; local inventory Inv; Console = PlayerPawn(Owner).Player.Console; Canvas.Font = Font'WhiteFont'; if ( !Console.Viewport.Actor.bShowMenu ) DrawTypingPrompt(Canvas, Console); if ( currentpickup.lifetime>level.timeseconds) //pickup message { Canvas.bCenter = true; if ( Level.bHighDetailMode ) Canvas.Style = ERenderStyle.STY_Translucent; else Canvas.Style = ERenderStyle.STY_Normal; PickupColor = 42.0 * (currentpickup.lifetime-level.timeseconds); Canvas.DrawColor.r = PickupColor; Canvas.DrawColor.g = PickupColor; Canvas.DrawColor.b = PickupColor; Canvas.SetPos(4, Console.FrameY - 44); Canvas.DrawText( currentpickup.contents, true ); Canvas.bCenter = false; Canvas.Style = ERenderStyle.STY_Normal; } if (criticalmessage.lifetime>=level.timeseconds){ // Display critical message Canvas.bCenter = true; Canvas.Style = ERenderStyle.STY_Translucent; Canvas.DrawColor.b = 255; Canvas.DrawColor.r = 0; Canvas.DrawColor.g = 128; Canvas.SetPos(0, Console.FrameY/2 - 32); if (translator==none||!translator.bcurrentlyactivated) //don't overwrite translator. canvas.DrawText( criticalmessage.contents, true ); Canvas.bCenter = false; Canvas.Style = ERenderStyle.STY_Normal; } for (i=3;i>-1;i--) //go in backwards. { if (shortmessages[i].contents!=""&&shortmessages[i].lifetime>=level.timeseconds) //thx to setup order this always works :P { Canvas.StrLen("TEST", XL, YL ); YPos = 2 + (10 * J) + (10 * ExtraSpace); if ( !Draw1337MessageHeader(Canvas, ShortMessages[I], YPos) ) { if (ShortMessages[I].Type == 'DeathMessage') { Canvas.DrawColor.r = 160; Canvas.DrawColor.g = 160; Canvas.DrawColor.b = 160; } else { Canvas.DrawColor.r = 200; Canvas.DrawColor.g = 200; Canvas.DrawColor.b = 200; } Canvas.SetPos(4+armoroffset+facemsgset, YPos); } Canvas.DrawText(shortmessages[I].contents, false ); J++; if ( YL == 18.0 ) ExtraSpace++; } } } function CopyolMessage(out somemessage M1, somemessage M2) //copying. { M1.contents = M2.contents; M1.LifeTime = M2.LifeTime; M1.pri = M2.pri; m1.type = m2.type; } simulated function DrawHudIcon(Canvas Canvas, int X, int Y, Inventory Item) //modified so it can find icons. { Local int Width; local texture icon; icon=item.icon; if (Icon==None){ icon=findicon(item); if (icon==none) return; } Width = Canvas.CurX; Canvas.CurX = X; Canvas.CurY = Y; Canvas.DrawIcon(Item.Icon, 1.0); Canvas.CurX -= 30; Canvas.CurY += 28; if ((HudMode!=2 && HudMode!=4 && HudMode!=1) || !Item.bIsAnArmor) Canvas.DrawTile(Texture'HudLine',fMin(27.0,27.0*(float(Item.Charge)/float(Item.Default.Charge))),2.0,0,0,32.0,2.0); Canvas.CurX = Width + 32; } simulated function texture findicon(inventory inv){ //try to get inv based on botpack inv. if (inv.isa('miniammo')) return Texture'UnrealShare.Icons.I_ShellAmmo'; switch inv.class{ case class'rocketpack': return Texture'UnrealShare.Icons.I_RocketAmmo'; case class'pammo': return Texture'pulseicon'; case class'bladehopper': return Texture'UnrealI.Icons.I_RazorAmmo'; case class'flakammo': return Texture'UnrealI.Icons.I_FlakAmmo'; case class'bioammo': return Texture'UnrealI.Icons.I_SludgeAmmo'; case class'shockcore': return Texture'UnrealShare.Icons.I_ASMD'; case class'thighpads': return Texture'UnrealShare.Icons.I_kevlar'; case class'armor2': return Texture'UnrealShare.Icons.I_Armor'; case class'warheadammo': //nothing really fits.... return Texture'UnrealShare.Icons.I_Dispersion'; } return none; } M hP// ============================================================ //coopbase. builds the duel-pages for Co-op..... // ============================================================ class coopbase expands UMenuDialogClientWindow; var string Map; var UMenuPageControl Pages; var UWindowSmallCloseButton CloseButton; var UWindowSmallButton StartButton; var UWindowSmallButton DedicatedButton; var UWindowMessageBox ConfirmStart; var UWindowPageControlPage ServerTab; var coopcw coopTab; function Created() { CreatePages(); DedicatedButton = UWindowSmallButton(CreateControl(class'UWindowSmallButton', WinWidth-156, WinHeight-24, 48, 16)); DedicatedButton.SetText(class'utmenu.utstartgamecw'.default.DedicatedText); DedicatedButton.SetHelpText(class'utmenu.utstartgamecw'.default.DedicatedHelp); CloseButton = UWindowSmallCloseButton(CreateControl(class'UWindowSmallCloseButton', WinWidth-56, WinHeight-24, 48, 16)); StartButton = UWindowSmallButton(CreateControl(class'UWindowSmallButton', WinWidth-106, WinHeight-24, 48, 16)); StartButton.SetText(class'umenu.umenubotmatchclientwindow'.default.StartText); } function CreatePages() { Pages = UMenuPageControl(CreateWindow(class'UMenuPageControl', 0, 0, WinWidth, WinHeight)); Pages.AddPage(class'umenu.umenubotmatchclientwindow'.default.StartMatchTab, class'oldskool.coopcw'); ServerTab = Pages.AddPage(class'utmenu.utstartgamecw'.default.ServerText, class'UTServerSetupSC'); } function Resized() { Pages.WinWidth = WinWidth; Pages.WinHeight = WinHeight - 24; CloseButton.WinLeft = WinWidth-52; CloseButton.WinTop = WinHeight-20; StartButton.WinLeft = WinWidth-102; StartButton.WinTop = WinHeight-20; DedicatedButton.WinLeft = WinWidth-152; DedicatedButton.WinTop = WinHeight-20; } function Paint(Canvas C, float X, float Y) { local Texture T; T = GetLookAndFeelTexture(); DrawUpBevel( C, 0, LookAndFeel.TabUnselectedM.H, WinWidth, WinHeight-LookAndFeel.TabUnselectedM.H, T); } function Notify(UWindowDialogControl C, byte E) { switch(E) { case DE_Click: switch (C) { case StartButton: if ((GetLevel().Game.Default.bWorldLog == True) && (GetPlayerOwner().GetNGSecret() == "") && (!GetPlayerOwner().ngSecretSet)) { ConfirmStart = MessageBox(class'utmenu.utstartgamecw'.default.ConfirmTitle, class'utmenu.utstartgamecw'.default.ConfirmText, MB_YesNo, MR_Yes, MR_No); } else StartPressed(); return; case DedicatedButton: DedicatedPressed(); return; default: Super.Notify(C, E); return; } default: Super.Notify(C, E); return; } } function GetDesiredDimensions(out float W, out float H) { Super(UWindowWindow).GetDesiredDimensions(W, H); H += 30; } function MessageBoxDone(UWindowMessageBox W, MessageBoxResult Result) { if(W == ConfirmStart) { switch(Result) { case MR_Yes: Root.CreateWindow(class(DynamicLoadObject("UTMenu.ngWorldSecretWindow", class'Class')), 100, 100, 200, 200, Root, True); break; case MR_No: GetPlayerOwner().ngSecretSet = True; GetPlayerOwner().SaveConfig(); StartPressed(); break; } } } function DedicatedPressed() { local string URL; local GameInfo NewGame; local string LanPlay; if(UTServerSetupPage(UTServerSetupSC(ServerTab.Page).ClientArea).bLanPlay) LanPlay = " -lanplay"; if (oldskoolnewgameclientwindow(ownerwindow).selectedpacktype~="custom") URL = Map $ "?Game=oldskool.coopgame2?Mutator="$oldskoolnewgameclientwindow(ownerwindow).MutatorList; else URL = oldskoolnewgameclientwindow(ownerwindow).selectedpackclass.default.basedir$Map $ "?Game="$oldskoolnewgameclientwindow(ownerwindow).selectedpackclass.default.coopgameinfo$"?Mutator="$oldskoolnewgameclientwindow(ownerwindow).MutatorList; URL = URL $ "?Listen"; ParentWindow.Close(); oldskoolnewgameclientwindow(ownerwindow).Close(); Root.Console.CloseUWindow(); GetPlayerOwner().ConsoleCommand("RELAUNCH "$URL$LanPlay$" -server log="$class'oldskool.coopgame2'.Default.ServerLogName); } // Override botmatch's start behavior function StartPressed() { local string URL, Checksum; local GameInfo NewGame; class'coopgame2'.Static.ResetGame(); if (oldskoolnewgameclientwindow(ownerwindow).selectedpacktype~="custom") URL = Map $ "?Game=oldskool.coopgame2?Mutator="$oldskoolnewgameclientwindow(ownerwindow).MutatorList; else URL = oldskoolnewgameclientwindow(ownerwindow).selectedpackclass.default.basedir$Map$"?Game="$oldskoolnewgameclientwindow(ownerwindow).selectedpackclass.default.coopgameinfo$"?Mutator="$oldskoolnewgameclientwindow(ownerwindow).MutatorList; URL = URL $ "?Listen"; class'StatLog'.Static.GetPlayerChecksum(GetPlayerOwner(), Checksum); URL = URL $ "?Checksum="$Checksum; ParentWindow.Close(); oldskoolnewgameclientwindow(ownerwindow).Close(); Root.Console.CloseUWindow(); GetPlayerOwner().ClientTravel(URL, TRAVEL_Absolute, false); } M YUn#w UUUa/!DwU f * J a  J -'J YU M V// ============================================================ //coopcw. Cleint window to setup co-op games......... // ============================================================ class coopcw expands UMenuPageWindow; //main window vars (settings done via localization in UT, thus no text vars....... var oldskoolnewgameclientwindow mainparent; var coopbase pagebase; var uwindowcombocontrol mapcombo; var UWindowSmallCloseButton CloseButton; var UWindowSmallButton StartButton; var UWindowSmallButton DedicatedButton; var UWindowHSliderControl FFSlider; var UWindowEditControl MaxPlayersEdit; var UWindowMessageBox ConfirmStart; var UWindowEditControl MaxSpectatorsEdit; var UWindowHSliderControl SpeedSlider; var UWindowEditControl GamePasswordEdit; //webserver vars var Uwindowlabelcontrol adminlabel; var UWindowEditControl AdminPasswordEdit; var UWindowCheckbox baddiecheck; var UWindowEditControl WebAdminUsernameEdit; var UWindowEditControl WebAdminPasswordEdit; var UWindowEditControl ListenPortEdit; //create window function Created() { local int ControlWidth, ControlLeft, ControlRight; local int CenterWidth, CenterPos, i, Controloffset; local int FFS; pagebase = coopbase(GetParent(class'oldskool.coopbase')); //NEVER should happen....... except cause of h4x0rs :D if (pagebase == None) Log("Error: coopcw without coopbase window. Stop hacking these scripts you idiot!!!"); mainParent = oldskoolnewgameclientwindow(pagebase.OwnerWindow); ControlOffset = 10; Super.Created(); ControlWidth = WinWidth/2.5; ControlLeft = (WinWidth/2 - ControlWidth)/2; ControlRight = WinWidth/2 + ControlLeft; CenterWidth = (WinWidth/4)*3; CenterPos = (WinWidth - CenterWidth)/2; /*not fully in client....... DedicatedButton = UWindowSmallButton(CreateControl(class'UWindowSmallButton', WinWidth-156, WinHeight-24, 48, 16)); DedicatedButton.SetText(class'utmenu.utstartgamecw'.default.DedicatedText); DedicatedButton.SetHelpText(class'utmenu.utstartgamecw'.default.DedicatedHelp); CloseButton = UWindowSmallCloseButton(CreateControl(class'UWindowSmallCloseButton', WinWidth-56, WinHeight-24, 48, 16)); StartButton = UWindowSmallButton(CreateControl(class'UWindowSmallButton', WinWidth-106, WinHeight-24, 48, 16)); StartButton.SetText(class'umenu.umenubotmatchclientwindow'.default.StartText); */ //main stuff mapcombo = UWindowcombocontrol(CreateControl(class'UWindowcombocontrol', ControlLeft, ControlOffset, ControlWidth, 1)); MapCombo.SetButtons(True); MapCombo.SetText(class'umenu.umenustartmatchclientwindow'.default.MapText); MapCombo.SetHelpText(class'umenu.umenustartmatchclientwindow'.default.MapHelp); MapCombo.SetFont(F_Normal); MapCombo.SetEditable(False); for (i=0;i<44;i++){ if (mainparent.selectedpackclass.default.maps[i]!='') Mapcombo.additem(string(mainparent.selectedpackclass.default.maps[i]), string(mainparent.selectedpackclass.default.maps[i])); } mapcombo.setselectedindex(0); if (mainparent.selectedpacktype~="custom"){ mapcombo.hidewindow(); pagebase.map=mainparent.map;} else pagebase.map=string(mainparent.selectedpackclass.default.maps[0]); ControlOffset += 25; MaxPlayersEdit = UWindowEditControl(CreateControl(class'UWindowEditControl', ControlLeft, ControlOffset, ControlWidth, 1)); MaxPlayersEdit.SetText(class'umenu.umenugamerulesbase'.default.MaxPlayersText); MaxPlayersEdit.SetHelpText(class'umenu.umenugamerulesbase'.default.MaxPlayersHelp); MaxPlayersEdit.SetFont(F_Normal); MaxPlayersEdit.SetNumericOnly(True); MaxPlayersEdit.SetMaxLength(2); MaxPlayersEdit.Align = TA_Right; MaxPlayersEdit.SetDelayedNotify(True); // Max Spectators MaxSpectatorsEdit = UWindowEditControl(CreateControl(class'UWindowEditControl', ControlRight, ControlOffset, ControlWidth, 1)); MaxSpectatorsEdit.SetText(class'umenu.umenugamerulesbase'.default.MaxSpectatorsText); MaxSpectatorsEdit.SetHelpText(class'umenu.umenugamerulesbase'.default.MaxSpectatorsHelp); MaxSpectatorsEdit.SetFont(F_Normal); MaxSpectatorsEdit.SetNumericOnly(True); MaxSpectatorsEdit.SetMaxLength(2); MaxSpectatorsEdit.Align = TA_Right; MaxSpectatorsEdit.SetDelayedNotify(True); ControlOffset += 25; if(MaxPlayersEdit != None) MaxPlayersEdit.SetValue(string(Class'oldskool.coopgame2'.Default.MaxPlayers)); if(MaxSpectatorsEdit != None) MaxSpectatorsEdit.SetValue(string(Class'oldskool.coopgame2'.Default.MaxSpectators)); baddiecheck = UWindowCheckBox(CreateControl(class'UWindowCheckBox', Controlleft, ControlOffset, centerwidth*2, 1)); baddiecheck.SetText("Allow spectating of monsters"); baddiecheck.SetFont(F_Normal); baddiecheck.bChecked = class'Oldskool.coopgame2'.default.baddiespectate; ControlOffset += 25; FFSlider = UWindowHSliderControl(CreateControl(class'UWindowHSliderControl', CenterPos, ControlOffset, CenterWidth, 1)); FFSlider.SetRange(0, 10, 1); FFS = Class'oldskool.coopgame2'.Default.FriendlyFireScale * 10; FFSlider.SetValue(FFS); FFSlider.SetText(class'utmenu.utteamrcwindow'.default.FFText$" ["$FFS*10$"%]:"); FFSlider.SetHelpText(class'utmenu.utteamrcwindow'.default.FFHelp); FFSlider.SetFont(F_Normal); ControlOffset += 25; SpeedSlider = UWindowHSliderControl(CreateControl(class'UWindowHSliderControl', CenterPos, ControlOffset, CenterWidth, 1)); SpeedSlider.SetRange(50, 200, 5); SpeedSlider.SetText(class'umenu.umenugamesettingsbase'.default.speedtext); SpeedSlider.SetHelpText(class'umenu.umenugamesettingsbase'.default.SpeedHelp); SpeedSlider.SetFont(F_Normal); SpeedSlider.SetValue(Class'oldskool.coopgame2'.Default.GameSpeed * 100.0); ControlOffset += 25; } //stuff...... function BeforePaint(Canvas C, float X, float Y) { local int ControlWidth, ControlLeft, ControlRight; local int CenterWidth, CenterPos, ButtonWidth, ButtonLeft, EditWidth; Super.BeforePaint(C, X, Y); ControlWidth = WinWidth/2.5; ControlLeft = (WinWidth/2 - ControlWidth)/2; ControlRight = WinWidth/2 + ControlLeft; CenterWidth = (WinWidth/4)*3; CenterPos = (WinWidth - CenterWidth)/2; MapCombo.SetSize(CenterWidth, 1); MapCombo.WinLeft = CenterPos; MapCombo.EditBoxWidth = 150; baddiecheck.SetSize(CenterWidth, 1); baddiecheck.WinLeft = CenterPos; FFSlider.SetSize(CenterWidth, 1); FFSlider.SliderWidth = 90; FFSlider.WinLeft = CenterPos; if(MaxPlayersEdit != None) { MaxPlayersEdit.SetSize(ControlWidth, 1); MaxPlayersEdit.WinLeft = ControlLeft; MaxPlayersEdit.EditBoxWidth = 25; } if(MaxSpectatorsEdit != None) { MaxSpectatorsEdit.SetSize(ControlWidth, 1); MaxSpectatorsEdit.WinLeft = ControlRight; MaxSpectatorsEdit.EditBoxWidth = 25; } SpeedSlider.SetSize(CenterWidth, 1); SpeedSlider.SliderWidth = 90; SpeedSlider.WinLeft = CenterPos; EditWidth = CenterWidth - 100; } function Notify(UWindowDialogControl C, byte E) { switch(E) { case DE_Change: switch(C) { case MaxPlayersEdit: MaxPlayersChanged(); break; case MaxSpectatorsEdit: MaxSpectatorsChanged(); break; case FFSlider: FFChanged(); break; case baddiecheck: class'Oldskool.coopgame2'.default.baddiespectate = baddiecheck.bChecked; break; case SpeedSlider: SpeedChanged(); break; case mapcombo: pagebase.map=string(mainparent.selectedpackclass.default.maps[mapcombo.Getselectedindex()]); break; } } Super.Notify(C, E); } function MaxPlayersChanged() { if(int(MaxPlayersEdit.GetValue()) > 16) MaxPlayersEdit.SetValue("16"); if(int(MaxPlayersEdit.GetValue()) < 1) MaxPlayersEdit.SetValue("1"); Class'oldskool.coopgame2'.Default.MaxPlayers = int(MaxPlayersEdit.GetValue()); } function MaxSpectatorsChanged() { if(int(MaxSpectatorsEdit.GetValue()) > 16) MaxSpectatorsEdit.SetValue("16"); if(int(MaxSpectatorsEdit.GetValue()) < 0) MaxSpectatorsEdit.SetValue("0"); Class'oldskool.coopgame2'.Default.MaxSpectators = int(MaxSpectatorsEdit.GetValue()); } function SpeedChanged() { local int S; S = SpeedSlider.GetValue(); SpeedSlider.SetText(class'umenu.umenugamesettingsbase'.default.SpeedText$" ["$S$"%]:"); Class'oldskool.coopgame2'.Default.GameSpeed = float(S) / 100.0; } function FFChanged() { Class'oldskool.coopgame2'.Default.FriendlyFireScale = FFSlider.GetValue() / 10; FFSlider.SetText(class'utmenu.utteamrcwindow'.default.FFText$" ["$int(FFSlider.GetValue()*10)$"%]:"); } function RightClickTab() // :D { MessageBox("Think about it!", "In case you haven't noticed, right clicking doesn't do anything in Uwindow's mode.\\nWell, at least in Epic's windows ;)", MB_OK, MR_OK, MR_OK); //;p } M J M M ]l BDaE AaE aE E aE :|VE,u4etc.rE -E- E )l j f E-D w)*aw)*)a/!DT Hj Voice_{T )T r)*))  r)*)Botpack.VoiceMaleOne aa)a/!A ) B aw)*)aw)*r )))!Y6) @-D ), ) M ZP |T(M- -a(4-C_P ~C,CCP .C.b.-(..D.b .- {VC"?:4-. $C$/..C C=,$ M @             # '!7) %" *$$&/ !6+)) / $ *!5&?- 10#) 7&"-$%#",%/'%-5'1(?&*&$C0A 7)%A"0#3+:,,*&!6 =0;-7-*:,+,3-$70C3L7>/2/*;1 #@!;3"DTA3/J52,D4"?7#'V85-444I;@8&S9F8#+B-WA $K;.(e H>$6T<9:J>)2G1Q:)G?,;<;ZGC>5N@*RC#GQZv=]hL 3P4FB:TE+_?*-y YJ*GE@`D.OH7N4SWI17Z93mVZQ)gL&#Eh\J4PJ>MJJ- XN?PNFaO7|\+KmbU2lS.D]ESPKe[/\SBH,twY%Sp&OPV?jBXVL1 cXDm\7gX5`\Ll0}9Syqa:Z _t4EvG^]Wd`Pre@p_Jp; 8]}h:f.ucLkgU^mXge`{lF8zkq>yhSNc;cQUx'mnf{+xo_sRzBMoz tvmx`LKs|\_dBjS}wgOzʟ~qUfDxԯb{dؐM~ndbܨXnĊڶg˸}Ũmxz̝ݯM i // ============================================================ // framed window for co-op // ============================================================ class coopwindow expands UWindowFramedWindow; function Created() { bStatusBar = False; bSizable = False; Super.Created(); SetSizePos(); } function SetSizePos() { if(Root.WinHeight < 290) SetSize(Min(Root.WinWidth-10, 280) , 220); else SetSize(Min(Root.WinWidth-10, 280), 270); WinLeft = Root.WinWidth/2 - WinWidth/2; WinTop = Root.WinHeight/2 - WinHeight/2; } function ResolutionChanged(float W, float H) { SetSizePos(); Super.ResolutionChanged(W, H); } M aVh,jSecret MessageCongradulations! You have found the secret message. E-mail me at usaar33@yahoo.com with the password\n'Hyp3r10n s00x (1 w4r3d j00!!)'\nto be rewarded!$$$ M dM G-x-a(G-4--L 4-4-9Gset ini:Engine.Engine.AudioDevice UseCDMusic trueB-'B-'M-(CD Track3 Select the CD track number you wish to playGA You cannot reset to level music while CD music is enabled+>?B&.&. &. ?.94ppCD Track S. selectedr. $C$.-' -' (.-( -( B- -B-(G-a/!KO _M ~O ,xJO M &>?x&&., x.& ? 92ppSong Number S  selectedx&+9Only One Song AvailablerSong Number/ Select the song number you wish to playG. Reset the music to the level's defaultra/!Kw*).=,$. $=,$M-' =... C=,$-f 'CGpset ini:Engine.Engine.AudioDevice UseDigitalMusic T-L  M )M cCp 2gUMo o o o o PqC= Co-op GameM M Y// ============================================================ // coop hud... different calling of fragcount.... // Psychic_313: unchanged // ============================================================ class coopHUD expands oldskoolHUD; simulated function DrawFragCount(Canvas Canvas, int X, int Y) //to make better use of scoring #'s... { local color oldcol; Canvas.SetPos(X,Y); if (realicons) { Canvas.DrawIcon(Texture'Realskull', 1.0); oldcol=canvas.drawcolor; canvas.drawcolor=redcolor; } else Canvas.DrawIcon(Texture'IconSkull', 1.0); Canvas.CurX -= 31; Canvas.CurY += 23; if ( PawnOwner.PlayerReplicationInfo == None ) return; Canvas.Font = Font'TinyWhiteFont'; if (PawnOwner.PlayerReplicationInfo.score<10000) Canvas.CurX+=6; if (PawnOwner.PlayerReplicationInfo.score<1000) Canvas.CurX+=6; if (PawnOwner.PlayerReplicationInfo.score<100) Canvas.CurX+=6; if (PawnOwner.PlayerReplicationInfo.score<10) Canvas.CurX+=6; if (PawnOwner.PlayerReplicationInfo.score<0) Canvas.CurX-=6; if (PawnOwner.PlayerReplicationInfo.score<-9) Canvas.CurX-=6; if (PawnOwner.PlayerReplicationInfo.score<-90) Canvas.CurX-=6; if (PawnOwner.PlayerReplicationInfo.score<-900) Canvas.CurX-=6; if (PawnOwner.PlayerReplicationInfo.score<-9000) Canvas.CurX-=6; Canvas.DrawText(int(PawnOwner.PlayerReplicationInfo.score),False); if (realicons) canvas.drawcolor=oldcol; } M `K_"X~|Ending SequenceuK|wu*eua/!puauu8 nKa/!u.-P'uKwu*|ug uu.-P(稨All inventory fromKis accepted M eN?2; -f  g Ng ?,g -f (.D?&.&:Gset ini:Engine.Engine.AudioDevice UseCDMusic false M @wzvztxsxp~uqvepdo`~kalrxm}sl~smtnuovnvjrh}pI\Pgqa|kgsco]}idqbo]j`m\~iY|f^lYh\l]mSzbT{cZjUeS}cO{`PbSfRgI{\K_McCzXF\ByWLdIb=tRD\9pN@~XF`=yT@YD^={U9yQ?Z[7~R3xM0sJ:[2P/yK7X'jA3T-~L/P)yH.Q,O.T'I)Od7%L"G#L#N_1BIEG}=BH?CE? x5 ;B <<u0?h+:65:6:>IMOPRS T U!V!W!Y"Z"[#\#]$^$_$a%b&c&d&e'f'g'h(i(j)l)m*n*o*p+q+r,s,t,u-v-w.x.y.z/{/}0~01112334445566789:|~mvf}ojtfpd}nithscn`|kUn_ZlP~bM{_FyZz}uzr~w{}M jJ M=a<J-a(J ~_,gJ_J &>?g&&..g&?.97ppSong Number S. selected9g&+9Only One Song AvailableHr M M}n8'#w }U}a/!Dw} f * |a  w|*|-'| Y}}|| I} M ~Wg%&r*a&!&W{- w*k?,a&!XWxa&!cW?,a&!NWa&!JW M ljgMI?-ao4-K_H ~K,KKH .K.D.b -j M j{eH-w*:&r*-bL=<6-a $?(zD? OO{>{ O+?{ { ,-a{$?(C?Fa{$?(HD? M iwz%wa/!N |w Gget core.system savepath..\savew(Gset core.system savepath ..\Savewa/!O |w Gget core.system savepath:savew&Gset core.system savepath :Savem -|Vlegacy.LegacySP a/!Ww W-D w$@w@*@a/!u.@@@w \-F r*WARNING: no SP mutator!  -^/a0 jjv!Amja/!X jaj`ju!A10-` | -]-b -B-{ -A-z -@-y -h-x -G-v -{-u -l-t -E-o -X-n -[-m -M-l -S-k b w*w2.$w. $$$ M Ux// ============================================================ // team hud with real ctf enhancements..... // Psychic_313: unchanged // ============================================================ class oldskoolteamhud expands oldskoolbaseHUD; // RealTeamHUD #exec TEXTURE IMPORT NAME=I_RealRedSkull FILE=TEXTURES\I_RealRedSkull.PCX GROUP="Icons" MIPS=OFF #exec TEXTURE IMPORT NAME=I_RealBlueSkull FILE=TEXTURES\I_RealBlueSkull.PCX GROUP="Icons" MIPS=OFF var bool bTraceIdentify; //reduction of iterators.... simulated function DrawTeamGameSynopsis(Canvas Canvas) { local TeamInfo TI; local float XL, YL; local TournamentGameReplicationInfo GRI; local int i; if (class==class'realctfhud') //dont do this for CTF (scores on right side) return; GRI = TournamentGameReplicationInfo(PlayerOwner.GameReplicationInfo); if ( GRI != None ){ for ( i=0 ;i<4; i++ ) { Ti=GRI.Teams[i]; if (TI.Size > 0) { Canvas.Font = Font'WhiteFont'; Canvas.DrawColor = TeamColor[TI.TeamIndex]; Canvas.StrLen(TeamName[TI.TeamIndex], XL, YL); Canvas.SetPos(0, Canvas.ClipY - 128 + 16 * TI.TeamIndex); Canvas.DrawText(TeamName[TI.TeamIndex], false); Canvas.SetPos(XL, Canvas.ClipY - 128 + 16 * TI.TeamIndex); Canvas.DrawText(int(TI.Score), false); } } } Canvas.DrawColor.R = 255; Canvas.DrawColor.G = 255; Canvas.DrawColor.B = 255; } final simulated function int OwnerTeam() { local byte Team; local Pawn p; Team = 255; p = Pawn(Owner); if (p != none) { if (p.PlayerReplicationInfo != none) { Team = p.PlayerReplicationInfo.Team; } } return(Team); } simulated function bool TraceIdentify(canvas Canvas) { local actor Other; local vector HitLocation, HitNormal, X, Y, Z, StartTrace, EndTrace; local PlayerPawn ppOwner; ppOwner = PlayerPawn(Owner); StartTrace = Owner.Location; StartTrace.Z += ppOwner.BaseEyeHeight; EndTrace = StartTrace + vector(ppOwner.ViewRotation) * 1000.0; Other = Trace(HitLocation, HitNormal, EndTrace, StartTrace, true); if (Other != none) { if ( (Pawn(Other) != None) && (Pawn(Other).bIsPlayer) ) { IdentifyTarget = Pawn(Other); IdentifyFadeTime = 3.0; } } else if ( (Other != None) && SpecialIdentify(Canvas, Other) ) return false; //we can leave here... if ( IdentifyFadeTime == 0.0 ) { bTraceIdentify = false; } else if ( (IdentifyTarget == None) || (!IdentifyTarget.bIsPlayer) || (IdentifyTarget.PlayerReplicationInfo == None )) { bTraceIdentify = false; } else if (IdentifyTarget.bHidden) { if (ppOwner.GameReplicationInfo.bTeamGame && (IdentifyTarget.PlayerReplicationInfo.Team == ppOwner.PlayerReplicationInfo.Team)) { // Invisible teammates are identified bTraceIdentify = true; } else { bTraceIdentify = false; } } else { bTraceIdentify = true; } return(bTraceIdentify); } simulated function bool SpecialIdentify(Canvas Canvas, Actor Other ) //for DOM { return false; } function DrawTalkFace(Canvas Canvas, float YPos) //draw the face..... (with team stuff) { if ( Hudmode<5 ) { Canvas.Style = ERenderStyle.STY_Normal; Canvas.SetPos(armoroffset, 4); Canvas.DrawColor = FaceTeam; Canvas.DrawTile(texture'botpack.LadrStatic.Static_a00',Ypos + 7, YPos + 7, 0-faceareaoffset, 0, texture'FacePanel1'.USize-faceareaoffset, texture'FacePanel1'.VSize); Canvas.DrawColor = WhiteColor; Canvas.Style = ERenderStyle.STY_Normal; Canvas.SetPos(armoroffset, 4); Canvas.DrawTile(FaceTexture, Ypos-1, YPos - 1, 0-faceareaoffset, 0, FaceTexture.USize-faceareaoffset, FaceTexture.VSize); Canvas.Style = ERenderStyle.STY_Translucent; Canvas.DrawColor = FaceColor; Canvas.SetPos(armoroffset, 0); Canvas.DrawTile(texture'botpack.LadrStatic.Static_a00',Ypos + 7, YPos + 7, 0-faceareaoffset, 0, texture'botpack.LadrStatic.Static_a00'.USize-faceareaoffset, texture'botpack.LadrStatic.Static_a00'.VSize); Canvas.DrawColor = WhiteColor; } } final simulated function DrawSkull(Canvas Canvas, int X, int Y, texture SkullTexture, optional bool bDrawRed) { local int iScore; Canvas.SetPos(X,Y); Canvas.DrawIcon(SkullTexture, 1.0); Canvas.CurX -= 19; Canvas.CurY += 23; Canvas.Font = Font'TinyWhiteFont'; iScore = 0; if (Owner.IsA('playerPawn')) { if (PawnOwner.PlayerReplicationInfo != none) { iScore = PawnOwner.PlayerReplicationInfo.Score; } } if (iScore<100) Canvas.CurX+=6; if (iScore<10) Canvas.CurX+=6; if (iScore<0) Canvas.CurX-=6; if (bDrawRed) { Canvas.DrawColor.G = 0; Canvas.DrawColor.B = 0; } Canvas.DrawText(iScore,False); if (bDrawRed) { Canvas.DrawColor.G = 255; Canvas.DrawColor.B = 255; } } simulated function DrawIdentifyInfo(canvas Canvas, float PosX, float PosY) { local float XL, YL, XOffset; if (!TraceIdentify(Canvas)) return; Canvas.Font = Font'WhiteFont'; Canvas.Style = 3; XOffset = 0.0; Canvas.StrLen(IdentifyName$": "$IdentifyTarget.PlayerReplicationInfo.PlayerName, XL, YL); XOffset = Canvas.ClipX/2 - XL/2; Canvas.SetPos(XOffset, Canvas.ClipY - 74); if(IdentifyTarget.PlayerReplicationInfo.PlayerName != "") { SetDrawColor(Canvas,IdentifyTarget.PlayerReplicationInfo.Team,2,IdentifyFadeTime); Canvas.StrLen(IdentifyName$": ", XL, YL); XOffset += XL; Canvas.DrawText(IdentifyName$": "); Canvas.SetPos(XOffset, Canvas.ClipY - 74); SetDrawColor(Canvas,IdentifyTarget.PlayerReplicationInfo.Team,1,IdentifyFadeTime); Canvas.StrLen(IdentifyTarget.PlayerReplicationInfo.PlayerName, XL, YL); Canvas.DrawText(IdentifyTarget.PlayerReplicationInfo.PlayerName); } XOffset = 0.0; Canvas.StrLen(IdentifyHealth$": "$IdentifyTarget.Health, XL, YL); XOffset = Canvas.ClipX/2 - XL/2; Canvas.SetPos(XOffset, Canvas.ClipY - 64); if (PlayerPawn(Owner).GameReplicationInfo.bTeamGame && (Pawn(Owner).PlayerReplicationInfo.Team == IdentifyTarget.PlayerReplicationInfo.Team)) { SetDrawColor(Canvas,IdentifyTarget.PlayerReplicationInfo.Team,2,IdentifyFadeTime); Canvas.StrLen(IdentifyHealth$": ", XL, YL); XOffset += XL; Canvas.DrawText(IdentifyHealth$": "); Canvas.SetPos(XOffset, Canvas.ClipY - 64); SetDrawColor(Canvas,IdentifyTarget.PlayerReplicationInfo.Team,1,IdentifyFadeTime); Canvas.StrLen(IdentifyTarget.Health, XL, YL); Canvas.DrawText(IdentifyTarget.Health); } Canvas.Style = 1; Canvas.DrawColor.R = 255; Canvas.DrawColor.G = 255; Canvas.DrawColor.B = 255; } simulated function DrawFragCount(Canvas Canvas, int X, int Y) { local texture SkullTexture; if (realicons) Skulltexture = texture'realskull'; else SkullTexture = texture'IconSkull'; //default....... switch (ownerTeam()) { case 0: if (realicons) SkullTexture = Texture'I_RealRedSkull'; else SkullTexture = Texture'redskull'; break; case 1: if (realicons) SkullTexture = Texture'I_RealBlueSkull'; else Skulltexture = Texture'blueskull'; break; case 2: SkullTexture = texture'GreenSkull'; //normal skullz for these colors..... (no realctf versions) break; case 3: SkullTexture = texture'YellowSkull'; break; } If (pawnowner.PlayerReplicationInfo.Team!=255||!realicons) DrawSkull(Canvas, X, Y, SkullTexture); else DrawSkull(Canvas, X, Y, SkullTexture, true); } M G// ============================================================ //HUD taken from realctf.... and edited for ctf-plus, so to speak..... // Psychic_313: Hey, UsAaR33, if Team is 0 or 1, Abs(Team-1) == 1-Team. // Sorry, the extra Abs() just offended my sense of mathematical laziness :-) // ============================================================ class realctfhud expands oldskoolteamhud; // RealCTFHUD #exec TEXTURE IMPORT NAME=I_RealRedFlagGone FILE=TEXTURES\I_RealRedFlagGone.PCX GROUP="Icons" MIPS=OFF #exec TEXTURE IMPORT NAME=I_RealRedFlagInBase FILE=TEXTURES\I_RealRedFlagInBase.PCX GROUP="Icons" MIPS=OFF #exec TEXTURE IMPORT NAME=I_RealBlueFlagGone FILE=TEXTURES\I_RealBlueFlagGone.PCX GROUP="Icons" MIPS=OFF #exec TEXTURE IMPORT NAME=I_RealBlueFlagInBase FILE=TEXTURES\I_RealBlueFlagInBase.PCX GROUP="Icons" MIPS=OFF var CTFFlag MyFlag; simulated function postbeginplay(){ Super.PostBeginPlay(); SetTimer(1.0, True); } function Timer() //message thing.... { if ( (PlayerOwner == None) || (Pawn(Owner) == None) ) return; if ( Pawn(Owner).PlayerReplicationInfo.HasFlag != None ) PlayerOwner.ReceiveLocalizedMessage( class'CTFMessage2', 0 ); if ( (MyFlag != None) && !MyFlag.bHome ) PlayerOwner.ReceiveLocalizedMessage( class'CTFMessage2', 1 ); } simulated function DrawFlag(Canvas Canvas, int X, int Y, int teamindex) { local Texture texFlag; local CTFFlag Flag; local int iScore; local playerreplicationInfo pri; local float fWidth,fHeight; local color colorOld; //local CTFReplicationInfo CTFReplicationInfo; local teaminfo ti; local TournamentGameReplicationInfo GRI; if ( (PlayerOwner == None) || (PlayerOwner.GameReplicationInfo == None)) return; Flag = CTFReplicationInfo(PlayerOwner.GameReplicationInfo).FlagList[teamindex]; // Determine which flag status icon to draw if ( Flag != None ) { if (Flag.Team == Pawn(Owner).PlayerReplicationInfo.Team) MyFlag = Flag; if (TeamIndex == 0) { // Red team if (Flag.bHome) texFlag = Texture'I_RealRedFlagInBase'; else texFlag = Texture'I_RealRedFlagGone'; } else if (TeamIndex == 1) { // Blue team if ( Flag.bHome ) texFlag = Texture'I_RealBlueFlagInBase'; else texFlag = Texture'I_RealBlueFlagGone'; } else //error return; } else //error return; // Draw flag status icon Canvas.SetPos(X,Y); Canvas.DrawIcon(texFlag, 1.0); // Draw team score Canvas.CurX -= 25; Canvas.CurY += 23; Canvas.Font = Font'TinyWhiteFont'; GRI = TournamentGameReplicationInfo(PlayerOwner.GameReplicationInfo); TI = GRI.Teams[teamindex]; iScore = int(ti.Score); if (iScore < 1000) Canvas.CurX+=6; if (iScore < 100) Canvas.CurX+=6; if (iScore < 10) Canvas.CurX+=6; if (iScore < 0) Canvas.CurX-=6; Canvas.DrawText(iScore); if (Flag.bHeld) { // Draw name of flag carrier if (level.netmode!=nm_client) pri = flag.Holder.playerreplicationinfo; else //client-side replication. I have to go through the entire PRIs to find it :( pri = findflagholder(flag); if (pri != none) { Canvas.Font = Font'WhiteFont'; Canvas.StrLen(pri.PlayerName,fWidth,fHeight); if (X == 0) { Canvas.CurX = X + 34; } else { Canvas.CurX = X - fWidth - 2; } Canvas.CurY = Y + (32 - fHeight); SetDrawColor(Canvas,pri.Team,2); Canvas.DrawText(pri.PlayerName); Canvas.DrawColor.R = 255; Canvas.DrawColor.G = 255; Canvas.DrawColor.B = 255; } } } simulated function DrawFlagStatus(Canvas Canvas, int X, int Y) { local texture texBase; local int Team; // Friendly flag Team = OwnerTeam(); if (Team == 255) // Spectator Team = 0; // Draw friendly flag in place DrawFlag(Canvas,X,Y,Team); // Enemy flag // Draw enemy flag status above friendly flag status // Psychic_313: I do maths :-) UsAaR33: hehe DrawFlag(Canvas,X,Y-32,1 - Team); } simulated function DrawFragCount(Canvas Canvas, int X, int Y) { Super.DrawFragCount(Canvas,X,Y); DrawFlagStatus(Canvas,X,Y-42); } final simulated function Playerreplicationinfo FindFlagHolder (ctfflag flag){ //search through PRIs to get flag holder local int i; for (i=0;i<32;i++){ if (playerowner.gamereplicationinfo.priarray[i]==none) return none; //? if (playerowner.gamereplicationinfo.priarray[i].hasflag==flag) return playerowner.gamereplicationinfo.priarray[i]; } } M m// ============================================================ // coopgame2.the new co-operative mode.... // Psychic_313: changed login to be a little less hard-coded // (checks mesh name and bSinglePlayer instead of requiring // that SkTrooper is still in OldSkool.u, which it isn't) // [yes, I know it's still there... shhh] // ============================================================ class coopgame2 expands UnrealGameInfo; var() config float friendlyfirescale; //changed the no friendly fire to this.... var bool bSpecialFallDamage; var float LastTauntTime; var int LastTaunt[4]; //taunt holder..... var config bool baddiespectate; function PostBeginPlay() { Super.PostBeginPlay(); bClassicDeathMessages = True; } function bool CanSpectate( pawn Viewer, actor ViewTarget ){ if ( ViewTarget.bIsPawn && (Pawn(ViewTarget).PlayerReplicationInfo != None) && Pawn(ViewTarget).PlayerReplicationInfo.bIsSpectator ) return false; if (viewtarget.bIsPawn && !Pawn(Viewtarget).bisplayer ) //only spectate baddies if server allows this... return baddiespectate; if (Viewtarget.bispawn) return true; return false; } function bool IsRelevant(actor Other) { // hide all playerpawns (these are incoming ones...) if ( Other.IsA('PlayerPawn') && !Other.IsA('Spectator') ) { Other.SetCollision(false,false,false); Other.bHidden = true; } return Super.IsRelevant(Other); } event PostLogin( playerpawn NewPlayer ){ //local PlayerPawn NewPlayer; local Pawn P; // Start player's music. If (Level.Song!=None) NewPlayer.ClientSetMusic( Level.Song, Level.SongSection, Level.CdTrack, MTRAN_Fade ); else { NewPlayer.ClientSetMusic( Music'olroot.null', 0, 0, MTRAN_Fade ); } //no music..... if (class'spoldskool'.default.unair&&string(class)!="olextras.tvcoop") NewPlayer.Aircontrol=class'pawn'.default.aircontrol; } function float PlaySpawnEffect(inventory Inv) { Playsound(sound'RespawnSound'); if ( !bCoopWeaponMode || !Inv.IsA('Weapon') ) { spawn( class 'ReSpawn',,, Inv.Location ); return 0.3; } return 0.0; } function PreCacheReferences() { //never called - here to force precaching of meshes spawn(class'olweapons.olautomag'); spawn(class'olweapons.oldpistol'); spawn(class'olweapons.oleightball'); spawn(class'olweapons.olflakcannon'); spawn(class'olweapons.olrazorjack'); spawn(class'olweapons.olasmd'); spawn(class'olweapons.olgesbiorifle'); spawn(class'olweapons.olrifle'); spawn(class'olweapons.olminigun'); } function PlayTeleportEffect( actor Incoming, bool bOut, bool bSound) //Ut tele effect..... { local UTTeleportEffect PTE; if ( Incoming.bIsPawn && (Incoming.Mesh != None) ) { if ( bSound ) { PTE = Spawn(class'UTTeleportEffect',,, Incoming.Location, Incoming.Rotation); PTE.Initialize(Pawn(Incoming), bOut); Incoming.PlaySound(sound'Resp2A',, 10.0); } } } event playerpawn Login ( string Portal, string Options, out string Error, class SpawnClass ) { local PlayerPawn NewPlayer; local string InVoice; local string InName, InPassword; local pawn aPawn; if ( ClassIsChildOf(SpawnClass, class'Spectator') ) { if ( !ClassIsChildOf( SpawnClass, class'unrealSpectator') ) //force unreal spectator.... SpawnClass = class'unrealSpectator'; } /*Psychic_313 else if ( !ClassIsChildOf(SpawnClass, class'TournamentPlayer') || Left(string(spawnclass),6) ~= "u4etc."|| ClassIsChildOf(SpawnClass, class'oldskool.sktrooper'))*/ else if ( !ClassIsChildOf(SpawnClass, class'TournamentPlayer') || Left(string(spawnclass),6) ~= "u4etc."|| SpawnClass.default.Mesh==LodMesh'UnrealI.SkTrooper' || !SpawnClass.default.bSinglePlayer ) //taken from tournamentgameinfo SpawnClass = DefaultPlayerClass; NewPlayer = Super.Login(Portal, Options, Error, SpawnClass); if ( NewPlayer != None ) { if ( !NewPlayer.IsA('Spectator') ) { NewPlayer.bHidden = false; NewPlayer.SetCollision(true,true,true); InVoice = ParseOption ( Options, "Voice" ); if ( InVoice != "" ) NewPlayer.PlayerReplicationInfo.VoiceType = class(DynamicLoadObject(InVoice, class'Class')); if ( NewPlayer.PlayerReplicationInfo.VoiceType == None ) NewPlayer.PlayerReplicationInfo.VoiceType = class(DynamicLoadObject(NewPlayer.VoiceType, class'Class')); if ( NewPlayer.PlayerReplicationInfo.VoiceType == None ) NewPlayer.PlayerReplicationInfo.VoiceType = class(DynamicLoadObject("Botpack.VoiceMaleOne", class'Class')); } else{ //we have to swap the spectator's HUD newplayer.hudtype=class'oldskool.oldskoolspectatorhud'; If (newplayer.myhud!=None) //if it is none then the hudtype swap will fix it anyway :D newplayer.myhud.destroy(); newplayer.myhud=none; } log("Logging in to "$Level.Title); if ( Level.Title ~= "The Source Antechamber" ) //level h4ck... { bSpecialFallDamage = true; log("reduce fall damage"); } } return NewPlayer; } function NavigationPoint FindPlayerStart( Pawn Player, optional byte InTeam, optional string incomingName ) { local PlayerStart Dest, Candidate[8], Best; local float Score[8], BestScore, NextDist; local pawn OtherPlayer; local int i, num; local Teleporter Tel; num = 0; //choose candidates foreach AllActors( class 'PlayerStart', Dest ) { if ( (Dest.bSinglePlayerStart || Dest.bCoopStart) && !Dest.Region.Zone.bWaterZone ) { if (num<4) Candidate[num] = Dest; else if (Rand(num) < 4) Candidate[Rand(4)] = Dest; num++; } } if (num>4) num = 4; else if (num == 0) return None; //assess candidates for (i=0;i BestScore) { BestScore = Score[i]; Best = Candidate[i]; } } return Best; } function int ReduceDamage(int Damage, name DamageType, pawn injured, pawn instigatedBy) { if( injured.Region.Zone.bNeutralZone ) return 0; if ( instigatedBy == None ) return Damage; if ( instigatedBy.bIsPlayer && injured.bIsPlayer && (instigatedBy != injured) ) return Damage*friendlyfirescale; if ( (DamageType == 'Fell') && bSpecialFallDamage ) return Min(Damage, 5); return Damage; } function bool ShouldRespawn(Actor Other) { if ( Other.IsA('Weapon') && !Weapon(Other).bHeldItem && (Weapon(Other).ReSpawnTime != 0) ) { Inventory(Other).ReSpawnTime = 1.0; return true; } return false; } function SendPlayer( PlayerPawn aPlayer, string URL ) { // hack to skip end game in coop play if ( left(URL,7) ~= "endgame") { Level.ServerTravel( "Vortex2", false); return; } Level.ServerTravel( URL, true ); } function ScoreKill(pawn Killer, pawn Other) //make use of sp rules.... { local int points, intlevel; Other.DieCount++; if( (killer == Other) || (killer == None) ) Other.PlayerReplicationInfo.Score -= 79; else if ( killer != None ) { switch (Other.intelligence){ //AI figure-outer..... Case Brains_None: intlevel=0; break; Case Brains_Reptile: intlevel=1; break; Case Brains_Mammal: intlevel=2; break; Case Brains_Human: intlevel=3; break; } points = int(10*((other.skill/2) + 1)*(other.default.health/150)+intlevel/1.5); //calculated by difficulty (major), health (slightly less important) and AI (tiny difference) If (points<8) points=8; //force to at least give 8 points. If (Other.bIsPlayer) Points=-84; //idiot..... else if (Other.IsA('Nali')) Points=-32; else if (Other.IsA('nalirabbit')) points= -4; else if (Other.IsA('bird1')) points= -7; else if (Other.IsA('cow')) points= -10; if (Other.IsA('ScriptedPawn')) if (ScriptedPawn(Other).bIsBoss) points *=3; killer.killCount++; if ( killer.PlayerReplicationInfo != None ) killer.PlayerReplicationInfo.Score += points; } BaseMutator.ScoreKill(Killer, Other); } function Killed(pawn killer, pawn Other, name damageType) //taunts.... { local int NextTaunt, i; local bool bAutoTaunt; if ( (damageType == 'Decapitated') && (Killer != Other) && (Killer != None) &&(TournamentPlayer(Killer) != None) && TournamentPlayer(Killer).bAutoTaunt) //play headshot thingy :D Killer.ReceiveLocalizedMessage( class'DecapitationMessage' ); super.Killed(killer, Other, damageType); bAutoTaunt = ((TournamentPlayer(Killer) != None) && TournamentPlayer(Killer).bAutoTaunt); //stupid auto taunting if (bAutoTaunt && (Killer != Other) && (DamageType != 'gibbed') && (Killer.Health > 0) && (Level.TimeSeconds - LastTauntTime > 3) ) { LastTauntTime = Level.TimeSeconds; NextTaunt = Rand(class(Killer.PlayerReplicationInfo.VoiceType).Default.NumTaunts); for ( i=0; i<4; i++ ) //keeps taunts unique..... { if ( NextTaunt == LastTaunt[i] ) NextTaunt = Rand(class(Killer.PlayerReplicationInfo.VoiceType).Default.NumTaunts); if ( i > 0 ) LastTaunt[i-1] = LastTaunt[i]; } LastTaunt[3] = NextTaunt; killer.SendGlobalMessage(None, 'AUTOTAUNT', NextTaunt, 5); } } function AddDefaultInventory( pawn PlayerPawn ) { local Translator newTranslator; if ( Level.DefaultGameType != class'VRikersGame' ) Super.AddDefaultInventory(PlayerPawn); // Spawn translator. if( PlayerPawn.IsA('Spectator') || PlayerPawn.FindInventoryType(class'Translator') != None ) return; newTranslator = Spawn(class'Translator',,, Location); if( newTranslator != None ) { newTranslator.bHeldItem = true; newTranslator.GiveTo( PlayerPawn ); PlayerPawn.SelectedItem = newTranslator; newTranslator.PickupFunction(PlayerPawn); } } //Psychic_313: changed default.DefaultPlayerClass to Tournament guy //so players lacking OldModels aren't left out. Sorry, Dante fans :-) M a4// ============================================================ // h4ck to save under different thing..... // ============================================================ class OldSkoolMutatorCW expands UMenuMutatorCW; function Created() { Super(Umenudialogclientwindow).Created(); Splitter = UWindowHSplitter(CreateWindow(class'UWindowHSplitter', 0, 0, WinWidth, WinHeight)); FrameExclude = UMenuMutatorFrameCW(Splitter.CreateWindow(class'UMenuMutatorFrameCW', 0, 0, 100, 100)); FrameInclude = UMenuMutatorFrameCW(Splitter.CreateWindow(class'UMenuMutatorFrameCW', 0, 0, 100, 100)); Splitter.LeftClientWindow = FrameExclude; Splitter.RightClientWindow = FrameInclude; Exclude = UMenuMutatorExclude(CreateWindow(class'UMenuMutatorExclude', 0, 0, 100, 100, Self)); FrameExclude.Frame.SetFrame(Exclude); Include = UMenuMutatorInclude(CreateWindow(class'UMenuMutatorInclude', 0, 0, 100, 100, Self)); FrameInclude.Frame.SetFrame(Include); Exclude.Register(Self); Include.Register(Self); Exclude.SetHelpText(ExcludeHelp); Include.SetHelpText(IncludeHelp); Include.DoubleClickList = Exclude; Exclude.DoubleClickList = Include; Splitter.bSizable = False; Splitter.bRightGrow = True; Splitter.SplitPos = WinWidth/2; LoadMutators(); } function LoadMutators() { local int NumMutatorClasses; local string NextMutator, NextDesc; local UMenuMutatorList I; local string MutatorList; local int j; local int k; GetPlayerOwner().GetNextIntDesc(MutatorBaseClass, 0, NextMutator, NextDesc); while( (NextMutator != "") && (NumMutatorClasses < 200) ) { I = UMenuMutatorList(Exclude.Items.Append(class'UMenuMutatorList')); I.MutatorClass = NextMutator; k = InStr(NextDesc, ","); if(k == -1) { I.MutatorName = NextDesc; I.HelpText = ""; } else { I.MutatorName = Left(NextDesc, k); I.HelpText = Mid(NextDesc, k+1); } NumMutatorClasses++; GetPlayerOwner().GetNextIntDesc(MutatorBaseClass, NumMutatorClasses, NextMutator, NextDesc); } MutatorList = class'olroot.oldskoolnewgameclientwindow'.default.MutatorList; while(MutatorList != "") { j = InStr(MutatorList, ","); if(j == -1) { NextMutator = MutatorList; MutatorList = ""; } else { NextMutator = Left(MutatorList, j); MutatorList = Mid(MutatorList, j+1); } I = UMenuMutatorList(Exclude.Items).FindMutator(NextMutator); if(I != None) { I.Remove(); Include.Items.AppendItem(I); } else Log("Unknown mutator in mutator list: "$NextMutator); } Exclude.Sort(); } function SaveConfigs() { local UMenuMutatorList I; local string MutatorList; Super(umenudialogclientwindow).SaveConfigs(); for(I = UMenuMutatorList(Include.Items.Next); I != None; I = UMenuMutatorList(I.Next)) { if(MutatorList == "") MutatorList = I.MutatorClass; else MutatorList = MutatorList $ "," $I.MutatorClass; } class'olroot.oldskoolnewgameclientwindow'.default.MutatorList = MutatorList; class'olroot.oldskoolnewgameclientwindow'.static.staticsaveconfig(); } function Notify(UWindowDialogControl C, byte E) { Super(umenudialogclientwindow).Notify(C, E); } M O  a D M P// ============================================================ // nothing.... // ============================================================ class OldskoolMutatorWindow expands UMenuMutatorWindow; M O m a  M `// ============================================================ // playbutton. A button with the play icon on it :D // ============================================================ class playbutton expands UWindowSmallButton; #exec TEXTURE IMPORT NAME=BluePlay FILE=Textures\blueplay.pcx GROUP="Icons" MIPS=OFF #exec TEXTURE IMPORT NAME=MetalPlay FILE=Textures\metalplay.pcx GROUP="Icons" MIPS=OFF #exec TEXTURE IMPORT NAME=Goldplay FILE=Textures\goldplay.pcx GROUP="Icons" MIPS=OFF //use the look and feels...... function Paint(Canvas C, float X, float Y) { local float K; local texture drawtex; if(bDisabled) K = 34; else if(bMouseDown) K = 17; else k = 0; if (lookandfeel.Isa('UMenuBlueLookAndFeel')) //I.D. look and feels and set accordingly.... drawtex=Texture'Blueplay'; else if (lookandfeel.Isa('UMenuMetalLookAndFeel')) drawtex=Texture'metalplay'; else //gold or some custom one.... drawtex=Texture'goldplay'; DrawStretchedTextureSegment(C, 0, 0, 3, 16, 0, K, 3, 16, drawtex); //ripped from the look and feel's DrawStretchedTextureSegment(C, WinWidth - 3, 0, 3, 16, 45, K, 3, 16, drawtex); DrawStretchedTextureSegment(C, 3, 0, WinWidth-6, 16, 3, k, 42, 16, drawtex); Super(uwindowbutton).Paint(C, X, Y); } M // ============================================================ // skinconfiguration. stores the skin stuff....... // Psychic_313: DEPRECATED. DON'T USE ME. // ============================================================ class skinconfiguration expands Object config (oldskool); //var config string skinbackup; var config string skins[64]; var config bool skaarjprop; M ]// ============================================================ // menu for them options...... // ============================================================ class oldskoolgameoptionsclient expands UMenuPageWindow; //main vars..... var bool Initialized; var UWindowCheckBox akimbocheck, pistolcheck, quickmap, decalcheck, skprop, fragicon, oldhud, oldboard; var UWindowEditControl ptimeslider, pamountslider; var uwindowsmallbutton mutatorbutton, hunter; var UWindowComboControl backround; var UWindowMessageBox confirmmutate; var string bgrs[256]; var int Maxbgr; var canvas C; //h4ck.. //build menu stuff..... function created(){ //local class TempClass; local string Nextbgr; local string Tempbgr[256]; local string temptitles[256]; local bool bFoundSavedbgr; local string NextDefault, NextDesc; local int i, selection, j; super.created(); i = 0; backround = UWindowComboControl(CreateControl(class'UWindowComboControl', 10, 10, 210, 1)); backround.SetButtons(True); backround.SetText("Background"); backround.Align = TA_Left; backround.SetHelpText("Select the background you wish to have on the UT desktop"); backround.SetFont(F_Normal); backround.SetEditable(False); //load the list of backgrounds ripped from umenustartmatchclientwindow and edited for discription support.... GetPlayerOwner().GetNextIntDesc("backrounds", 0, nextbgr, NextDesc); while (Nextbgr != ""&&i<255) { Tempbgr[i] = Nextbgr; Temptitles[i] = nextdesc; i++; GetPlayerOwner().GetNextIntDesc("backrounds", i, Nextbgr, NextDesc); } if (dynamicloadobject("osxbackgroundChanger.osxChanger",class'class')!=none) //must load in mem or crash will occur. GetPlayerOwner().GetNextIntDesc("osxbackgroundChanger.osxChanger", 0, nextbgr, NextDesc); //hack to get OSX backgrounds on. while (Nextbgr != ""&&I<255) { Tempbgr[i] = Nextbgr; Temptitles[i] = nextdesc; i++; j++; GetPlayerOwner().GetNextIntDesc("osxbackgroundChanger.osxChanger", j, Nextbgr, NextDesc); } // Fill the control. for (i=0; i<256; i++) { if (Tempbgr[i] != "") { bgrs[Maxbgr] = Tempbgr[i]; if ( !bFoundSavedbgr && (bgrs[Maxbgr] ~= oldskoolrootwindow(root).Backround) ) { bFoundSavedbgr = true; Selection = Maxbgr; } backround.AddItem(temptitles[i]); Maxbgr++; } } backround.SetSelectedIndex(Selection); mutatorButton = UWindowSmallButton(CreateControl(class'UWindowSmallButton', 10, 35, 210, 16)); mutatorButton.SetText("SP Mutators"); mutatorbutton.Align = TA_Left; mutatorButton.SetFont(F_Normal); mutatorButton.SetHelpText("Select to configure the mutators you wish to use in Singleplayer"); /*decalcheck = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 60, 210, 1)); decalcheck.SetText("Use Decals."); decalcheck.SethelpText("If checked, Unreal I weapons will use decals. Also monster projectiles will also have decals, and monster shadows will exist."); decalcheck.SetFont(F_Normal); decalcheck.Align = TA_Left; decalcheck.bChecked = class'Olweapons.uiweapons'.default.bUseDecals; */ decalcheck = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 60, 210, 1)); //decals now blood decals. decalcheck.SetText("Blood Decals"); decalcheck.SethelpText("If checked, then Unreal I creatures will have blood decals, providing that decals are on and gore is set to normal."); decalcheck.SetFont(F_Normal); decalcheck.Align = TA_Left; decalcheck.bChecked = class'Oldskool.spoldskool'.default.bUseDecals; quickmap = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 85, 210, 1)); quickmap.SetText("Use Quickmap"); quickmap.SethelpText("If checked, the new game window will utilitize caching, which will save a list of custom maps, reducing loading time."); quickmap.SetFont(F_Normal); quickmap.Align = TA_Left; quickmap.bChecked = class'olroot.oldskoolmapsclientwindow'.default.bquickmode; akimbocheck = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 110, 210, 1)); akimbocheck.SetText("Allow Akimbo Automags"); akimbocheck.SethelpText("Do you wish to allow two automags to be held at once in Deathmatch?"); akimbocheck.SetFont(F_Normal); akimbocheck.Align = TA_Left; akimbocheck.bChecked = class'Olweapons.uiweapons'.default.akimbomag; fragicon = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 135, 210, 1)); fragicon.SetText("UT armor rules"); fragicon.SethelpText("If checked, you will only be able to have 150 armor on you. If not, then you can collect as many as you want. NOTE: THIS ONLY WORKS RIGHT IF ALL ARMOR IS SET TO UNREAL I versions."); fragicon.SetFont(F_Normal); fragicon.Align = TA_Left; fragicon.bChecked = class'Olweapons.uiweapons'.default.newarmorrules; /*skprop = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 160, 210, 1)); skprop.SetText("Skaarj Class Properties"); skprop.SethelpText("If checked, the skaarj trooper will have 130 health, be larger than the normal player, and be able to jump higher."); skprop.SetFont(F_Normal); skprop.Align = TA_Left; skprop.bChecked = class'Oldskool.skinconfiguration'.default.skaarjprop;*/ oldhud = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 160, 210, 1)); oldhud.SetText("Unreal I HUD in DM"); //oldhud.SethelpText("If checked, the Unreal I HUD will be used in botmatch/multiplayer provided that OldSkool is in the mutators list."); oldhud.SethelpText("If checked, the Unreal I HUD will be used in botmatch/multiplayer, even on the client. Note that this should be turned OFF when using a non-Epic gametype."); oldhud.SetFont(F_Normal); oldhud.Align = TA_Left; oldhud.bChecked = oldskoolrootwindow(root).bhud; oldboard = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 185, 210, 1)); oldboard.SetText("Unreal I Scoreboard in DM"); //oldboard.SethelpText("If checked, the Unreal I Scoreboard will be used in botmatch/multiplayer provided that OldSkool is in the mutators list."); oldboard.SethelpText("If checked, the Unreal I Scoreboard will be used in botmatch/multiplayer, even on the client. Note that this should be turned OFF when using a non-Epic gametype."); oldboard.SetFont(F_Normal); oldboard.Align = TA_Left; //oldboard.bChecked = class'Oldskool.oldskool'.default.bscorebored; //bscoreBORED..lol ;) oldboard.bChecked = oldskoolrootwindow(root).bscoreboard; //bscoreBORED..lol ;) pistolcheck = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 210, 210, 1)); pistolcheck.SetText("Random Dispersion Pistol Power-ups"); pistolcheck.SethelpText("If checked, random dispersion powerups will be spawned in the level, in accordance with the two options below. Do NOT use if the level already has powerups in it."); pistolcheck.SetFont(F_Normal); pistolcheck.Align = TA_Left; pistolcheck.bChecked = class'Oldskool.oldskool'.default.bpowerups; ptimeslider = UWindowEditControl(CreateControl(class'UWindowEditControl', 10, 235, 210, 1)); ptimeslider.SetNumericOnly(True); ptimeslider.SetMaxLength(3); ptimeslider.Align = TA_Left; ptimeslider.SetValue(string(class'Oldskool.oldskool'.default.poweruptime)); ptimeslider.SetText("Power-up Time"); ptimeslider.SetHelpText("Select how long powerups will stay after spawning. Select 0 for them to last until they are pickup up."); ptimeslider.SetFont(F_Normal); //ptimeslider.setsize(WinWidth/2.5, 1); pamountslider = UWindowEditControl(CreateControl(class'UWindowEditControl', 10, 260, 210, 1)); pamountslider.SetNumericOnly(True); pamountslider.SetMaxLength(3); pamountslider.Align = TA_Left; //pamountslider.setsize(WinWidth/2.5, 1); pamountslider.SetValue(string(class'Oldskool.oldskool'.default.maxpowerups)); pamountslider.SetText("Power-up Amount"); pamountslider.SetHelpText("Select how many power-ups will be spawned."); pamountslider.SetFont(F_Normal); DesiredWidth = 220; DesiredHeight = 280; if (!class'Oldskool.oldskool'.default.bpowerups){ ptimeslider.hidewindow(); //disable sliders if main option disabled. pamountslider.hidewindow(); DesiredHeight = 230;} Initialized = True; } function BeforePaint(Canvas C, float X, float Y) //to set the stuff correctly..... { local int ControlWidth, ControlLeft, ControlRight; local int CenterWidth, CenterPos, ButtonWidth, ButtonLeft; Super.BeforePaint(C, X, Y); ControlWidth = WinWidth/2.5; ControlLeft = (WinWidth/2 - ControlWidth)/2; ControlRight = WinWidth/2 + ControlLeft; CenterWidth = (WinWidth/4)*3; CenterPos = (WinWidth - CenterWidth)/2; // backround.SetSize(CenterWidth, 1); //backround.WinLeft = CenterPos; backround.EditBoxWidth = 120; //pamountslider.SetSize(ControlWidth, 1); // pamountslider.WinLeft = ControlLeft; pamountslider.EditBoxWidth = 25; // ptimeslider.SetSize(ControlWidth+8, 1); // ptimeslider.WinLeft = ControlRight-ControlWidth; ptimeslider.EditBoxWidth = 25; } function Notify(UWindowDialogControl C, byte E) { Super.Notify(C, E); switch(E) { case DE_Change: //sliders, combos, and checkboxes switch(C) { Case backround: backgroundchanged(); //too many calculations to fit here :D break; Case decalcheck: // class'Olweapons.uiweapons'.default.bUseDecals = decalcheck.bChecked; // class'Olweapons.uiweapons'.static.StaticSaveConfig(); class'spoldskool'.default.bUseDecals = decalcheck.bChecked; class'spoldskool'.static.StaticSaveConfig(); break; Case fragicon: class'olweapons.uiweapons'.default.newarmorrules = fragicon.bChecked; class'Olweapons.uiweapons'.static.StaticSaveConfig(); break; Case oldhud: hudchanged(); break; Case oldboard: boardchanged(); break; Case quickmap: class'olroot.oldskoolmapsclientwindow'.default.bquickmode = quickmap.bChecked; class'olroot.oldskoolmapsclientwindow'.static.StaticSaveConfig(); break; Case skprop: class'Oldskool.skinconfiguration'.default.skaarjprop = skprop.bChecked; class'Oldskool.skinconfiguration'.static.StaticSaveConfig(); break; Case pistolcheck: if (pistolcheck.bChecked){ ptimeslider.showwindow(); //show stuff if main option enabled. pamountslider.showwindow(); DesiredHeight = 280; } else{ ptimeslider.hidewindow(); //hide stuff if main option disabled. pamountslider.hidewindow(); DesiredHeight = 230; } class'Oldskool.oldskool'.default.bpowerups = pistolcheck.bChecked; class'Oldskool.oldskool'.static.StaticSaveConfig(); break; Case pamountslider: class'Oldskool.oldskool'.default.maxpowerups = int(pamountslider.getvalue()); class'Oldskool.oldskool'.static.StaticSaveConfig(); break; Case akimbocheck: class'Olweapons.uiweapons'.default.akimbomag = akimbocheck.bchecked; class'olweapons.uiweapons'.static.staticsaveconfig(); break; Case ptimeslider: class'Oldskool.oldskool'.default.poweruptime = int(ptimeslider.getvalue()); class'Oldskool.oldskool'.static.StaticSaveConfig(); break; } break; case DE_Click: //buttons switch(C) { case MutatorButton: Confirmmutate = MessageBox("Confirm Access to mutators window", "WARNING: Generally the use of this option is considered cheating.\\n\\nAlso, the use of mutators in SinglePlayer/Co-op has not been extensively tested and unexpected play and game crashes may result.\\n\\nDo you want to continue?", MB_YesNo, MR_No, MR_None); break; } break; } } function MessageBoxDone(UWindowMessageBox W, MessageBoxResult Result) //to see if we want to go into mutators window... { if(Result == MR_Yes) { switch(W) { case ConfirmMutate: GetParent(class'UWindowFramedWindow').ShowModal(Root.CreateWindow(class'OldSkoolMutatorWindow', 0, 0, 100, 100, Self)); break; } } } function backgroundchanged(){ //called when the backround is changed..... local int Currentbgr; if (!Initialized) return; Currentbgr = Backround.GetSelectedIndex(); oldskoolrootwindow(root).backround = bgrs[currentbgr]; root.saveconfig(); //save stuff..... } function hudchanged(){ local spawnnotify sn; oldskoolrootwindow(root).bhud=oldhud.bChecked; root.saveconfig(); //try to revert ownerz HUD. if (!oldhud.bchecked&&getplayerowner().myhud.isa('oldskoolbasehud')&&!getplayerowner().myhud.isa('oldskoolhud')){ for (sn=getlevel().SpawnNotify;sn!=none;sn=sn.next){ //remove spawnnotifiers. log ("spawnnotify is "$sn.class); if (sn.class==class'oldskool.oldhudnotify') { oldhudnotify(sn).bdisabled=true; sn.destroy(); } } getplayerowner().myhud.destroy(); //it will get spawned again, next prerender. } //swap HUD. if (oldhud.bchecked&&getplayerowner().myhud.isa('ChallengeHUD')){ sn=getlevel().spawn(class'oldhudnotify'); getplayerowner().myhud=hud(sn.spawnnotification(getplayerowner().myhud));} //fancy way :P } function boardchanged(){ //change board type. local spawnnotify sn; oldskoolrootwindow(root).bscoreboard = oldboard.bChecked; root.saveconfig(); if (!oldboard.bchecked){ for (sn=getlevel().SpawnNotify;sn!=none;sn=sn.next){ //remove spawnnotifiers. log ("spawnnotify is "$sn.class); if (sn.class==class'oldskool.oldboardnotify'){ oldboardnotify(sn).bdisabled=true; sn.destroy(); } } if (getplayerowner().scoring!=none) getplayerowner().myhud.destroy(); //it will get spawned again, next prerender. } if (oldboard.bchecked){ //swap HUD. sn=getlevel().spawn(class'oldhudnotify'); if (getplayerowner().scoring!=none) getplayerowner().scoring=scoreboard(sn.spawnnotification(getplayerowner().scoring));} //fancy way :P } M @wzu~xvyp~uqvbmal]{hm}sn~tj|qj}qk~rjrfpa|k_k]jY{fWyd[~hY|f\jZhX}fW|eUzcV{dXhVfS|cUeR{bQ{aOy_Pz`OaJz\M`Hz[I{\MbLaH}\I^J_CxWG]E~[E[H_AxVC|YG^?vTAzW?yUA}XD\=vS>xTAY=yT@Y?X>~V@Z:xR9wQ;{S;~Uv@q5 u5 93GIKMOQRT V!X"Z"[#\#]$^$a%b&d&f'h(i(k)q+r,s,|/~0111{}z|irg~pf}od}nb~m`|kRdO}aM{_PdJ}^FyZGz[DwXr~wsx|~M _)// ============================================================ // DEPRECATED: here for compatibility only // Will only appear when loaded from old saves // -- Psychic_313 // ============================================================ class OSWeaponPowerUp expands tournamentpickup; var float idletime; //unused now var oldskool mastermutator; //unused now, this never appears in DM var bool doswap; var Sound PowerUpSounds[4]; /*wipe from here! function prebeginplay(){ super.prebeginplay(); if ( class'oldskool.oldskool'.default.poweruptime==0) disable('tick'); //don't tick or it'll crash :D } function Destroyed() { if (Level.Game.Isa('deathmatchplus')&&(Mastermutator != None)&&(mastermutator.bpowerups)&&doswap){ //verify that we do want to call the function.... mastermutator.Spawnpowerup(0); } Super.Destroyed(); } function Tick(float deltatime) //only actually set from the mutator so nothing to worry about here...... { if (Owner == None&&mastermutator!=none&&mastermutator.poweruptime!=0&&doswap) { IdleTime += deltatime; if ( IdleTime >= mastermutator.poweruptime ) { IdleTime = 0; Spawn(class'osringexplosion2', self,, self.Location, self.Rotation); //uses asmd blast.. Destroy(); } } } //to here */ event float BotDesireability( pawn Bot ) { local OLDPistol D; D = OlDPistol(Bot.FindInventoryType(class'olDPistol')); if ( (D == None) || (D.PowerLevel >=4) ) return -1; else return Super.BotDesireability(Bot); } auto state Pickup { function BeginState() { BecomePickup(); SetOwner(None); LoopAnim('AnimEnergy',0.4); bCollideWorld = true; //check that no idle stuff.... } function Touch( actor Other ) { local olDPistol d; local Inventory Copy; if ( Pawn(Other)!=None && Pawn(Other).bIsPlayer) { d = olDPistol(Pawn(Other).FindInventoryType(class'olDPistol')); if ( (d != None) && (d.PowerLevel < 4) ){ Disable('tick'); IdleTime = 0; ActivateSound = PowerUpSounds[d.PowerLevel]; Level.Game.PickupQuery(Pawn(Other), Self); if (Level.Game.LocalLog != None) Level.Game.LocalLog.LogPickup(Self, Pawn(Other)); if (Level.Game.WorldLog != None) Level.Game.WorldLog.LogPickup(Self, Pawn(Other)); if ( PickupMessageClass == None) Pawn(Other).ClientMessage(PickupMessage, 'Pickup'); else Pawn(Other).ReceiveLocalizedMessage( PickupMessageClass, 0, None, None, Self.Class ); } } } } M nVWCr*?,a!r>>Ua!{>> M F// ============================================================ // oldskool.oldskoolspclient: the SP mutator client based on oldskool client....:D // ============================================================ class oldskoolspclient expands UMenuPageWindow; var UWindowCheckBox item1, item2, item3, item4, item5, item6, item7, item8, item9, item13, item14, item15, item16, item17, item19, item21, Pause, SpTaunt, Aircon, PermaCarc, PermaDec; var localized string warnhelp; function Created() { Super.Created(); item1 = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 10, 210, 1)); item1.SetText("Automag to Enforcer"); item1.SetHelpText(warnhelp$" Furthermore, Liandri will confiscate one enforcer if you have two of them, upon entering a new level."); item1.SetFont(F_Normal); item1.Align = TA_Left; item1.bChecked = class'Oldskool.spoldskool'.default.bMag; item2 = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 28, 210, 1)); item2.SetText("UT BioRifle"); item2.SetHelpText(warnhelp); item2.SetFont(F_Normal); item2.Align = TA_Left; item2.bChecked = class'Oldskool.spoldskool'.default.bBioRifle; item3 = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 46, 210, 1)); item3.SetText("Change ASMD into ShockRifle"); item3.SetFont(F_Normal); item3.Align = TA_Left; item3.bChecked = class'Oldskool.spoldskool'.default.bASMD; item4 = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 64, 210, 1)); item4.SetText("Change Stinger into Pulse Gun"); item4.SetHelpText(warnhelp); item4.SetFont(F_Normal); item4.Align = TA_Left; item4.bChecked = class'Oldskool.spoldskool'.default.bStingy; item5 = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10,82, 210, 1)); item5.SetText("Change Razorjack into Ripper"); item5.SetHelpText(warnhelp); item5.SetFont(F_Normal); item5.Align = TA_Left; item5.bChecked = class'Oldskool.spoldskool'.default.bRazor; item6 = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10,98, 210, 1)); item6.SetText("UT minigun"); item6.SetFont(F_Normal); item6.Align = TA_Left; item6.bChecked = class'Oldskool.spoldskool'.default.bmini; item7 = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 116, 210, 1)); item7.SetText("UT Flak Cannon"); item7.SetHelpText(warnhelp); item7.SetFont(F_Normal); item7.Align = TA_Left; item7.bChecked = class'Oldskool.spoldskool'.default.bFlak; item8 = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 134, 210, 1)); item8.SetText("Change Eightball into Rocket Launcher"); item8.SetFont(F_Normal); item8.Align = TA_Left; item8.bChecked = class'Oldskool.spoldskool'.default.bEball; item9 = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 152, 210, 1)); item9.SetText("UT Sniper Rifle"); item9.SetFont(F_Normal); item9.Align = TA_Left; item9.bChecked = class'Oldskool.spoldskool'.default.bRifle; item13 = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 170, 210, 1)); item13.SetText("UT Jumpboots"); item13.SetFont(F_Normal); item13.Align = TA_Left; item13.bChecked = class'Oldskool.spoldskool'.default.bJump; item14 = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 188, 210, 1)); item14.SetText("Amplifier to Udamage"); item14.SetHelpText(warnhelp$" Note that this damage only will last 9 seconds..."); item14.SetFont(F_Normal); item14.Align = TA_Left; item14.bChecked = class'Oldskool.spoldskool'.default.bdamage; item15 = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 206, 210, 1)); item15.SetText("Kevlar Suit to Thigh Pads"); item15.SetFont(F_Normal); item15.Align = TA_Left; item15.bChecked = class'Oldskool.spoldskool'.default.bpad; item16 = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 224, 210, 1)); item16.SetText("UT Megahealth"); item16.SetFont(F_Normal); item16.Align = TA_Left; item16.bChecked = class'Oldskool.spoldskool'.default.bmegahealth; item17 = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 242, 210, 1)); item17.SetText("UT Armor"); item17.SetFont(F_Normal); item17.Align = TA_Left; item17.bChecked = class'Oldskool.spoldskool'.default.barmor; item19 = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10,260, 210, 1)); item19.SetText("UT shieldbelts"); item19.SetFont(F_Normal); item19.Align = TA_Left; item19.bChecked = class'Oldskool.spoldskool'.default.bshield; item21 = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10,278, 210, 1)); item21.SetText("UT HealthPack"); item21.SetFont(F_Normal); item21.Align = TA_Left; item21.bChecked = class'Oldskool.spoldskool'.default.bmed; SpTaunt = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 296, 210, 1)); SpTaunt.SetText("SinglePlayer Auto-Taunt"); SpTaunt.SethelpText("If checked, a taunt will be played when you defeat an enemy in SinglePlayer. Also, headshot messages will appear if you headshot an enemy. Does not apply to coop"); SpTaunt.SetFont(F_Normal); SpTaunt.Align = TA_Left; SpTaunt.bChecked = class'singleplayer2'.default.SpTaunts; Pause = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 314, 210, 1)); Pause.SetText("Load w/ Pause"); Pause.SethelpText("If checked, the game will be paused after loading a saved game"); Pause.SetFont(F_Normal); Pause.Align = TA_Left; Pause.bChecked = class'singleplayer2'.default.Pause; AirCon = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 332, 210, 1)); AirCon.SetText("Un&r&e&a&l Air Control"); AirCon.SethelpText("If checked, the game will have very little air control, as unreal did. Thus is always false for Legacy. Please note that some maps may require that this is true and others wish it to be false."); AirCon.SetFont(F_Normal); AirCon.Align = TA_Left; AirCon.bChecked = class'spoldskool'.default.UnAir; PermaCarc = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 350, 210, 1)); PermaCarc.SetText("Permanent Carcasses"); PermaCarc.SethelpText("If checked, carcasses will remain until destroyed."); PermaCarc.SetFont(F_Normal); PermaCarc.Align = TA_Left; PermaCarc.bChecked = class'olcreaturecarcass'.default.PermaCarcass; PermaDec = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 368, 210, 1)); PermaDec.SetText("Permanent Decals"); PermaDec.SethelpText("If checked, decals will remain forever in the level."); PermaDec.SetFont(F_Normal); PermaDec.Align = TA_Left; PermaDec.bChecked = class'spoldskool'.default.PermaDecals; DesiredWidth = 220; DesiredHeight = 388; } function Notify(UWindowDialogControl C, byte E) { Super.Notify(C, E); switch(E) { case DE_Change: switch(C) { case item1: class'Oldskool.spoldskool'.default.bMag = item1.bChecked; class'Oldskool.spoldskool'.static.StaticSaveConfig(); break; case item2: class'Oldskool.spoldskool'.default.bBioRifle = item2.bChecked; class'Oldskool.spoldskool'.static.StaticSaveConfig(); break; case item3: class'Oldskool.spoldskool'.default.bASMD = item3.bChecked; class'Oldskool.spoldskool'.static.StaticSaveConfig(); break; case item4: class'Oldskool.spoldskool'.default.bStingy = item4.bChecked; class'Oldskool.spoldskool'.static.StaticSaveConfig(); break; case item5: class'Oldskool.spoldskool'.default.bRazor = item5.bChecked; class'Oldskool.spoldskool'.static.StaticSaveConfig(); break; case item6: class'Oldskool.spoldskool'.default.bmini = item6.bChecked; class'Oldskool.spoldskool'.static.StaticSaveConfig(); break; case item7: class'Oldskool.spoldskool'.default.bFlak = item7.bChecked; class'Oldskool.spoldskool'.static.StaticSaveConfig(); break; case item8: class'Oldskool.spoldskool'.default.bEball = item8.bChecked; class'Oldskool.spoldskool'.static.StaticSaveConfig(); break; case item9: class'Oldskool.spoldskool'.default.bRifle = item9.bChecked; class'Oldskool.spoldskool'.static.StaticSaveConfig(); break; case item13: class'Oldskool.spoldskool'.default.bjump = item13.bChecked; class'Oldskool.spoldskool'.static.StaticSaveConfig(); break; case item14: class'Oldskool.spoldskool'.default.bdamage = item14.bChecked; class'Oldskool.spoldskool'.static.StaticSaveConfig(); break; case item15: class'Oldskool.spoldskool'.default.bpad = item15.bChecked; class'Oldskool.spoldskool'.static.StaticSaveConfig(); break; case item16: class'Oldskool.spoldskool'.default.bmegahealth = item16.bChecked; class'Oldskool.spoldskool'.static.StaticSaveConfig(); break; case item17: class'Oldskool.spoldskool'.default.barmor = item17.bChecked; class'Oldskool.spoldskool'.static.StaticSaveConfig(); break; case item19: class'Oldskool.spoldskool'.default.bshield = item19.bChecked; class'Oldskool.spoldskool'.static.StaticSaveConfig(); break; case item21: class'Oldskool.spoldskool'.default.bmed = item21.bChecked; class'Oldskool.spoldskool'.static.StaticSaveConfig(); break; Case Pause: class'singleplayer2'.default.Pause=Pause.bChecked; class'singleplayer2'.static.staticSaveConfig(); break; case SPTaunt: class'singleplayer2'.default.SpTaunts=SpTaunt.bChecked; class'singleplayer2'.static.staticSaveConfig(); if (getlevel().game!=none&&Getlevel().game.isa('singleplayer2')) singleplayer2(getlevel().game).SpTaunts=SpTaunt.bChecked; break; case AirCon: class'spoldskool'.default.UnAir=AirCon.bChecked; class'spoldskool'.static.staticSaveConfig(); if (getlevel().game!=none&&Getlevel().game.isa('singleplayer2')&&!GetLevel().Game.isa('LegacySP')&&!GetLevel().Game.Isa('tvsp')){ if (AirCon.bchecked) getPlayerOwner().aircontrol=class'pawn'.default.aircontrol; else getPlayerOwner().aircontrol=getPlayerOwner().default.aircontrol; } break; case PermaCarc: class'olcreaturecarcass'.default.PermaCarcass=PermaCarc.bChecked; class'olcreaturecarcass'.static.StaticSaveConfig(); break; case PermaDec: class'spoldskool'.default.PermaDEcals=PermaDec.bChecked; class'spoldskool'.static.StaticSaveConfig(); break; } break; } } M I O-U  $|1app: x\|?,x?,|?,J{I$ap: x\|xap: |?,JI$$ax\a|)app: Sx\|?,x?,|?,@.-8:.:I$ap: x\|xap: |?,@I$aSx\aS$6=,6=,6=, M UC// ============================================================ // Oldskool.OldSkoolScoreBoard: the scoreboard that keeps track of killz and stuff.... // Psychic_313: unchanged // ============================================================ class OldSkoolScoreBoard expands ScoreBoard; var string difficulties[4]; function ShowScores( canvas Canvas ) { local int i, row; local color Yellow, Red, White; local scorekeeper scoreholder; scoreholder = scorekeeper(Instigator.FindInventoryType(class 'scorekeeper')); if (scoreholder != None) { White.R = 255; White.G = 255; White.B = 255; White.A = 200; Yellow.R = 255; Yellow.G = 255; Yellow.B = 0; Yellow.A = 200; Red.R = 255; Red.G = 20; Red.B = 20; Red.A = 200; // Display the scoreboard. Canvas.Font = Canvas.MedFont; Canvas.DrawColor = Red; Canvas.SetPos(0.2 * Canvas.ClipX, 0.1 * Canvas.ClipY ); Canvas.DrawText("Creatures", False); Canvas.SetPos(0.6 * Canvas.ClipX, 0.1 * Canvas.ClipY ); Canvas.DrawText("Killcount", False); Canvas.DrawColor = White; row = 1; if (scoreholder.Brutes > 0) DrawBodyCount("Brutes", scoreholder.Brutes, Canvas, row++); if (scoreholder.Gasbags > 0) DrawBodyCount("Gasbag", scoreholder.Gasbags, Canvas, row++); if (scoreholder.Krall > 0) DrawBodyCount("Krall", scoreholder.Krall, Canvas, row++); if (scoreholder.Mercs > 0) DrawBodyCount("Mercenaries", scoreholder.Mercs, Canvas, row++); if (scoreholder.blobs > 0) DrawBodyCount("Blobs", scoreholder.blobs, Canvas, row++); if (scoreholder.Sliths > 0) DrawBodyCount("Sliths", scoreholder.Sliths, Canvas, row++); if (scoreholder.flies > 0) DrawBodyCount("Flies", scoreholder.flies, Canvas, row++); if (scoreholder.tentacles > 0) DrawBodyCount("Tentacles", scoreholder.tentacles, Canvas, row++); if (scoreholder.pupae > 0) DrawBodyCount("Pupae", scoreholder.pupae, Canvas, row++); if (scoreholder.mantas > 0) DrawBodyCount("Mantas", scoreholder.mantas, Canvas, row++); if (scoreholder.fish > 0) DrawBodyCount("Fish", scoreholder.Fish, Canvas, row++); if (scoreholder.Titans > 0) DrawBodyCount("Titans", scoreholder.Titans, Canvas, row++); if (scoreholder.Skaarjw > 0) DrawBodyCount("Skaarj Warriors", scoreholder.Skaarjw, Canvas, row++); if (scoreholder.Skaarjt > 0) DrawBodyCount("Skaarj Troopers", scoreholder.Skaarjt, Canvas, row++); if (scoreholder.hugeguys > 0) DrawBodyCount("Skaarj Leaders", scoreholder.hugeguys, Canvas, row++); if (scoreholder.Nali > 0){ Canvas.DrawColor = Red; DrawBodyCount("Nali", scoreholder.Nali, Canvas, row++); Canvas.DrawColor = White;} if (scoreholder.animals > 0){ Canvas.DrawColor = Red; DrawBodyCount("Harmless Critters", scoreholder.animals, Canvas, row++); Canvas.DrawColor = White; } row++; DrawBodyCount("Total Kills", scoreholder.killtotal, Canvas, row++); DrawdiffCount("Difficlulty", difficulties[Level.Game.Difficulty], Canvas, row++); DrawBodyCount("Score", scoreholder.score, Canvas, row++); row++; DrawdiffCount("Map Title", level.title, Canvas, row++); //kinda mirror DM.... DrawdiffCount("Author", level.author, Canvas, row++); } else { Canvas.Font = Canvas.MedFont; Canvas.SetPos(0.2 * Canvas.ClipX, 0.2 * Canvas.ClipY ); Canvas.DrawText("Score Keeper inventory not found!!! Please stop ]-[4xx1ng the code!", False); } } function DrawBodyCount(string thingy, int amount, canvas Canvas, int row) { Canvas.SetPos(0.2 * Canvas.ClipX, 0.1 * Canvas.ClipY + 10 * row ); Canvas.DrawText(thingy, False); Canvas.SetPos(0.6 * Canvas.ClipX, 0.1 * Canvas.ClipY + 10 * row ); Canvas.DrawText(amount, False); } function DrawdiffCount(string thingy, string amount, canvas Canvas, int row) //just for the difficulties... { Canvas.SetPos(0.2 * Canvas.ClipX, 0.1 * Canvas.ClipY + 10 * row ); Canvas.DrawText(thingy, False); Canvas.SetPos(0.6 * Canvas.ClipX, 0.1 * Canvas.ClipY + 10 * row ); Canvas.DrawText(amount, False); } M pM M S/// ============================================================ // oldskool.scorekeeper: a hidden inventory spawned by singleplayer which keeps track of the score and stuff (so maps keep going and going...) no way to save though.... // based on unrogue's tally translator.... // Psychic_313: unchanged, although maybe extensibility would be good? // ============================================================ class scorekeeper expands TournamentPickup; var travel int Skaarjw; var travel int Skaarjt; var travel int hugeguys; var travel int Nali; var travel int Tentacles; var travel int Pupae; var travel int Animals; var travel int Brutes; var travel int Gasbags; var travel int Krall; var travel int Mercs; var travel int Sliths; var travel int Titans; var travel int Fish; var travel int Flies; var travel int Mantas; var travel int blobs; var travel int killtotal; var travel int Score; function PreBeginPlay() { If (!Level.Game.Isa('SinglePlayer2')) Destroy(); //can only exist for SP2.... } //ripped and modified from tallytranslator...... function scoreit(pawn WhatDied) { local int points, intlevel; if (WhatDied != None) { points = int(10*((WhatDied.skill/2) + 1)*(whatdied.default.health/150)+whatdied.intelligence/1.5); //calculated by difficulty (major), health (slightly less important) and AI (tiny difference) If (points<8) points=8; //force to at least give 8 points. if (PlayerPawn(Owner).ReducedDamageType == 'All') Points*=(-10); //cheater!!!!!!!! if (WhatDied.IsA('Nali')){ //killing nalis is bad..... Nali++; Points=-32; } else if (WhatDied.IsA('Brute')) Brutes++; else if (WhatDied.IsA('Gasbag')) Gasbags++; else if (WhatDied.IsA('Krall')) Krall++; else if (WhatDied.IsA('Mercenary')) Mercs++; else if (WhatDied.IsA('Queen')) hugeguys++; else if (WhatDied.IsA('Slith')) Sliths++; else if (WhatDied.IsA('Titan')) Titans++; else if (WhatDied.IsA('Warlord')) hugeguys++; else if (WhatDied.IsA('Skaarjwarrior')) Skaarjw++; else if (WhatDied.IsA('Skaarjtrooper')) Skaarjt++; else if (WhatDied.IsA('nalirabbit')) { Animals++; points= -4;} else if (WhatDied.IsA('bird1')) { Animals++; points= -7;} else if (WhatDied.IsA('Brute')) Brutes++; else if (WhatDied.IsA('cow')){ Animals++; points= -10;} //don't kill innocent animals :D else if (WhatDied.IsA('tentacle')) tentacles++; else if ((WhatDied.IsA('ParentBlob'))||(Whatdied.Isa('Bloblet'))) blobs++; else if ((WhatDied.IsA('BiterfishSchool'))||(Whatdied.Isa('biterfish'))||(Whatdied.Isa('devilfish'))||(Whatdied.Isa('squid'))) fish++; else if (WhatDied.IsA('manta')) mantas++; else if (WhatDied.IsA('fly')) flies++; else if (WhatDied.IsA('pupae')) pupae++; if (WhatDied.IsA('ScriptedPawn')) if (ScriptedPawn(WhatDied).bIsBoss) points *=3; //bonus for killing bosses..... Score += points; Killtotal += 1; } } M k// ============================================================ //oldskoolmusicclient. the l337 mu5ic selector thingy....... // ============================================================ class oldskoolmusicclient expands UMenuPageWindow; // music vars var UWindowComboControl musicselect; //main combo to select music var UWindowCheckBox force, CDcheck; //force music and let cdmusic be used var UwindowHsliderControl track, volume; //used for both musics that have multiple tracks as well as CD track :D volume allowz quick colume setting.... var UWindowSmallButton reset; //to reset to level's music... var playbutton playbutton; //a custom button which a logo. notify has this play stuff...... var UMenuLabelControl tracklabel; //this shows what song # is selected. var bool breset; //was it reset (can't over-ride save if it was :D) var bool initialized; //to prevent accccessed nones...... var bool requestNoCD; //to allaw turning off of CD trackz...... var float nocdtimer; //can't set a timer in Uwindows so we do it the ugly way :P function created(){ local int i, k; local string musicclass, musicdesc, amount, selection; local bool foundmusicclass; //if we find it stop searching D: super.created(); i=0; //ensure..... force = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 10, 90, 1)); force.SetText("Force Music"); force.SethelpText("If unchecked, the music choice will only run if there is no music in the level, a menu is running, or you select 'Play'."); force.SetFont(F_Normal); force.Align = TA_Left; force.bChecked = class'Olroot.oldskoolrootwindow'.default.force; CDcheck = UWindowCheckBox(CreateControl(class'UWindowCheckBox', winwidth-95, 10, 90, 1)); CDcheck.SetText("Use CD music"); CDcheck.SethelpText("If checked, music will be played off a CD in the CDROM."); CDcheck.SetFont(F_Normal); CDcheck.Align = TA_Left; CDcheck.bChecked = bool(GetPlayerOwner().ConsoleCommand("get ini:Engine.Engine.AudioDevice UseCDMusic")); //bool needs to be run, as this stuff is saved in strings if (cdcheck.bchecked){ force.bchecked=true; force.bdisabled=true;} //volume ripped from umenuaudioclient purely for convenience..... Volume = UWindowHSliderControl(CreateControl(class'UWindowHSliderControl', 10, 35, 210, 1)); Volume.SetRange(0, 255, 32); Volume.SetValue(int(GetPlayerOwner().ConsoleCommand("get ini:Engine.Engine.AudioDevice MusicVolume"))); //saved in strings..... Volume.SetText(class'umenu.umenuaudioclientwindow'.default.MusicVolumeText); //allow localization Volume.SetHelpText(class'umenu.umenuaudioclientwindow'.default.MusicVolumeHelp); Volume.SetFont(F_Normal); Volume.Align = TA_Left; musicselect = UWindowComboControl(CreateControl(class'UWindowComboControl', 10, 60, 210, 1)); musicselect.SetButtons(false); //option debatable...... musicselect.SetText("Select Song"); musicselect.Align = TA_Left; musicselect.SetHelpText("Select the song that you wish to have played."); musicselect.SetFont(F_Normal); musicselect.SetEditable(False); musicselect.editboxwidth = 150; GetPlayerOwner().GetNextIntDesc("engine.music", 0, musicclass, musicDesc); //load's the first one... I used engine.music as it looked good (any valid class would have worked fine) while (musicclass != "") //while allows for infine amounts of songz.... (ok..10,000 actually..hardcoded into lists) { k = InStr(musicDesc, ","); //search for the comma to ID the description and the amount of songs in the music... if(k == -1) { amount=","$1; //default to 1 track..... } else { amount = ","$Mid(musicDesc, k+1); musicdesc = Left(musicDesc, k); //split off.... } if (!foundmusicclass&&musicclass==class'olroot.oldskoolrootwindow'.default.musicclass){ foundmusicclass=true; selection=musicclass$amount;} musicselect.AddItem(musicDesc, musicclass$amount); //the first item will show.. second stores the class and song amount that may be called later... (not shown to user) i++; GetPlayerOwner().GetNextIntDesc("engine.music", i, musicclass, musicDesc); } musicselect.sort(); //alphabatize :D k=musicselect.FindItemIndex2(selection, True); musicselect.SetSelectedIndex(Max(k, 0)); //set it as we found it above.... Reset = UWindowSmallButton(CreateControl(class'UWindowSmallButton', 10, 83, 70, 1)); Reset.SetText("RESET"); Reset.SetFont(F_Bold); Reset.Align = TA_Left; Reset.SetHelpText("Reset the music to the level's default"); reset.bdisabled=(getplayerowner().myhud.isa('oldskoolhud')); //disable if force is checked or we are in SP.... Playbutton = playButton(CreateControl(class'playButton', winwidth-78, 83, 70, 1)); Playbutton.SetText(""); //nothing is written as the graphic is self-explanitory... Playbutton.SetFont(F_Normal); Playbutton.Align = TA_Right; Playbutton.SetHelpText("Play the selected music!"); if (!cdcheck.bchecked&&getplayerowner().myhud.isa('oldskoolhud')) playbutton.bdisabled=true; track = UWindowHSliderControl(CreateControl(class'UWindowHSliderControl', 10, 108, 210, 1)); if (cdcheck.bchecked){ //disable and hide stuff..... track.SetText("CD Track"); track.SetHelpText("Select the CD track number you wish to play"); reset.bdisabled=true; //can't reset if CD is playing :D reset.sethelptext("You cannot reset to level music while CD music is enabled"); musicselect.hidewindow(); //don't show music if CD is checked.... track.SetRange(1, 32, 1); } //up to 32 trackz..... else{ //set it as music sayz it..... musicdesc=musicselect.GetValue2(); //read selection amount item k = InStr(musicDesc, ","); //read comma amount = Mid(musicDesc, k+1); //read the amount.... track.SetRange(0, INT(amount)-1, 1); track.SetText("Song Number"); track.SetHelpText("Select the song number you wish to play");} //set range to amount of trackz songs have..... track.SetValue(class'olroot.oldskoolrootwindow'.default.track); //what track we saved at? track.SetFont(F_Normal); track.Align = TA_Left; tracklabel=UMenuLabelControl(CreateWindow(class'UMenuLabelControl', 10, 121,210, 1)); tracklabel.Align = TA_Center; track.SetFont(F_Bold); if (cdcheck.bchecked) tracklabel.SetText("CD Track "$string(class'olroot.oldskoolrootwindow'.default.track)$" selected"); else tracklabel.SetText("Song Number "$string(class'olroot.oldskoolrootwindow'.default.track)$" selected"); tracklabel.SethelpText("01d5k001 0wnz j00!!!!"); // :D If (amount=="1"){ //hide as we only have amount of one (it is set to 0 for CD's always) track.hidewindow(); tracklabel.SetText("Only One Song Available");} if (k==-1&&!cdcheck.bchecked)//music not found in int's tracklabel.SetText("Level's song, "$Left(string(getplayerowner().song),InStr(string(getplayerowner().song), "."))$" has no INT reference!"); initialized=true; DesiredWidth = 220; DesiredHeight = 146; } function Notify(UWindowDialogControl C, byte E) //notifification!!1 { Super.Notify(C, E); If (!initialized) return; //prevent accessed nones...... switch(E) //type { case DE_Change: switch(C) //name of control.... { Case Volume: GetPlayerOwner().ConsoleCommand("set ini:Engine.Engine.AudioDevice MusicVolume "$Volume.Value); break; Case force: oldskoolrootwindow(root).force = force.bchecked; class'Olroot.oldskoolrootwindow'.default.force = force.bchecked; class'Olroot.oldskoolrootwindow'.static.staticSaveconfig(); break; Case musicselect: Musicchanged(); //only swaps the track... break; Case Cdcheck: cdchanged(); //don't want too much stuff in the case. break; case track: //only change label.. true saving done by close/play breset=false; if (cdcheck.bchecked) tracklabel.SetText("CD Track "$string(int(track.value))$" selected"); else tracklabel.SetText("Song Number "$string(int(track.value))$" selected"); break; } break; case DE_Click: //button clicks.... switch(C) { Case playbutton: //change the vars here Play(); //too much stuff break; Case reset: Resetstuff(); break; } break; } } function resetstuff(){ local int a, b, k, amount; local bool found; local string temp; If (reset.bdisabled) return; //wierd bug...very wierd... breset=true; If (Getlevel().song !=None){ //we can safely set it Getplayerowner().ClientSetMusic( GetLevel().Song, GetLevel().SongSection, GetLevel().CdTrack, MTRAN_Fade ); //reset it... oldskoolrootwindow(root).musicclass=string(GetLevel().Song); oldskoolrootwindow(root).track=int(GetLevel().SongSection);} else{ //with no music, it will reset to umenu, so we need to load the nullmusic Getplayerowner().ClientSetMusic( Music'olroot.null', 0, 255, MTRAN_Fade); oldskoolrootwindow(root).musicclass="olroot.null"; oldskoolrootwindow(root).track=0; class'olroot.oldskoolRootwindow'.default.musicclass="olroot.null"; class'olroot.oldskoolRootwindow'.default.track=0;} a=1; while (!found&&a<5){ //attempt to fine it in the class..... temp=oldskoolrootwindow(root).musicclass$","$string(a); b=musicselect.FinditemIndex2(temp, true); if (b != -1) //-1 means not found.... found=true; a++; } musicselect.SetSelectedIndex(max(0,b)); k = InStr(musicselect.getvalue2(), ","); //read comma amount = INT(Mid(musicselect.getvalue2(), k+1)); //read the amount.... track.SetRange(0, amount-1, 1); track.SetValue(class'olroot.oldskoolrootwindow'.default.track); tracklabel.SetText("Song Number "$string(class'olroot.oldskoolrootwindow'.default.track)$" selected"); If (amount==1){ //hide as we only have amount of one (it is set to 0 for CD's always) track.hidewindow(); tracklabel.SetText("Only One Song Number in Selected Song"); if (b==-1)//music not found in int's tracklabel.SetText("Level's song, "$Left(string(getplayerowner().song),InStr(string(getplayerowner().song), "."))$" has no INT reference!"); class'Olroot.oldskoolrootwindow'.static.staticSaveconfig();} } function play() //really saving configs for root { local int i; local string musicclass; If (playbutton.bdisabled) return; //wierd bug...very wierd... breset=false; if (!cdcheck.bchecked){ musicclass=musicselect.GetValue2(); //read selection amount item I = InStr(musicclass, ","); //read comma musicclass = Left(musicclass, i); //read actual object reference oldskoolrootwindow(root).musicclass=musicclass; oldskoolrootwindow(root).Saveconfig(); } //save (it's gobalconfig) oldskoolrootwindow(root).bswaptrack=false; oldskoolrootwindow(root).swaptime=0.0; //now save track.... oldskoolrootwindow(root).track=track.value; oldskoolrootwindow(root).saveconfig(); if (oldskoolrootwindow(root).force) return; //allow OSA to process it. //force play...... If ((string(getplayerowner().song)!=musicclass)||int(getplayerowner().songsection)!=track.value){ if (cdcheck.bchecked) getplayerowner().clientsetmusic(music'olroot.null',0,track.value,MTRAN_Fade); else getplayerowner().clientsetmusic(music(dynamicloadobject(musicclass, class'music')),track.value,255,MTRAN_Fade);} } function RightClickTab() // :D { MessageBox("Secret Message", "Congradulations! You have found the secret message. E-mail me at usaar33@yahoo.com with the password\\n'Hyp3r10n s00x (1 w4r3d j00!!)'\\nto be rewarded!", MB_OK, MR_OK, MR_OK); //hey!!!!! don't look at this!!! } function cdchanged(){ //cd options... local int k, amount; local string musicdesc; local bool digimusic; breset=false; reset.bdisabled=CDCheck.bChecked; digimusic=!Cdcheck.bchecked; //set the ini if (cdcheck.bchecked){ //window swapping..... GetPlayerOwner().ConsoleCommand("set ini:Engine.Engine.AudioDevice UseCDMusic true"); force.bchecked=true; force.bdisabled=true; playbutton.bdisabled=false; //ensure it is enabled..... track.SetText("CD Track"); track.SetHelpText("Select the CD track number you wish to play"); reset.sethelptext("You cannot reset to level music while CD music is enabled"); musicselect.hidewindow(); //don't show music track.SetRange(1, 32, 1); //up to 32 trackz..... oldskoolrootwindow(root).track=max(1, oldskoolrootwindow(root).track); class'olroot.oldskoolRootwindow'.default.track=max(1, oldskoolrootwindow(root).track); class'Olroot.oldskoolrootwindow'.static.staticSaveconfig(); //ensure its not 0... track.SetValue(oldskoolrootwindow(root).track); tracklabel.SetText("CD Track "$string(oldskoolrootwindow(root).track)$" selected"); track.showwindow(); getplayerowner().clientsetmusic(music'olroot.null',0,track.value,MTRAN_Fade); oldskoolrootwindow(root).cdused=true; //active class'olroot.oldskoolRootwindow'.default.cdused=true; //save class'Olroot.oldskoolrootwindow'.static.staticSaveconfig(); } else{ //going to non-CD mode..... oldskoolrootwindow(root).cdused=false; //active class'olroot.oldskoolRootwindow'.default.cdused=false; //save class'Olroot.oldskoolrootwindow'.static.staticSaveconfig(); force.bchecked=class'Olroot.oldskoolrootwindow'.default.force; //reset it to what it should be.... force.bdisabled=false; reset.bdisabled=(getplayerowner().myhud.isa('oldskoolhud')); musicdesc=musicselect.GetValue2(); //read selection amount item k = InStr(musicDesc, ","); //read comma amount = INT(Mid(musicDesc, k+1)); //read the amount.... track.SetRange(0,amount-1, 1); oldskoolrootwindow(root).track=255; class'olroot.oldskoolRootwindow'.default.track=min(amount, oldskoolrootwindow(root).track)-1;//ensure # is valid class'Olroot.oldskoolrootwindow'.static.staticSaveconfig(); track.SetValue(class'olroot.oldskoolrootwindow'.default.track); tracklabel.SetText("Song Number "$string(class'olroot.oldskoolrootwindow'.default.track)$" selected"); If (amount==1){ //hide as we only have amount of one track.hidewindow(); tracklabel.SetText("Only One Song Available"); } else track.showwindow(); track.SetText("Song Number"); track.SetHelpText("Select the song number you wish to play"); reset.sethelptext("Reset the music to the level's default"); musicselect.showwindow(); //show music if (getplayerowner().myhud.isa('oldskoolhud')){ If (getlevel().song!=None) getplayerowner().clientsetmusic(getlevel().song, getlevel().songsection,255,MTRAN_Fade); else //with no music, it will reset to umenu, so we need to load the nullmusic Getplayerowner().ClientSetMusic( Music'olroot.null', 0, 255, MTRAN_Fade); playbutton.bdisabled=true; } else getplayerowner().clientsetmusic(music(dynamicloadobject(oldskoolrootwindow(root).musicclass, class'music')),track.value,255,MTRAN_Fade); requestnocd=true; } GetPlayerOwner().ConsoleCommand("set ini:Engine.Engine.AudioDevice UseDigitalMusic "$digimusic); //ensure won't play stuff wrong.... } function tick(float delta){ //the ticker (to stop tracks correctly..... if (!requestnocd) return; nocdtimer+=delta; if (nocdtimer>2){ nocdtimer=0; requestnocd=false; oldskoolrootwindow(root).track=min(track.maxvalue+1, oldskoolrootwindow(root).track)-1; GetPlayerOwner().ConsoleCommand("set ini:Engine.Engine.AudioDevice UseCDMusic false"); } } function musicchanged(){ local int k, amount; breset=false; //duh! k = InStr(musicselect.getvalue2(), ","); //read comma amount = INT(Mid(musicselect.getvalue2(), k+1)); //read the amount.... track.SetRange(0, amount-1, 1); oldskoolrootwindow(root).track=min(oldskoolrootwindow(root).track,amount-1); //verification track.SetValue(oldskoolrootwindow(root).track); tracklabel.SetText("Song Number "$string(oldskoolrootwindow(root).track)$" selected"); If (amount==1){ //hide as we only have amount of one (it is set to 0 for CD's always) track.hidewindow(); tracklabel.SetText("Only One Song Available");} else track.showwindow(); } function Close(optional bool bByParent){ //saves configs when we close the main window..... local int i; local string musicclass; if (!breset){ //don't over-ride saves if it was reset.... if (!cdcheck.bchecked){ musicclass=musicselect.GetValue2(); //read selection amount item I = InStr(musicclass, ","); //read comma musicclass = Left(musicclass, i); //read actual object reference oldskoolrootwindow(root).musicclass=musicclass;} //save (it's gobalconfig) //now save track.... oldskoolrootwindow(root).track=track.value;} oldskoolrootwindow(root).saveconfig(); Super.Close(bByParent);} M OJR4(!333?a&!<J M p+// ============================================================ // fixes team name bug. // Psychic_313: unchanged // ============================================================ class oldskoolTeamScoreBoard expands UnrealTeamScoreBoard; var TournamentGameReplicationInfo OwnerGame; function ShowScores( canvas Canvas ) { local PlayerReplicationInfo PRI; local int PlayerCount, I, XOffset; local int LoopCountTeam[4]; local float XL, YL, YOffset; local TeamInfo TI; OwnerGame = TournamentGameReplicationInfo(PlayerPawn(Owner).GameReplicationInfo); Canvas.Font = RegFont; // Header DrawHeader(Canvas); // Trailer DrawTrailer(Canvas); for ( I=0; I<16; I++ ) Scores[I] = -500; for ( I=0; I<4; I++ ) PlayerCounts[I] = 0; PlayerCount = 0; for ( i=0; i<32; i++ ) { if (PlayerPawn(Owner).GameReplicationInfo.PRIArray[i] != None) { PRI = PlayerPawn(Owner).GameReplicationInfo.PRIArray[i]; if ( !PRI.bIsSpectator || PRI.bWaitingPlayer ) { PlayerNames[PlayerCount] = PRI.PlayerName; TeamNames[PlayerCount] = PRI.TeamName; Scores[PlayerCount] = PRI.Score; Teams[PlayerCount] = PRI.Team; Pings[PlayerCount] = PRI.Ping; PlayerCount++; PlayerCounts[PRI.Team]++; } } } SortScores(PlayerCount); for ( I=0; I 0) { if ( i % 2 == 1 ) //the % means divide and give remainder..... wow...these Epic guyz can code ;) XOffset = Canvas.ClipX/8 + Canvas.ClipX/2; else XOffset = Canvas.ClipX/8; if (i - 1 > 0) YOffset = Canvas.ClipY/4 + PlayerCounts[i - 2] * 16 + 32; else YOffset = Canvas.ClipY/4 - 16; Canvas.DrawColor = TeamColor[i]; Canvas.SetPos(XOffset, Yoffset); //only thing that had to be changed (don't know why epic did it this way) Canvas.StrLen(TeamName[i], XL, YL); Canvas.DrawText(TeamName[i], false); Canvas.SetPos(XOffset + 96, Yoffset); Canvas.DrawText(int(OwnerGame.Teams[i].Score), false); } } Canvas.DrawColor.R = 255; Canvas.DrawColor.G = 255; Canvas.DrawColor.B = 255; } M {// ============================================================ // notification to swap scoreboards..... // ============================================================ class oldboardNotify expands spawnnotify; var bool bdisabled; simulated event Actor SpawnNotification( Actor A ) { local actor oldowner; local bool isteam, isas, islms; if (bdisabled) return a; islms=A.isa('lmsscoreboard'); isteam=A.isa('teamscoreboard'); isas=A.isa('AssaultScoreboard'); oldowner = A.Owner; //as we are destroying the actor we still need to know who it's owner was.. A.Destroy(); if (isteam) //check which ones we will use..... { if (isas) //for time on HUD to show..... return Spawn( Class'oldskool.asscoreboard', oldowner ); else return Spawn( Class'oldskool.oldskoolTeamScoreBoard', oldowner ); } else{ //use normal scoreboard if (islms) //if we're in LMS mode..... return Spawn( Class'oldskool.oldskoollmsboard', oldowner ); else return Spawn( class'UnrealShare.UnrealScoreBoard', oldowner ); } } M Y// ============================================================ // to swap HUDS....... // ============================================================ class oldhudNotify expands SpawnNotify; var bool bdisabled; simulated event Actor SpawnNotification( Actor A ) { if (bdisabled) return a; if (a.owner.Isa('spectator')){ a.destroy();//use spectator HUD for spectators return Spawn( Class'oldskool.oldskoolspectatorhud', A.Owner ); } if (a.class.name=='assaultHUD'){ a.destroy(); return Spawn( Class'oldskool.oldskoolashud', A.Owner );} if (a.class.name=='ChallengectfHUD'){ a.destroy(); return Spawn( Class'oldskool.realctfhud', A.Owner );} if (a.class.name=='ChallengeDominationHUD'){ a.destroy(); return Spawn( Class'oldskool.oldskooldomHUD', A.Owner );} if (a.class.name=='ChallengeTeamHUD'){ a.destroy(); return Spawn( Class'oldskool.oldskoolTeamHUD', A.Owner );} if (a.class.name=='ChallengeHUD'){ //use normal HUD a.destroy(); return Spawn( Class'oldskool.oldskoolBASEHUD', A.Owner );} return a; //custom HUD: use it. } M o1!0o.  A ARC?oAutomag to Enforcerov p_ Furthermore, Liandri will confiscate one enforcer if you have two of them, upon entering a new level.o%o$o- -Mm.  AARC?mUT BioRiflem  _m%m$m- -]K.  A8BRC?K#Change ASMD into ShockRifleK%K$K- -Bh.  ABRC?h%Change Stinger into Pulse Gunh  _h%h$h- -Ai.  ABRC?i$Change Razorjack into Ripperi  _i%i$i- -@s.  ABRC?sUT miniguns%s$s- -Gj.  ABRC?jUT Flak Cannonj  _j%j$j- -hM.  ACRC?M-Change Eightball into Rocket LauncherM%M$M- -{z.  ACRC?zUT Sniper Riflez%z$z- -lO.  A*CRC?OUT JumpbootsO%O$O- -Wk.  A?@@@ @!C6@ B@k.@DJ k@ #@kA@!N.jjjd%d,jd.wjjd%d&.wd.wd7,.wjjt*!F=j@U@!M w*$Fk@jJ K L  M ~// ============================================================ // coloring for LMS..... // Psychic_313: unchanged // ============================================================ class oldskoollmsboard expands UnrealScoreBoard; function DrawScore( canvas Canvas, int I, float XOffset, int LoopCount ) //uses different colors for out dudes... { local int Step; local color LightCyanColor, GoldColor; LightCyanColor.R=128; LightCyanColor.G=255; LightCyanColor.B=255; //set color....... GoldColor.R=255; GoldColor.G=255; GoldColor.B=255; if (Canvas.ClipX >= 640) Step = 16; else Step = 8; Canvas.SetPos(Canvas.ClipX/4 * 3, Canvas.ClipY/4 + (LoopCount * Step)); if(Scores[I] >= 100.0) Canvas.CurX -= 6.0; if(Scores[I] >= 10.0) Canvas.CurX -= 6.0; if(Scores[I] < 1.0) Canvas.DrawColor = LightCyanColor; else Canvas.DrawColor = GoldColor; if(Scores[I] < 0.0) Canvas.CurX -= 6.0; Canvas.DrawText(int(Scores[I]), false); } M z@M M | U -' M Z'// ============================================================ // an assault HUD...... // Psychic_313: unchanged // ============================================================ class oldskoolashud expands oldskoolteamhud; simulated function DrawFragCount(Canvas Canvas, int X, int Y) { local float b; if ( Canvas.ClipX <= Canvas.ClipX - 256 ) B = Canvas.ClipY - 128; else B = Canvas.ClipY - 192; DrawTimeAt(Canvas, 2.0, b); Super.DrawFragCount(Canvas, X, Y); } simulated function DrawTimeAt(Canvas Canvas,float x, float y) { local int Minutes, Seconds, d; if ( PlayerOwner.GameReplicationInfo == None ) return; Canvas.DrawColor = RedColor; Canvas.CurX = X; Canvas.CurY = Y; Canvas.Style = Style; if ( PlayerOwner.GameReplicationInfo.RemainingTime > 0 ) { Minutes = PlayerOwner.GameReplicationInfo.RemainingTime/60; Seconds = PlayerOwner.GameReplicationInfo.RemainingTime % 60; } else { Minutes = 0; Seconds = 0; } if ( Minutes > 0 ) { if ( Minutes >= 10 ) { d = Minutes/10; Canvas.DrawTile(Texture'BotPack.HudElements1', 25, 64, d*25, 0, 25.0, 64.0); Canvas.CurX += 7; Minutes= Minutes - 10 * d; } else { Canvas.DrawTile(Texture'BotPack.HudElements1', 25, 64, 0, 0, 25.0, 64.0); Canvas.CurX += 7; } Canvas.DrawTile(Texture'BotPack.HudElements1', 25, 64, Minutes*25, 0, 25.0, 64.0); Canvas.CurX += 7; } else { Canvas.DrawTile(Texture'BotPack.HudElements1', 25, 64, 0, 0, 25.0, 64.0); Canvas.CurX += 7; } Canvas.CurX -= 4 ; Canvas.DrawTile(Texture'BotPack.HudElements1', 25, 64, 32, 64, 25.0, 64.0); Canvas.CurX += 3; d = Seconds/10; Canvas.DrawTile(Texture'BotPack.HudElements1', 25, 64, 25*d, 0, 25.0, 64.0); Canvas.CurX += 7; Seconds = Seconds - 10 * d; Canvas.DrawTile(Texture'BotPack.HudElements1', 25, 64, 25*Seconds, 0, 25.0, 64.0); Canvas.CurX += 7; } simulated function bool SpecialIdentify(Canvas Canvas, Actor Other ) //never seems to show..... { local float XL, YL; if ( !Other.IsA('FortStandard') ) return false; Canvas.Font = Font'WhiteFont'; Canvas.DrawColor = RedColor * IdentifyFadeTime * 0.333; Canvas.StrLen(class'botpack.AssaultHUD'.default.IdentifyAssault, XL, YL); Canvas.SetPos(Canvas.ClipX/2 - XL/2, Canvas.ClipY - 74); Canvas.DrawText(class'botpack.AssaultHUD'.default.IdentifyAssault); return true; } M x!// ============================================================ // HUD for domination // Psychic_313: unchanged // ============================================================ class oldskooldomhud expands oldskoolteamhud; simulated function PostRender( canvas Canvas ) { local int TeamScore; local int X, Y; local float XL, YL; local ControlPoint CP; local NavigationPoint N; local Texture CPTexture; Super.PostRender( Canvas ); if ( TournamentConsole(PlayerPawn(Owner).Player.Console).bShowSpeech == True ) return; X = 0.95*Canvas.ClipX; Y = Canvas.ClipY-128; Canvas.Style = Style; Canvas.Font = Font'WhiteFont'; /* for ( N=Level.NavigationPointList; N!=None; N=N.NextNavigationPoint ) if ( N.IsA('ControlPoint') ) { CP = ControlPoint(N); if (CP.ControllingTeam != None) CPTexture = TeamIcon[CP.ControllingTeam.TeamIndex]; else CPTexture = texture'I_TeamN'; Canvas.DrawColor = whitecolor; Canvas.SetPos(X,Y); Canvas.DrawIcon(CPTexture, 1); Y -= 140; } */ // separate name drawing to reduce texture changes Y = Canvas.ClipY - 384; for ( N=Level.NavigationPointList; N!=None; N=N.NextNavigationPoint ) if ( N.IsA('ControlPoint') ) { CP = ControlPoint(N); if (CP.ControllingTeam != None) Canvas.DrawColor = TeamColor[CP.ControllingTeam.TeamIndex]; else Canvas.DrawColor = WhiteColor; Canvas.SetPos(0, 0); Canvas.StrLen(CP.PointName, XL, YL); Canvas.SetPos(0.99*Canvas.ClipX-XL, Y + 96 - YL); Canvas.DrawText(CP.PointName); Y += 16; } } simulated function bool SpecialIdentify(Canvas Canvas, Actor Other ) { local float XL, YL; if ( !Other.IsA('ControlPoint') ) return false; Canvas.Font = Font'WhiteFont'; Canvas.DrawColor = RedColor; Canvas.DrawColor.R = 255 * (IdentifyFadeTime / 3.0); Canvas.StrLen(ControlPoint(Other).PointName, XL, YL); Canvas.SetPos(Canvas.ClipX/2 - XL/2, Canvas.ClipY - 74); Canvas.DrawText(ControlPoint(Other).PointName); return true; } M [\n[\>..-' WD33s?\OD\?,\\ OD\?UwU*Ua/!hP.U?wP *\P S\E\\aPO N \3p}?\O ?O,`N \aPO,UU M b// ============================================================ // oldskool.OldSkoolPagesClientWindow: The main window with all the pages..... // ============================================================ class OldSkoolPagesClientWindow expands UWindowDialogClientWindow; var UMenuPageControl Pages; var UWindowSmallCloseButton CloseButton; function Created() { Pages = UMenuPageControl(CreateWindow(class'UMenuPageControl', 0, 0, WinWidth, WinHeight-48)); Pages.SetMultiLine(True); /* Pages.AddPage("Mutator", class'oldskool.oldskoolconfigclient'); Pages.AddPage("Single Player", class'oldskoolSPclient'); Pages.AddPage("Options", class'oldskoolgameoptionsClient'); Pages.AddPage("Music", class'oldskoolmusicClient'); Pages.AddPage("Keys", class'OldSkoolCustomizeClientWindow'); Pages.AddPage("About", class'OldSkoolAboutClient');*/ Pages.AddPage("Mutator", class'OldskoolScrollMain'); Pages.AddPage("Single Player", class'OldskoolScrollSP'); Pages.AddPage("Options", class'OldskoolScrollGOp'); Pages.AddPage("Music", class'OldskoolScrollMusic'); Pages.AddPage("Keys", class'OldSkoolScrollKeys'); Pages.AddPage("About", class'OldskoolScrollAbout'); CloseButton = UWindowSmallCloseButton(CreateControl(class'UWindowSmallCloseButton', WinWidth-56, WinHeight-24, 48, 16)); Super.Created(); } function Resized() { Pages.WinWidth = WinWidth; Pages.WinHeight = WinHeight - 24; // OK, Cancel area CloseButton.WinLeft = WinWidth-52; CloseButton.WinTop = WinHeight-20; } function Paint(Canvas C, float X, float Y) { local Texture T; T = GetLookAndFeelTexture(); DrawUpBevel( C, 0, LookAndFeel.TabUnselectedM.H, WinWidth, WinHeight-LookAndFeel.TabUnselectedM.H, T); } function GetDesiredDimensions(out float W, out float H) { Super(UWindowWindow).GetDesiredDimensions(W, H); H += 30; } M k%// ============================================================ // oldskool.oldskoolHUD: for green menu h4ck........ and frag counter showing pts. // Psychic_313: @@@ OLROOT DEPENDENCIES INSIDE // ============================================================ class oldskoolHUD expands oldskoolbaseHUD; simulated function DisplayMenu( canvas Canvas ) //prevent green menu from showing... { local class packclass;//local playerpawn playerowner; Playerpawn(Owner).bShowMenu = false; //show uwindow menu WindowConsole(Playerpawn(Owner).Player.Console).bQuickKeyEnable = true; //ensures it will then close..... WindowConsole(Playerpawn(Owner).Player.Console).LaunchUWindow(); //open window..... if (class'olroot.oldskoolnewgameclientwindow'.default.SelectedPackType!="Custom"&&class'olroot.oldskoolnewgameclientwindow'.default.SelectedPackType!=""){ packclass=Class(DynamicLoadObject(class'olroot.oldskoolnewgameclientwindow'.default.SelectedPackType, class'Class')); WindowConsole(Playerpawn(Owner).Player.Console).Root.CreateWindow(PackClass.default.loadmenu, 100, 100, 200, 200); } else WindowConsole(Playerpawn(Owner).Player.Console).Root.CreateWindow(class'OldSkoolLoadGameWindow', 100, 100, 200, 200); } simulated function DrawFragCount(Canvas Canvas, int X, int Y) //to use the scorekeeper's score.... { local scorekeeper scoreholder; local color oldcol; scoreholder = scorekeeper(pawn(owner).FindInventoryType(class 'scorekeeper')); Canvas.SetPos(X,Y); if (realicons) { Canvas.DrawIcon(Texture'Realskull', 1.0); oldcol=canvas.drawcolor; canvas.drawcolor=redcolor; } else Canvas.DrawIcon(Texture'IconSkull', 1.0); Canvas.CurX -= 31; Canvas.CurY += 23; if ( scoreholder == None ) return; Canvas.Font = Font'TinyWhiteFont'; if (scoreholder.score<10000) Canvas.CurX+=6; if (scoreholder.score<1000) Canvas.CurX+=6; if (scoreholder.score<100) Canvas.CurX+=6; if (scoreholder.score<10) Canvas.CurX+=6; if (scoreholder.score<0) Canvas.CurX-=6; if (scoreholder.score<-9) Canvas.CurX-=6; if (scoreholder.score<-90) Canvas.CurX-=6; if (scoreholder.score<-900) Canvas.CurX-=6; if (scoreholder.score<-9000) Canvas.CurX-=6; Canvas.DrawText(scoreholder.score,False); if (realicons) canvas.drawcolor=oldcol; } M P// ============================================================ // oldskool.unrealCreditsCW: the credits for Unreal.... // Psychic_313: @@@ move to OlRoot // ============================================================ class unrealCreditsCW expands UTCreditsCW; M dM M WM M RcX=Qt-w.t*.t-(t-.t--C t-'( M [// ============================================================ // oldskool.unrealCreditsWindow: Credits For Unreal I // Psychic_313: @@@ move this to OlRoot // ============================================================ class unrealCreditsWindow expands UTCreditsWindow; M yAb.M M M C y1bq?%d.  A ARC?do'dBackgroundd$d@ Select the background you wish to have on the UT desktopd%dl(backrounds%ynt{y ?,?]y?V n?!backrounds?ynwosxbackgroundChanger.osxChanger *2osxbackgroundChanger.osxChanger%yno{y ?,?]y?V n?~ 6osxbackgroundChanger.osxChanger~ yn?%?{?]a~ ?]-@ !|a~ . -@ ' ad?V a?vd \ l.  A BRCAlSP Mutatorsl$l%lH Select to configure the mutators you wish to use in Singleplayeru.  ApBRC?uBlood Decalsu{ If checked, then Unreal I creatures will have blood decals, providing that decals are on and gore is set to normal.u%u$u- -pt.  ABRC?tUse Quickmapt} If checked, the new game window will utilitize caching, which will save a list of custom maps, reducing loading time.t%t$t- - s.  ABRC?sAllow Akimbo AutomagssK Do you wish to allow two automags to be held at once in Deathmatch?s%s$s- - x.  ACRC?xUT armor rulesx If checked, you will only be able to have 150 armor on you. If not, then you can collect as many as you want. NOTE: THIS ONLY WORKS RIGHT IF ALL ARMOR IS SET TO UNREAL I versions.x%x$x- - P.  A CRC?PUnreal I HUD in DMP If checked, the Unreal I HUD will be used in botmatch/multiplayer, even on the client. Note that this should be turned OFF when using a non-Epic gametype.P%P$P-.- L.  A9CRC?L!Unreal I Scoreboard in DML If checked, the Unreal I Scoreboard will be used in botmatch/multiplayer, even on the client. Note that this should be turned OFF when using a non-Epic gametype.L%L$L-.- X.  ARCRC?X*Random Dispersion Pistol Power-upsX If checked, random dispersion powerups will be spawned in the level, in accordance with the two options below. Do NOT use if the level already has powerups in it.X%X$X- -E.  AkCRC?EB'EA,E$ES  EPower-up TimeEo Select how long powerups will stay after spawning. Select 0 for them to last until they are pickup up.E%J.  ACRC?JB'JA,J$JS  JPower-up AmountJ2 Select how many power-ups will be spawned.J%\CCg -E+J+fC-C ' M l// ============================================================ // oldskool.strangeworld: Strangeworld // ============================================================ //doesn't work :( class strangeworld expands mappack; //#exec TEXTURE IMPORT NAME=strangeShot FILE=Textures\strangeShot.pcx `I a!T tCmlnjikgfhO]David 'DavidM' MnnichM]Strange WorldM M P// ============================================================ // oldskool.shrak: Shrak pack // ============================================================ class shrak expands mappack; #exec TEXTURE IMPORT NAME=shrakShot FILE=Textures\shrakShot.pcx MIPS=OFF M tM M n@M bM e6r tCpoqO]Geoffrey Field (Mad Martigan)M]Tower of Shrakith'aScM M \// ============================================================ // oldskool.shinigami: Shinigami Pack 1 // ============================================================ class shinigami expands mappack; #exec TEXTURE IMPORT NAME=shinShot FILE=Textures\shinShot.pcx MIPS=OFF M M M nwu:DKrwD rw*D?,Oww*D u$I% $I& $I, $I, KD?, D ?,?&?D,?I?K,K,"D-KDDa/!QKfDa/!vKDa/!iKDa/!QKDa/!\.D-K?,www*w?KuwD M _W@ WVX| D @{ D?,?| ,UD?,?{ z D?,,TD?z ,dBJAEA M k~%!:!B:!&!yY!\a&!B<a%!oa%!ba%!s !<a&!H ף< M QrD% a!o M M M } M M {mfI2|} ,endgame}Vortex2(  }} ' M M UGc?Ha/!h(G Gb6GC?,@@G a.HK KG8G?,K ?,G?,JGa.H' M M Ei""""*_zk* "a7 M k@>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\>>>>>>>>>>>>>>>>>>>>>>>>>>>>>B>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>c>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>ne>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>}>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\S>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>YF>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>^>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>W>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>YU>>>>>>>[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>T>>>>>>Z>>>>>>>>>>>U>>>>>Tw>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>B>>>>>>>>>>>>>S>>>>Ez>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>S>g>U>>>>>>>>^>>>>X>@X^W]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>Y>>>>>>>>>>>>>SS]ba>>>>>>>>>>}H>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\>>>>>>>>>>>>>>>][>>>>>>>>>>>>>gZ{u>>>>>>]m>>>թ]V>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>Y>>>>>>>>>>>>>WbWS|>>>>>\Ec>>G~[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>D>>>>>>>>>>>>>>>>>>>>>>>jYSe`TUy>>>>>>HjV>lr^>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>g>>>>>>>>>>>>>>|\cCwlTT>>>>ˇU{lsz>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>Tɑh|G̒U>c>]x]VDxbpo>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>[>>>>>>>>>>>hw`>>>>>>>>>>T_̈́Hφucx~>s>ե|CFW>>>>>>>>>>>>>>>W}>>>>>>>V>>>>>>>>>>>>>>>>>>>>>>>>>>>>VW>>>>>>jSST>>>>>>>Tΐrjcedؐ_V༞P>>>>>>>>>>>>>>{>>>>Vv[>>>>>>>>>>>>>>>>>>>>>>>>>>>VTYlT>>>>>>>>\E{T>>>>\>>_~z~yrhuГphS޼ڜS~o>>>>>>>>>>>s[_>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>oC\[>>>>>Sί>U>>rΠbЏ׼گjUnݻڧ{c>>>>>>>>>>}>>>>>>S>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>tTj>>lyWV[clwwgɎ«yضjWUjـ`h~i>>>>>>>>>>>[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>TSf]lccy]l>lyxĒĺ]ȑHflЀFbfw\Š>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>ecCllHuz]`FwYx\>ؖl׹ېgxylmz[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>V]l{btvw{z}H|u[qѯH峳z呹~g{Ҕ㼹ӄ>>>>>>>>>>>>>>>>>>>>>>>>>ru>>>>>>>>>>>>>>>>>>>>>>>>>Tp·oww]|T>]w[ݎ|Ӭ³גӁݽW>>>>>>>>>>>>>>>>>>>>>>>>U>>>>>>>>>>>>>>>>>>>>>>>V^T>>>>WBhCE{F_hS>`rڄگڲސ|گ׻w>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>[hFoWS>>>>>^tbjHVnu>}ݳ٬؊޻囪߯}VST>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\|T>>>>]|p[pojސٞᇣجܪlj^>>>>B>>>>>>>>>>>>>>>>V>>>>>>>>>>>>>>>>>>>>>>>SwuTT>>>>b[^M|jFϔ޶ŷۼ䬣׽—iV>jrux>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>SWWWWfSST>>>>>>>[\`joxϡotob۪ٷܽ]WW\>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>T[WWWWSSV>>[U\`[y}zz}}ݺjy׶Pܶٵןܞ㾸uajڞ>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>WW[ThS>>>C^N{otzo}Euĸٹٵߝ㹷ܭurFއ>>>>>U>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>ee\@>>>]cwtО|㽶ܹٶݻ㼷ݶ♬ݜS٣>>>>>>c>>>>>>>>\>>>>>>>>>>>>>>>>>>>>>>>>>>>XYH>>>>>>>\rouzwڹٹ媺׭ܹ۽ׯ}Su>>>>>l\>>>>>>>>>U>>>>>>>>>>>>>>>>>>>>>>>>>>>Tw]F>>>>>>>>>]l{tr{ߧ}շڳ䷳ོܱܸܹy`>>ip>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>~TЋw>>>>>>>>Wlywӕ߾݇׸߷۸㞩ϒlw}l^hz>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>UzTTr>>>>>>>>WUoľ¾ڶ߻Ѩߍ>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`lCzAT>>>>gx`g@zyρԍr׮ڳۧW`^T>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>|u_zlYKxSGVY~֒֞³ڶٲ؜YO|Ĕž>>>>>>>>>>bV>>>>>>>>>>>>>>>>>>>>>zrl}EUF>w_[cV]w۷ٹ׾ĜGъQE>>>>>>>b|]>>>>>>>>>>>>>>>>>>>>>]b}yjT>\VUꀔڷپ໹ܻę}巶>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>oVW}ؼP{{w^SbVThSxzŷڶٲ㯬ؙ}jW>>S>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>t넇jԍPڅ~s]rh_e>px{H~ܳ۷ڶĢוzb>yTlY>>>>>>>>>>>>>>>>>>>>>>>>>>>>>YH߼ҕk[V>T~i~x͊ݳ߼ݸڷھݹߥHS|xH>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>]L߾lcF>>\HH҄ݲҼڹۼܺڼؖ݇p\S>>>>>>>>>>>>>>>>>>>>>S>>>>>>>>>>>>>ע䛬P|[z}YX^>>>>|}ޔ޹ܹۺٻٽ۳P}{S>>>>>>>>>>>>>>>>>>>>xy>>>>>>>>>>>>bϔĮܕὯ|TTSs߻ٷٷۼܼٳ߼֍\~hW>>>>>>>>>>>>>>>>>>>Ё>>>>>>>>>>>^Hb䒣ܽ~ue>>>>>>>h~غܼٳħHBu^T>>>>>>>>>>>t>>}>>>>>>>>>>>>bnϐGѓSlwlyWThЄ}ؽ㷲ݼټݷܪܼྼb\~ul>>>>>>>>>j>>>>>>>>>>>>>>Tw}|幼uĎ̓jy|HMڢگڻݧ伸ۻwT\ȉ\>>>>>>>u}>>>>>>>>>>>>>>>>>>bwlԬu޼bj\YڲĻ۳ޯ޾үa|Xlf>>>_~e>>>>>>>>>>>>>>>>>>>>>lxzuϊxxyUSЈ~Hܷ޻ٲଧݤ޹垑޺۾xb>d>>>>>>>>>>>>>>>>>>>>>>>HorЄҋwݯ>>>]YSr{d䳲䧨ܷڷ¡䬒lׂ۽ܯr>^zu>>>>>>>>>>>>>>>>>>>>>>>>>V\o]u|۩uׯyC|k~op׬ڲڻܨ㽶߾ܽє{֜㸻܈Fg>>>>>>>>>>>>>>>>>>>>>>>>>`UV~u^\Րrjro\FuڧQڲ۫޽ڽػ޾ܯĞPו׆>>>>>>>>>>>>>>>>>>>>>>>>>>>Ɂ\>Bow>>y[նܯש߻Ĭٸ۷گج»݋{IJѯٸPF~b>U>>>>>>>>>>>>>>>>>>>>>>>>SWbb\>>Β>>>Bo\V⻾؜ĩݸٷٽ޾ѢئثܶڽߪִڲߙHS>>>>>>>>>>>>>>>>>>>>>>>>>>>>Vh>>>>UzV>>>>>>>>>\h¬ݼī޾޾ѣӮR帳ݳڶٮ|_>>oj>>>>>>>>>>>>>>>>>>>>>>>>>>>>>yW>>>>>>>>>>>>>>>>߽ܽ۶ݻ૖ݹܹүؔĪӗ׻ٸ}>U>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>W>Y>>>>>>>>>>>>>>>>>>>寜دǖ߯ݹ֫㜢ѯչܺݹo^ou[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>bН۷¤oR׹©Jק佲Hh@bz>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>wzw咃ՁH弽ܻlxެ޾ڲj_F>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>ĪaӔHؠڻڲݟspm֍ھݍXܶrܸ͆^{S>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>uPۻ}g]༲ھCgpܷݾ弧߼īެVTY~>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>u~>~lЄaS|~ؼ۽ߐz⽸ײ׫仲¾̒>>>>>W>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>l_>Ν~uuoU͂ܲ¯֑׾۾ڲST_>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>lX>bmly\|pczl[iVʗҾܲ~~ڲŲ݇}_B>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>leUVhBzWѕܼܯ۲پߩدP\]Hb>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>TUjVۓ|RĢؼṲݷݸ䬓~Fcr>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>W>w}EԯدġқĽ۹ٲڹܯԬzӍߜ>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>eyWjyۨ㫯ެIJټׯ߱~>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>͎UVfl䛕PؤוԲټݽ~[b>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`>>SVꐨ௒קׯ|{ݹڷڥױԕu[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>WW>>>>>>>>>>>>>>>>>buHzzיĝӗyں«ԢwH>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>Y>>>>>>>>>T>>>>>_r]VFݹځч֖׺ٹݜҪ>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>S>>>>>>>>>>>g~>>>>S]joHٰejגؒ۳ھ¬>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>U>>>>>>>>>yx>>>>hzȈ՜䠜FѪ㲸QܓԯHf>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>by>>>>ic>>>\խЭ啯ݪڲޫگr|W[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>yl>>>ɇF帷ܽr]fT>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>Y>>>>>>>>cu>>>>>f~U럹ٽ}wՐyWbyFE>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>_>>>>>>U>>>>>>>>>>>>>ҒxU>>>>>wW͋Z>bb}ڹۜ}H>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>e>>>>>S>>>>>>>>>>>>>>>>>>>>b>]{Wlf|ܲگٶHzh>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>V>>>S]>>>>>>>>>>>>>>>>>>>>>HT>ςپݷւlrlS>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>z>>>jgV>>>>>>T>>>>>>>>>>>>>zo>V>>}N已޶ܾ㑄pz͍>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>~V>>>>>`>>>>>>>>>>>>>>T|>S>>>>jEEㄷį䓣⧙žޯmhwlb>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>rz>>>>>S>>>>>>>>>>>ww>>>>>>Xڔܛ׫{{»FHS>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>?{z>>>F>>>>>>>>>>>z>>>>>>HӔݙ}zc}~D٣G㽎mYUoV>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>e>>>ll>V~{l>>>>Vc>>>>>>>>>>`>>>>>>}UwpHz]VF|I~}}Y>e>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>m>>oa~Ȓe>>>>]>>>>>>>>>>>VY>>>>>H|oɋF~TeTy|lЪ{W>|Y>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>@hyg>>>>>YV>>>>>>>>>>a>>>>>>>\|}y~]gE{er>>>U>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`>`Z\@|>>>>>yS>>>>>>>U>>>>>>>>zWTVc]clFS>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>ɐj{j>>>>>b׸>>>>>>>s>>>>>U_>>>ch>̔jV>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>Ylf>>>>SH۲>>>>>>>>>>>{U>>>>>H[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>yVysp>>>>>>򽲼>>>>>>>>>>>>W>>F>>>>>>>S>>>>]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>Ft^>>>>>>>>S>܃>>>>>>>>>>>>>>>WT>>>>>>r>>>z]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>g>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>]>F>o>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>Yy>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>_r^>>>>>>>>>>>>>>`V>>>>>>>>>>>>>>>^>>>>>>>>>>>>>>>>>>]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>F>>>>>>>>>>>>>Zj>>>>>>>>>>>>>>>>>T>>>>>>>>>>>{}>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>Hr[e>>>>>>>S>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>^V>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>o>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>T>>>>>>>>T>>>>>>>>>>>>>>>>>>>>>>>>>>T>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>WT>>>>>>>>>>>>>>Cu>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>s@>>>>>>>>>>>>>>>a>>>S>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>TS>>>>>>>>>>>>>>>>>>>>>>>>lb>>>>>>>>>>>>>>W>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>T`>>>>>>>>>>>>>>>>>>>>>>>>>>ힾp>>>>>>>>>>>>>>l>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>f>>>>>>>>>>_>>>>>>>>>>>>>>>>>>>>>>>>>>>>>̣>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>U>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>V>>>>>>>>>oW>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>_>>>>>>>>>>>U>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>j>>>>>>>>>>>b]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>]U>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>{@@>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>[>>>>>>>>>>>>>>]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>z>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>i>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>U>Y>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>Y>>>>>Y>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>V>>>>>>_Uk>>>f>`͘`>>>>>>>>>>>>>>>>>>>>>>>>>W>>>>>>>>>>]xT>>r񄀎]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>UyeEIg{ncgBe|>>>>>>>>>>>>>>>>>>>>>>>>>>>>U>>>>Uwwug~]჊e>>>>>>W}>>>>>>>>>>>>>>DV>>[wyUn|ߘuu?y>>>>>iV>>>>>>>>>>>>>>>>>>WWWE_ikfEYrܢ˘j|o|IU>>>>>>>>>>>>>>>>>>>>>>>>>^rlx~EkEd|~u>>>>>>>>>>>>>>>>>>>>>>V>WrrxkN[hܒݲܤ>>>>>>>>>>>>>>>>>>>>>>>nrb>>YBr}~J쫝ڶ۲ܘCB[>>Y>>>>>>>>>>>>>>>>>>bDrT>>]D|nWഷڵܣk[_>>>>>>>>>>>>>>>>>>WW>CCw|y۔۹⽾zee>>>>>>>>>>>>>>>>>[d>`xw߻ں᷹߽۽_?>>_>>>>>>>>>>>>>>>>>cCk>>>>Urrݷھڽi_UUnT>>>>>>>>>>>>>>>>>>ukwfx>ehzN޻xe~r>>>>>>>>>>>>>>>>frpUxUfPٲٷPP{>>>>W>>>>>>>>W[ގIbT_VVT{޲ܼ⣖k>>>>>>>>>>>>>WJr]{B|nyڹܼڲݧc_YCU>>>>>>>>>>>>>>>eĠi{YںܲڿhgC>>>>>>>>>b>>>>>>]kھVCݷ۾ڻܰD{_>>>>kh>>>>>UDܤwB_wwriܫĿڲjub>>>yF>>>>>>>_u~eLuw۲⫩ڳ۾}LK{U>>>>>>>>>>fgnܗUUWTWڴܫ¸ᰚ߶ޒyTgY>>>>>>>>>>>>>C{u͂eehpٲܿ޹¼ŤL__>>>>>>>>>>>>BUw>x>UݾPª߲۫ٷ[>>>>>>>>>>>>>>]>>>>>>>>ڽ¯PݴPٷڷ|hn>>>>>>>>>>>>>>>>>>>>>>>>>wٲکx✩޿ٲjwj>>>>>>>>>>>>>>>>>>>>>>>>geyܲnܸnYY>>>>>>>>>>>>>>>>>>>>|VxЉWV|ߝෲܲⴲPHk>>>>>>>>>>>>>>>>>>>>>lgBk߂_yܼ߸޺dYT>>>>>>>>>>>>>>>>>>>>>>>>UDhyھܰk>>>>>>>>>>>>>>>>>>>>>>>>>>>>uyew䯫ܫ߯i>>>>>>>>>>>>>>>>>>>>>>>>>>>>U>>`◕գỾ߰C>>>>>>>>>>>>>>>>>>>>>>>>>>>[>h_{P߷Pў>>>>>>>>>>>>>>>>>>>>>>>>>>>>ke>>UUeẵړe>>>>>>>>>>>>>>>>>>>>>>>>>>>>>yb>nrڻڤyTe>>>>>>>>>>>>>>>>T>>>>>>>n>>b`Wjڹګ{n>>>>>>>>>>>>>>>>>>>gUWT>>>>>>>>>?TY|۲ٿڻګwk>>>>>>>>>>>>>>>>>>>>f_>f>>>>>>B>`uީCdW>>>>>>>>>>>>>>>>>>>zhCW>V>>>>>B>>>`{unCJᒝowV>>>>>>>>>>>>>>>>>>>>>>_>_WfN>>>>>>>>ByH`kB[LKf>>>>>>>>>>>>>>>>>>>>>>>oHY>>C>>>>>>fdwC?c>>>>>>>>>>>>>>>>>>>>>>>>>>`|>>>>>>B>iH>>>>>>>>>>>>>>>>>>>>>>>>>>>>>n>>k>>>>>>>>]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>f>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`]>>>>>>>>>>>>>>>>>p>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>[>>>>>>>UU>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>U>>>>>>>>>>>>>rk>>>>>>>T>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>B>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>W>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>@@@>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>n>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>pB>>>>>>>>>>>>>>`h`e`Br>>>>>>>>>>>UiUnBLe>>B>>>>>>>|CC]ۼe>>>>>>>>>V>iL{]LU>>>>>>>>>TcyNٴBH_>>>>>>>TUu۹ܽݤyc?>>>>>>>>Yn{cUBٳߎyC>>>>>cPf[g[ۺڼٲF>>>>>>>߫NBټ٫}V>`X>>U|nyڲܲཝyT>>>BB^n޹ݿ۫kW>>>>>>YTڲܰ᫺ٴ>>>>>>>>>>>>ܲ~۲ގHU>>>>>>>>>]ByNuhپٹL[>>>>>>>>>^Pi>>>>>>>>>>>>>|PU>>>>>>>>>>>Uܴݝy>>>>>>>>>eڷY>>>>>>[UU>>>VȃnU>>>>>>>>>>[{T`>nkYB[]>>>>>>>>>>>Te>L>?>U>>>>>>>>>>>>>>>>[>>>>>?>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>f>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> @>>>>>>>>>>>>>>>>>>>>>>>>>>>Yf>>>>>TCΘB>>>UExټyT>>>VecٹB>e[۲eLCLH>>ߺh>>>>>[F}PڼH>>>>Y޷k>>>Șy>>>>V?UV>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>@>>>>>?hiUyۼF>f}ڹ`༊>F>>>>>>> ^`^^X^-VM sM M M M iQ YL#Q y y $Q 4dO mu -pu-  x - x-  Pj LN t - t-  :B  k-M B - k XX-ErJrCE+J+fC -X-  J  JJ=  Ls - s-  E  JE=   $Q lA jConfirm Access to mutators windowWARNING: Generally the use of this option is considered cheating.\n\nAlso, the use of mutators in SinglePlayer/Co-op has not been extensively tested and unexpected play and game crashes may result.\n\nDo you want to continue?$$$   fK u8! tCxutsrO] ShinigamiM]Shimigami Pack 1SbM M [J|% ZLJa/!mJa/!DJa(((J-' J M tUA.ca:T:$U ^A  /S   ]BBa  M K M M [Sc y ::$ -(Ra  "@W-RRR$-S r* E&E,wE *yE #ia ] իE #?wi*iE  iE i!i$E - -Sa  SL>S$ M wx O_/O -C  x d}. x ~ b M qMNjfMa/!S.M-.M?%.M?'( M zOjI0.- P-b1P-a/!}a/!KOwO*pspawnnotify is VOrO H.HO-g 'OaOO aP-a/!NOa H.Om M T// ============================================================ // oldskool.peril: for Peril Ut.... // ============================================================ class peril expands mappack; #exec TEXTURE IMPORT NAME=perilShot FILE=Textures\perilShot.pcx MIPS=OFF M |}N.n3x.- L-bL-}w}*pspawnnotify is V}r} S .S }-M '}a}} Yw*avL-}a Hvw*.}m }L Ɉ tCh zy{wvO] Team 86M]2113: Peril on MarsS`M M q// ============================================================ // oldskool.invasion: for EzKeel's 3l337 pack, "Invasion" // ============================================================ class invasion expands mappack; #exec TEXTURE IMPORT NAME=invadeShot FILE=Textures\invadeShot.pcx MIPS=OFF @O AP tC@A}|~O]Simon West-Bulford (EZkeel)M]$#Invasion (Xerania's Fall - part 2)S^M M C// ============================================================ // oldskool.Hollow: for Hollow // ============================================================ class Hollow expands mappack; #exec TEXTURE IMPORT NAME=holShot FILE=Textures\holshot.pcx M DM M EM M KM BoFY tCoEDCBO] Paul RobertsM]HollowS\M M R// ============================================================ // oldskool.Illhaven: for Illhaven // ============================================================ class Illhaven expands mappack; #exec TEXTURE IMPORT NAME=illShot FILE=Textures\illShot.pcx MIPS=OFF M /M GT I [ tCOMLKJIFHO]KewM]The Illhaven SagaSZM M Q// ============================================================ // oldskool.oneday: for "One Day" // ============================================================ class oneday expands mappack; #exec TEXTURE IMPORT NAME=DayShot FILE=Textures\DayShot.pcx MIPS=OFF M LM M MM M {M JP N`# tCUf QPRNO]Chris BurgessM] One DaySXM M PM M QM M M M zZ1!p.q qtrp*Error: coopcw without coopbase window. Stop hacking these scripts you idiot!!!z.p], ZD @ND?,?Z,w D?,?NID?,,N D?I,H. ?N?]?Z?Ho'H H  H%Hl(w%7w,,-wz!M HBWwzWwzwH\%|zcustomH+przprW%z],1. ?N?]?Z?1 1  1%1B'1A,1$1x'/. ?w ?]?Z?/ /  /%/B'/A,/$/x'],gw1*1S $w/*/S $ {. ?N?]?I,?{$Allow spectating of monsters{%{- $-C ],K. ?N ?]?I?K> A&I D $| ?, K ?I K-ppp   [SI , %]:K  K%],^. ?N ?]?I?^>HBHC,^  ^  ^%^ $ B], M N// ============================================================ // oldskool.ash: for ballad of ash // ============================================================ class ash expands mappack; #exec TEXTURE IMPORT NAME=AshShot FILE=Textures\ashShot.pcx MIPS=OFF SgTj0' tCgJ g TSO]LestatM]The Ballad Of Ashl] Intro.Unr_ ]ashSVM M M M i// ============================================================ // oldskool.origUnreal: The unreal map pack...... // ============================================================ class origUnreal expands mappack; #exec TEXTURE IMPORT NAME=UnrealShot FILE=Textures\unrealshot.pcx MIPS=OFF VQ W3 tC] Zi ~}|{zyxw v O C u tsrqnplkmihjfegcbd` _!a"]#\$^%Z&Y'[(W)V*XO]#"Epic MegaGames & Digital ExtremesM]Original Unreal Episodel= Unreal.UnrSTM M I // ============================================================ // oldskool.troopercarcass2: needed so when Skaarj dies his skin won't revert back....... // Psychic_313: DEPRECATED. DON'T USE ME. // ============================================================ class troopercarcass2 expands HumanCarcass; function ForceMeshToExist() { //never called Spawn(class 'SkaarjTrooper'); } function CreateReplacement() { local CreatureChunks carc; if (bHidden) return; carc = Spawn(class'TrooperMasterChunk'); if (carc != None) { carc.bMasterChunk = true; carc.Initfor(self); carc.Bugs = Bugs; if ( Bugs != None ) Bugs.SetBase(carc); Bugs = None; } else if ( Bugs != None ) Bugs.Destroy(); } M G=// ============================================================ // oldskool.unrealMbot: the male d00dz // Psychic_313: DEPRECATED. DON'T USE ME. // ============================================================ class unrealMbot expands U1humanbot abstract; function PlayDying(name DamageType, vector HitLoc) { local vector X,Y,Z, HitVec, HitVec2D; local float dotp; local carcass carc; BaseEyeHeight = Default.BaseEyeHeight; PlayDyingSound(); if ( FRand() < 0.15 ) { PlayAnim('Dead2',0.7,0.1); return; } // check for big hit if ( (Velocity.Z > 250) ) { if ( FRand() < 0.7 ){ PlayAnim('Dead5',0.7,0.1);} else{ PlayAnim('Dead1',0.7,0.1);} if ( Level.NetMode != NM_Client ) { carc = Spawn(class 'MaleHead',,, Location + CollisionHeight * vect(0,0,0.8), Rotation + rot(3000,0,16384) ); if (carc != None) { carc.Initfor(self); carc.Velocity = Velocity + VSize(Velocity) * VRand(); carc.Velocity.Z = FMax(carc.Velocity.Z, Velocity.Z); } carc = Spawn(class 'CreatureChunks'); if (carc != None) { carc.Mesh = mesh 'CowBody1'; carc.Initfor(self); carc.Velocity = Velocity + VSize(Velocity) * VRand(); carc.Velocity.Z = FMax(carc.Velocity.Z, Velocity.Z); } carc = Spawn(class 'Arm1',,, Location + CollisionHeight * vect(0,0,0.8), Rotation + rot(3000,0,16384) ); if (carc != None) { carc.Initfor(self); carc.Velocity = Velocity + VSize(Velocity) * VRand(); carc.Velocity.Z = FMax(carc.Velocity.Z, Velocity.Z); } } return; } // check for head hit if ( ((DamageType == 'Decapitated') || (HitLoc.Z - Location.Z > 0.6 * CollisionHeight)) && !Level.Game.bVeryLowGore ) { DamageType = 'Decapitated'; PlayAnim('Dead4', 0.7, 0.1); if ( Level.NetMode != NM_Client ) { carc = Spawn(class 'MaleHead',,, Location + CollisionHeight * vect(0,0,0.8), Rotation + rot(3000,0,16384) ); if (carc != None) { carc.Initfor(self); carc.Velocity = Velocity + VSize(Velocity) * VRand(); carc.Velocity.Z = FMax(carc.Velocity.Z, Velocity.Z); } } return; } GetAxes(Rotation,X,Y,Z); X.Z = 0; HitVec = Normal(HitLoc - Location); HitVec2D= HitVec; HitVec2D.Z = 0; dotp = HitVec2D dot X; if (Abs(dotp) > 0.71) //then hit in front or back PlayAnim('Dead3', 0.7, 0.1); else { dotp = HitVec dot Y; if (dotp > 0.0) PlayAnim('Dead6', 0.7, 0.1); else PlayAnim('Dead7', 0.7, 0.1); } } function PlayGutHit(float tweentime) { if ( (AnimSequence == 'GutHit') || (AnimSequence == 'Dead2') ) { if (FRand() < 0.5) TweenAnim('LeftHit', tweentime); else TweenAnim('RightHit', tweentime); } else if ( FRand() < 0.6 ) TweenAnim('GutHit', tweentime); else TweenAnim('Dead2', tweentime); } function PlayHeadHit(float tweentime) { if ( (AnimSequence == 'HeadHit') || (AnimSequence == 'Dead3') ) TweenAnim('GutHit', tweentime); else if ( FRand() < 0.6 ) TweenAnim('HeadHit', tweentime); else TweenAnim('Dead3', tweentime); } function PlayLeftHit(float tweentime) { if ( (AnimSequence == 'LeftHit') || (AnimSequence == 'Dead6') ) TweenAnim('GutHit', tweentime); else if ( FRand() < 0.6 ) TweenAnim('LeftHit', tweentime); else TweenAnim('Dead6', tweentime); } function PlayRightHit(float tweentime) { if ( (AnimSequence == 'RightHit') || (AnimSequence == 'Dead1') ) TweenAnim('GutHit', tweentime); else if ( FRand() < 0.6 ) TweenAnim('RightHit', tweentime); else TweenAnim('Dead1', tweentime); } M D// ============================================================ // oldskool.unrealFbot: gal botz // Psychic_313: DEPRECATED. DON'T USE ME. // ============================================================ class unrealFbot expands U1humanbot abstract; M RX@x0XRQSD @U D?,?S,v D?,?U GD?,,MD?G,H?G?H?MHC{?G?{?MK?G?KBK?Mw1*1?S?1?U 1Aw/*/?S?/?v /A^?G?^B^?MKG,d M XF&w*CD?,  ?,?&?,< ?oC,C,. !^C?a/!QWCa/!|Xa/!M \a/!^]:a/!G ^Xa/!q eva/!b_a/!F `a/!eea/!eTa/!\Ua/!vzC@a/!izC^a/!|Xa/!QzCa/!XXa/!K a/!F d9a/!g a/!` a/!x a/!N aWa/!Zcua/!@V a/!s Ya/!\.-C?,fC^ & M  M M h{TJ;!+?a&!{8a&! {Ha&!{ M \// ============================================================ // oldskool.U1humanbot: ripped from unreal I bot // Psychic_313: DEPRECATED. DON'T USE ME. // ============================================================ class U1humanbot expands skinbotset abstract; // Animation functions function playflip(){ //use like unreal botz playinair();} function PlayTurning() { BaseEyeHeight = Default.BaseEyeHeight; if ( (Weapon == None) || (Weapon.Mass < 20) ) PlayAnim('TurnSM', 0.3, 0.3); else PlayAnim('TurnLG', 0.3, 0.3); } function TweenToWalking(float tweentime) { if ( Physics == PHYS_Swimming ) { if ( (vector(Rotation) Dot Acceleration) > 0 ) TweenToSwimming(tweentime); else TweenToWaiting(tweentime); } BaseEyeHeight = Default.BaseEyeHeight; if (Weapon == None) TweenAnim('Walk', tweentime); else if ( Weapon.bPointing ) { if (Weapon.Mass < 20) TweenAnim('WalkSMFR', tweentime); else TweenAnim('WalkLGFR', tweentime); } else { if (Weapon.Mass < 20) TweenAnim('WalkSM', tweentime); else TweenAnim('WalkLG', tweentime); } } function TweenToRunning(float tweentime) { if ( Physics == PHYS_Swimming ) { if ( (vector(Rotation) Dot Acceleration) > 0 ) TweenToSwimming(tweentime); else TweenToWaiting(tweentime); return; } BaseEyeHeight = Default.BaseEyeHeight; if (Weapon == None) TweenAnim('RunSM', tweentime); else if ( Weapon.bPointing ) { if (Weapon.Mass < 20) TweenAnim('RunSMFR', tweentime); else TweenAnim('RunLGFR', tweentime); } else { if (Weapon.Mass < 20) TweenAnim('RunSM', tweentime); else TweenAnim('RunLG', tweentime); } } function PlayWalking() { if ( Physics == PHYS_Swimming ) { if ( (vector(Rotation) Dot Acceleration) > 0 ) PlaySwimming(); else PlayWaiting(); return; } BaseEyeHeight = Default.BaseEyeHeight; if (Weapon == None) LoopAnim('Walk'); else if ( Weapon.bPointing ) { if (Weapon.Mass < 20) LoopAnim('WalkSMFR'); else LoopAnim('WalkLGFR'); } else { if (Weapon.Mass < 20) LoopAnim('WalkSM'); else LoopAnim('WalkLG'); } } function PlayRunning() { if ( Physics == PHYS_Swimming ) { if ( (vector(Rotation) Dot Acceleration) > 0 ) PlaySwimming(); else PlayWaiting(); return; } BaseEyeHeight = Default.BaseEyeHeight; if (Weapon == None) LoopAnim('RunSM'); else if ( Weapon.bPointing ) { if (Weapon.Mass < 20) LoopAnim('RunSMFR'); else LoopAnim('RunLGFR'); } else { if (Weapon.Mass < 20) LoopAnim('RunSM'); else LoopAnim('RunLG'); } } function PlayRising() { BaseEyeHeight = 0.4 * Default.BaseEyeHeight; TweenAnim('DuckWlkS', 0.7); } function PlayFeignDeath() { local float decision; BaseEyeHeight = 0; if ( decision < 0.33 ) TweenAnim('DeathEnd', 0.5); else if ( decision < 0.67 ) TweenAnim('DeathEnd2', 0.5); else TweenAnim('DeathEnd3', 0.5); } function PlayDying(name DamageType, vector HitLoc) { local vector X,Y,Z, HitVec, HitVec2D; local float dotp; local carcass carc; BaseEyeHeight = Default.BaseEyeHeight; PlayDyingSound(); if ( FRand() < 0.15 ) { PlayAnim('Dead3',0.7,0.1); return; } // check for big hit if ( (Velocity.Z > 250) && (FRand() < 0.7) ) { PlayAnim('Dead2', 0.7, 0.1); return; } // check for head hit if ( ((DamageType == 'Decapitated') || (HitLoc.Z - Location.Z > 0.6 * CollisionHeight)) && !Level.Game.bVeryLowGore ) { DamageType = 'Decapitated'; if ( Level.NetMode != NM_Client ) { carc = Spawn(class 'FemaleHead',,, Location + CollisionHeight * vect(0,0,0.8), Rotation + rot(3000,0,16384) ); if (carc != None) { carc.Initfor(self); carc.Velocity = Velocity + VSize(Velocity) * VRand(); carc.Velocity.Z = FMax(carc.Velocity.Z, Velocity.Z); } } PlayAnim('Dead6', 0.7, 0.1); return; } if ( FRand() < 0.15) { PlayAnim('Dead1', 0.7, 0.1); return; } GetAxes(Rotation,X,Y,Z); X.Z = 0; HitVec = Normal(HitLoc - Location); HitVec2D= HitVec; HitVec2D.Z = 0; dotp = HitVec2D dot X; if (Abs(dotp) > 0.71) //then hit in front or back PlayAnim('Dead4', 0.7, 0.1); else { dotp = HitVec dot Y; if ( (dotp > 0.0) && !Level.Game.bVeryLowGore ) { PlayAnim('Dead7', 0.7, 0.1); carc = Spawn(class 'Arm1'); if (carc != None) { carc.Initfor(self); carc.Velocity = Velocity + VSize(Velocity) * VRand(); carc.Velocity.Z = FMax(carc.Velocity.Z, Velocity.Z); } } else PlayAnim('Dead5', 0.7, 0.1); } } function PlayGutHit(float tweentime) { if ( (AnimSequence == 'GutHit') || (AnimSequence == 'Dead2') ) { if (FRand() < 0.5) TweenAnim('LeftHit', tweentime); else TweenAnim('RightHit', tweentime); } else if ( FRand() < 0.6 ) TweenAnim('GutHit', tweentime); else TweenAnim('Dead2', tweentime); } function PlayHeadHit(float tweentime) { if ( (AnimSequence == 'HeadHit') || (AnimSequence == 'Dead4') ) TweenAnim('GutHit', tweentime); else if ( FRand() < 0.6 ) TweenAnim('HeadHit', tweentime); else TweenAnim('Dead4', tweentime); } function PlayLeftHit(float tweentime) { if ( (AnimSequence == 'LeftHit') || (AnimSequence == 'Dead3') ) TweenAnim('GutHit', tweentime); else if ( FRand() < 0.6 ) TweenAnim('LeftHit', tweentime); else TweenAnim('Dead3', tweentime); } function PlayRightHit(float tweentime) { if ( (AnimSequence == 'RightHit') || (AnimSequence == 'Dead5') ) TweenAnim('GutHit', tweentime); else if ( FRand() < 0.6 ) TweenAnim('RightHit', tweentime); else TweenAnim('Dead5', tweentime); } function PlayLanded(float impactVel) { impactVel = impactVel/JumpZ; impactVel = 0.1 * impactVel * impactVel; BaseEyeHeight = Default.BaseEyeHeight; if ( impactVel > 0.17 ) PlaySound(LandGrunt, SLOT_Talk, FMin(4, 5 * impactVel),false,1600,FRand()*0.4+0.8); if ( !FootRegion.Zone.bWaterZone && (impactVel > 0.01) ) PlaySound(Land, SLOT_Interact, FClamp(4 * impactVel,0.2,4.5), false,1600, 1.0); if ( (impactVel > 0.06) || (GetAnimGroup(AnimSequence) == 'Jumping') ) { if ( (Weapon == None) || (Weapon.Mass < 20) ) TweenAnim('LandSMFR', 0.12); else TweenAnim('LandLGFR', 0.12); } else if ( !IsAnimating() ) { if ( GetAnimGroup(AnimSequence) == 'TakeHit' ) AnimEnd(); else { if ( (Weapon == None) || (Weapon.Mass < 20) ) TweenAnim('LandSMFR', 0.12); else TweenAnim('LandLGFR', 0.12); } } } function PlayInAir() { BaseEyeHeight = 0.7 * Default.BaseEyeHeight; if ( (Weapon == None) || (Weapon.Mass < 20) ) TweenAnim('JumpSMFR', 0.8); else TweenAnim('JumpLGFR', 0.8); } //yeah..dumb idea... but had to put something :) function PlayChatting() { if ( mesh != None ) LoopAnim('Look', 0.7, 0.25); } function PlayDuck() { BaseEyeHeight = 0; if ( (Weapon == None) || (Weapon.Mass < 20) ) TweenAnim('DuckWlkS', 0.25); else TweenAnim('DuckWlkL', 0.25); } function PlayCrawling() { //log("Play duck"); BaseEyeHeight = 0; if ( (Weapon == None) || (Weapon.Mass < 20) ) LoopAnim('DuckWlkS'); else LoopAnim('DuckWlkL'); } function TweenToWaiting(float tweentime) { if ( Physics == PHYS_Swimming ) { BaseEyeHeight = 0.7 * Default.BaseEyeHeight; if ( (Weapon == None) || (Weapon.Mass < 20) ) TweenAnim('TreadSM', tweentime); else TweenAnim('TreadLG', tweentime); } else { BaseEyeHeight = Default.BaseEyeHeight; if ( Enemy != None ) ViewRotation = Rotator(Enemy.Location - Location); else ViewRotation.Pitch = 0; ViewRotation.Pitch = ViewRotation.Pitch & 65535; If ( (ViewRotation.Pitch > RotationRate.Pitch) && (ViewRotation.Pitch < 65536 - RotationRate.Pitch) ) { If (ViewRotation.Pitch < 32768) { if ( (Weapon == None) || (Weapon.Mass < 20) ) TweenAnim('AimUpSm', 0.3); else TweenAnim('AimUpLg', 0.3); } else { if ( (Weapon == None) || (Weapon.Mass < 20) ) TweenAnim('AimDnSm', 0.3); else TweenAnim('AimDnLg', 0.3); } } else if ( (Weapon == None) || (Weapon.Mass < 20) ) TweenAnim('StillSMFR', tweentime); else TweenAnim('StillFRRP', tweentime); } } function TweenToFighter(float tweentime) { TweenToWaiting(tweentime); } function PlayChallenge() { local float decision; decision = FRand(); if ( decision < 0.6 ) TweenToWaiting(0.1); else PlayAnim('Taunt1'); } function PlayWaiting() { local name newAnim; if ( Physics == PHYS_Swimming ) { BaseEyeHeight = 0.7 * Default.BaseEyeHeight; if ( (Weapon == None) || (Weapon.Mass < 20) ) LoopAnim('TreadSM'); else LoopAnim('TreadLG'); } else { BaseEyeHeight = Default.BaseEyeHeight; if ( (Weapon != None) && Weapon.bPointing ) { if ( Weapon.Mass < 20 ) TweenAnim('StillSMFR', 0.3); else TweenAnim('StillFRRP', 0.3); } else { if ( FRand() < 0.1 ) { if ( (Weapon == None) || (Weapon.Mass < 20) ) PlayAnim('CockGun', 0.5 + 0.5 * FRand(), 0.3); else PlayAnim('CockGunL', 0.5 + 0.5 * FRand(), 0.3); } else { if ( (Weapon == None) || (Weapon.Mass < 20) ) { if ( Health > 50 ) newAnim = 'Breath1'; else newAnim = 'Breath2'; } else { if ( Health > 50 ) newAnim = 'Breath1L'; else newAnim = 'Breath2L'; } if ( AnimSequence == newAnim ) LoopAnim(newAnim, 0.3 + 0.7 * FRand()); else PlayAnim(newAnim, 0.3 + 0.7 * FRand(), 0.25); } } } } function PlayFiring() { // switch animation sequence mid-stream if needed if (AnimSequence == 'RunLG') AnimSequence = 'RunLGFR'; else if (AnimSequence == 'RunSM') AnimSequence = 'RunSMFR'; else if (AnimSequence == 'WalkLG') AnimSequence = 'WalkLGFR'; else if (AnimSequence == 'WalkSM') AnimSequence = 'WalkSMFR'; else if ( AnimSequence == 'JumpSMFR' ) TweenAnim('JumpSMFR', 0.03); else if ( AnimSequence == 'JumpLGFR' ) TweenAnim('JumpLGFR', 0.03); else if ( (GetAnimGroup(AnimSequence) == 'Waiting') || (GetAnimGroup(AnimSequence) == 'Gesture') && (AnimSequence != 'TreadLG') && (AnimSequence != 'TreadSM') ) { if ( Weapon.Mass < 20 ) TweenAnim('StillSMFR', 0.02); else TweenAnim('StillFRRP', 0.02); } } function PlayWeaponSwitch(Weapon NewWeapon) { if ( (Weapon == None) || (Weapon.Mass < 20) ) { if ( (NewWeapon != None) && (NewWeapon.Mass > 20) ) { if ( (AnimSequence == 'RunSM') || (AnimSequence == 'RunSMFR') ) AnimSequence = 'RunLG'; else if ( (AnimSequence == 'WalkSM') || (AnimSequence == 'WalkSMFR') ) AnimSequence = 'WalkLG'; else if ( AnimSequence == 'JumpSMFR' ) AnimSequence = 'JumpLGFR'; else if ( AnimSequence == 'DuckWlkL' ) AnimSequence = 'DuckWlkS'; else if ( AnimSequence == 'StillSMFR' ) AnimSequence = 'StillFRRP'; else if ( AnimSequence == 'AimDnSm' ) AnimSequence = 'AimDnLg'; else if ( AnimSequence == 'AimUpSm' ) AnimSequence = 'AimUpLg'; } } else if ( (NewWeapon == None) || (NewWeapon.Mass < 20) ) { if ( (AnimSequence == 'RunLG') || (AnimSequence == 'RunLGFR') ) AnimSequence = 'RunSM'; else if ( (AnimSequence == 'WalkLG') || (AnimSequence == 'WalkLGFR') ) AnimSequence = 'WalkSM'; else if ( AnimSequence == 'JumpLGFR' ) AnimSequence = 'JumpSMFR'; else if ( AnimSequence == 'DuckWlkS' ) AnimSequence = 'DuckWlkL'; else if (AnimSequence == 'StillFRRP') AnimSequence = 'StillSMFR'; else if ( AnimSequence == 'AimDnLg' ) AnimSequence = 'AimDnSm'; else if ( AnimSequence == 'AimUpLg' ) AnimSequence = 'AimUpSm'; } } function PlaySwimming() { BaseEyeHeight = 0.7 * Default.BaseEyeHeight; if ((Weapon == None) || (Weapon.Mass < 20) ) LoopAnim('SwimSM'); else LoopAnim('SwimLG'); } function TweenToSwimming(float tweentime) { BaseEyeHeight = 0.7 * Default.BaseEyeHeight; if ((Weapon == None) || (Weapon.Mass < 20) ) TweenAnim('SwimSM',tweentime); else TweenAnim('SwimLG',tweentime); } State ImpactJumping { function PlayWaiting() { TweenAnim('AimDnLg', 0.3); } } function PlayWaving() { PlayAnim('Wave', 0.7, 0.2); } M jG// ============================================================ // oldskool.skinbotset: the bot skin setter (same as player version) // Psychic_313: DEPRECATED. DON'T USE ME. // ============================================================ class skinbotset expands Bot abstract; var() string DefaultTalkTexture; //no talktexture will use this one.... var() string TeamSkin; //what is the main skin to use for TC's? var bool bpartialteam; //only two colours (i.e. skaarj trooper)... var string tbackup; //setmultiskin is called twice. by having this variable being defined outside the function, the talktexture is preserved..... var () string altpackage; //for use with only Unreal Skins..... static function SetMultiSkin(Actor SkinActor, string SkinName, string FaceName, byte TeamNum) { local string SkinItem, SkinPackage, SkinTeam, Tfix, combine; //various local strings..... local Texture NewSkin, Talktestskin; local int i; local string TeamColor[4]; //from unreali player. used for non-full versions.... TeamColor[0]="Red"; TeamColor[1]="Blue"; TeamColor[2]="Green"; TeamColor[3]="Yellow"; SkinItem = SkinActor.GetItemName(SkinName); SkinPackage = Left(SkinName, Len(SkinName) - Len(SkinItem)); //back-up talktexture, so it doesn't revert to team one If (Left(Right(default.teamskin, 5),4) != Left(skinitem, 4)) default.tbackup=skinitem; if( TeamNum != 255 ) { tfix = Left(skinitem$"111", 4); combine=skinpackage$tfix$"1T_"$String(TeamNum); //check if team skin exists..if it does set it!!!!!! if (Right(skinpackage, 6) ~= "skins.") //user is using partail mode........ NewSkin = texture(DynamicLoadObject(skinpackage$"T_"$TeamColor[TeamNum], class'Texture')); else NewSkin = Texture(DynamicLoadObject(skinpackage$tfix$"1T_"$String(TeamNum), class'Texture')); if ( NewSkin != None ) SkinActor.Multiskins[0] = Newskin; else { log("Team color not under "$SkinName); //check if only two team colors (Skaarj)... skinners willing to help? If (!default.bpartialteam) skinteam = default.Teamskin$"t_"$String(TeamNum); else { if (TeamNum <2) skinteam = default.Teamskin$"t_"$String(TeamNum); else skinteam = skinname; } SetSkinElement(SkinActor, 0, Skinteam, default.Altpackage$"T_"$TeamColor[TeamNum]); for( i=0; i<64; i++ ) { if( class'Oldskool.skinconfiguration'.default.skins[i] == combine ) { SetSkinElement(SkinActor, 0, skinpackage$default.tbackup, skinpackage$default.tbackup); break; } } } } //not team...... else SetSkinElement(SkinActor, 0, SkinName, ""); // Set the talktexture if(Pawn(SkinActor) != None) { if (Right(skinpackage, 6) ~= "skins."){ //user is using partial mode........ if (Left(skinpackage, 6) ~= "female") Pawn(SkinActor).PlayerReplicationInfo.TalkTexture = Texture(DynamicLoadObject("fcommandoskins.cMDo5Ivana", class'Texture')); //Ivana's face for females...... else //cliffyB mode... Pawn(SkinActor).PlayerReplicationInfo.TalkTexture = Texture(DynamicLoadObject("UTtech2.Deco.xmetex2x1", class'Texture')); //a face: cliffy B :D (males or sktrooper.....) } else { talktestskin = Texture(DynamicLoadObject(skinpackage$Left(default.tbackup$"111", 4)$"5", class'Texture')); if(talktestskin != none) Pawn(SkinActor).PlayerReplicationInfo.TalkTexture = talktestskin; else{ log("no talktexture for "$skinname); Pawn(SkinActor).PlayerReplicationInfo.TalkTexture = Texture(DynamicLoadObject(default.defaulttalktexture, class'Texture')); If (Pawn(SkinActor).PlayerReplicationInfo.TalkTexture ==None){ //apparently we're using some custom skin, yet in the lite version.... if (Left(skinpackage, 6) ~= "female") Pawn(SkinActor).PlayerReplicationInfo.TalkTexture = Texture(DynamicLoadObject("fcommandoskins.cMDo5Ivana", class'Texture')); //Ivana's face for females...... else //cliffyB mode... Pawn(SkinActor).PlayerReplicationInfo.TalkTexture = Texture(DynamicLoadObject("UTtech2.Deco.xmetex2x1", class'Texture')); //a face: cliffy B :D (males or sktrooper.....) }} } } } //hehehahaha..this keeps dumb team game from changing stuff.... static function GetMultiSkin( Actor SkinActor, out string SkinName, out string FaceName ) { SkinName = String(SkinActor.Multiskins[0]); FaceName = ""; } M M M aH// ============================================================ // oldskool.skinsetclass: this baby gets the skin format.... // Psychic_313: DEPRECATED. DON'T USE ME. // ============================================================ class skinsetclass expands TournamentPlayer abstract; var() string DefaultTalkTexture; //no talktexture will use this one.... var() string TeamSkin; //what is the main skin to use for TC's? var bool bpartialteam; //only two colours (i.e. skaarj trooper)... var string tbackup; //setmultiskin is called twice. by having this variable being defined outside the function, the talktexture is preserved..... var () string altpackage; //for use with only Unreal Skins..... static function SetMultiSkin(Actor SkinActor, string SkinName, string FaceName, byte TeamNum) { local string SkinItem, SkinPackage, SkinTeam, Tfix, combine; //various local strings..... local Texture NewSkin, Talktestskin; local int i; local string TeamColor[4]; //from unreali player. used for non-full versions.... TeamColor[0]="Red"; TeamColor[1]="Blue"; TeamColor[2]="Green"; TeamColor[3]="Yellow"; SkinItem = SkinActor.GetItemName(SkinName); SkinPackage = Left(SkinName, Len(SkinName) - Len(SkinItem)); //back-up talktexture, so it doesn't revert to team one If (Left(Right(default.teamskin, 5),4) != Left(skinitem, 4)) //could use mid but \me don't get it 100%.... default.tbackup=skinitem; if( TeamNum != 255 ) { tfix = Left(skinitem$"111", 4); combine=skinpackage$tfix$"1T_"$String(TeamNum); //check if team skin exists..if it does set it!!!!!! if (Right(skinpackage, 6) ~= "skins.") //user is using partail mode........ NewSkin = texture(DynamicLoadObject(skinpackage$"T_"$TeamColor[TeamNum], class'Texture')); else NewSkin = Texture(DynamicLoadObject(skinpackage$tfix$"1T_"$String(TeamNum), class'Texture')); if ( NewSkin != None ) SkinActor.Multiskins[0] = Newskin; else { log("Team color not under "$SkinName); //check if only two team colors (Skaarj)... skinners willing to help? If (!default.bpartialteam) skinteam = default.Teamskin$"t_"$String(TeamNum); else { if (TeamNum <2) skinteam = default.Teamskin$"t_"$String(TeamNum); else skinteam = skinname; } SetSkinElement(SkinActor, 0, Skinteam, default.Altpackage$"T_"$TeamColor[TeamNum]); for( i=0; i<64; i++ ) { if( class'Oldskool.skinconfiguration'.default.skins[i] == combine ) { SetSkinElement(SkinActor, 0, skinpackage$default.tbackup, skinpackage$default.tbackup); break; } } } } //not team...... else SetSkinElement(SkinActor, 0, SkinName, ""); // Set the talktexture if(Pawn(SkinActor) != None) { if (Right(skinpackage, 6) ~= "skins."){ //user is using partial mode........ if (Left(skinpackage, 6) ~= "female") Pawn(SkinActor).PlayerReplicationInfo.TalkTexture = Texture(DynamicLoadObject("fcommandoskins.cMDo5Ivana", class'Texture')); //Ivana's face for females...... else //cliffyB mode... Pawn(SkinActor).PlayerReplicationInfo.TalkTexture = Texture(DynamicLoadObject("UTtech2.Deco.xmetex2x1", class'Texture')); //a face: cliffy B :D (males or sktrooper.....) } else { talktestskin = Texture(DynamicLoadObject(skinpackage$Left(default.tbackup$"111", 4)$"5", class'Texture')); if(talktestskin != none) Pawn(SkinActor).PlayerReplicationInfo.TalkTexture = talktestskin; else{ log("no talktexture for "$skinname); Pawn(SkinActor).PlayerReplicationInfo.TalkTexture = Texture(DynamicLoadObject(default.defaulttalktexture, class'Texture')); If (Pawn(SkinActor).PlayerReplicationInfo.TalkTexture ==None){ //apparently we're using some custom skin, yet in the lite version.... if (Left(skinpackage, 6) ~= "female") Pawn(SkinActor).PlayerReplicationInfo.TalkTexture = Texture(DynamicLoadObject("fcommandoskins.cMDo5Ivana", class'Texture')); //Ivana's face for females...... else //cliffyB mode... Pawn(SkinActor).PlayerReplicationInfo.TalkTexture = Texture(DynamicLoadObject("UTtech2.Deco.xmetex2x1", class'Texture')); //a face: cliffy B :D (males or sktrooper.....) }} } } } //hehehahaha..this keeps dumb team game from changing stuff.... static function GetMultiSkin( Actor SkinActor, out string SkinName, out string FaceName ) { SkinName = String(SkinActor.Multiskins[0]); FaceName = ""; } M R// ============================================================ // oldskool.UnrealFemale: another short script :) // // Psychic_313: DEPRECATED. DON'T USE ME. // ============================================================ class UnrealFemale expands UnrealHuman; M eM M KM M @ (((000333888@@@HHHPPPXXX```fffpppxxxfff33333fP@830( hP(  f3 f3P@(@00 pH@8(80 0(h8fff333ffff33ffff333f33ff3f333ff333f33ff333f3f3ff3ff̙f3f33̙ff̙3`hh8@@f3ff3f333ff3f33ff3ff3ff3f3f3f33f3 (@@P HH`@@X88Pff((P33f00h((X H( P88((h@0H33ff8X @` ((33 Hp (P X08p@HPX`hp(( (038@HPX`fhp33ff0(0(0(0(( p x`hp@88((P X@80h( X H380P3f30(@f33ff80@( 0f3f3ff30 83f8080(0XHXff3f333fff3ff33M [u Ys $u $1_ 5/^ FKQ p{ $-C {- ^U HprWH}z u s  M vd z13Rw*d 2.$ld . $$$ -{Volextras.tvcoopd   M M M g_Js*J1=,1 16RJ1=&1 1 $J1= M j^cs*J/=,/ 16RJ/=%/ 0 $ J/= M kL U fL D^=^)ppp   [SL %]: $ ?L B M w// ============================================================ // oldskool.UnrealHuman: This guy is basically tournament player, but nessecary to stop the strafe animations from being called :) // Psychic_313: DEPRECATED. DON'T USE ME. // ============================================================ class UnrealHuman expands skinsetclass abstract; function PlayVictoryDance() { local float decision; decision = FRand(); if ( decision < 0.4 ) PlayAnim('Victory1',0.7, 0.2); else if ( decision < 0.6 ) PlayAnim('Wave',0.7, 0.2); else PlayAnim('Taunt1',0.7, 0.2); } //----------------------------------------------------------------------------- // Animation functions function PlayTurning() { BaseEyeHeight = Default.BaseEyeHeight; if ( (Weapon == None) || (Weapon.Mass < 20) ) PlayAnim('TurnSM', 0.3, 0.3); else PlayAnim('TurnLG', 0.3, 0.3); } function TweenToWalking(float tweentime) { BaseEyeHeight = Default.BaseEyeHeight; if (Weapon == None) TweenAnim('Walk', tweentime); else if ( Weapon.bPointing || (CarriedDecoration != None) ) { if (Weapon.Mass < 20) TweenAnim('WalkSMFR', tweentime); else TweenAnim('WalkLGFR', tweentime); } else { if (Weapon.Mass < 20) TweenAnim('WalkSM', tweentime); else TweenAnim('WalkLG', tweentime); } } function TweenToRunning(float tweentime) { BaseEyeHeight = Default.BaseEyeHeight; if (bIsWalking) { TweenToWalking(0.1); return; } if (Weapon == None) PlayAnim('RunSM', 0.9, tweentime); else if ( Weapon.bPointing ) { if (Weapon.Mass < 20) PlayAnim('RunSMFR', 0.9, tweentime); else PlayAnim('RunLGFR', 0.9, tweentime); } else { if (Weapon.Mass < 20) PlayAnim('RunSM', 0.9, tweentime); else PlayAnim('RunLG', 0.9, tweentime); } } function PlayWalking() { BaseEyeHeight = Default.BaseEyeHeight; if (Weapon == None) LoopAnim('Walk'); else if ( Weapon.bPointing || (CarriedDecoration != None) ) { if (Weapon.Mass < 20) LoopAnim('WalkSMFR'); else LoopAnim('WalkLGFR'); } else { if (Weapon.Mass < 20) LoopAnim('WalkSM'); else LoopAnim('WalkLG'); } } function PlayRunning() { BaseEyeHeight = Default.BaseEyeHeight; if (Weapon == None) LoopAnim('RunSM'); else if ( Weapon.bPointing ) { if (Weapon.Mass < 20) LoopAnim('RunSMFR'); else LoopAnim('RunLGFR'); } else { if (Weapon.Mass < 20) LoopAnim('RunSM'); else LoopAnim('RunLG'); } } function PlayRising() { BaseEyeHeight = 0.4 * Default.BaseEyeHeight; TweenAnim('DuckWlkS', 0.7); } function PlayFeignDeath() { local float decision; BaseEyeHeight = 0; if ( decision < 0.33 ) TweenAnim('DeathEnd', 0.5); else if ( decision < 0.67 ) TweenAnim('DeathEnd2', 0.5); else TweenAnim('DeathEnd3', 0.5); } //the only other change :) (without it dodging screwes up) (ripped from //playerpawn.uc) function PlayDodge(eDodgeDir DodgeMove) { PlayDuck(); } function PlayDying(name DamageType, vector HitLoc) { local vector X,Y,Z, HitVec, HitVec2D; local float dotp; local carcass carc; BaseEyeHeight = Default.BaseEyeHeight; PlayDyingSound(); if ( DamageType == 'Suicided' ) { PlayAnim('Dead1', 0.7, 0.1); return; } if ( FRand() < 0.15 ) { PlayAnim('Dead3',0.7,0.1); return; } // check for big hit if ( (Velocity.Z > 250) && (FRand() < 0.7) ) { PlayAnim('Dead2', 0.7, 0.1); return; } // check for head hit if ( ((DamageType == 'Decapitated') || (HitLoc.Z - Location.Z > 0.6 * CollisionHeight)) && ((Level.Game == None) || !Level.Game.bVeryLowGore) ) { DamageType = 'Decapitated'; if ( Level.NetMode != NM_Client ) { carc = Spawn(class 'FemaleHead',,, Location + CollisionHeight * vect(0,0,0.8), Rotation + rot(3000,0,16384) ); if (carc != None) { carc.Initfor(self); carc.Velocity = Velocity + VSize(Velocity) * VRand(); carc.Velocity.Z = FMax(carc.Velocity.Z, Velocity.Z); ViewTarget = carc; } } PlayAnim('Dead6', 0.7, 0.1); return; } if ( FRand() < 0.15) { PlayAnim('Dead1', 0.7, 0.1); return; } GetAxes(Rotation,X,Y,Z); X.Z = 0; HitVec = Normal(HitLoc - Location); HitVec2D= HitVec; HitVec2D.Z = 0; dotp = HitVec2D dot X; if (Abs(dotp) > 0.71) //then hit in front or back PlayAnim('Dead4', 0.7, 0.1); else { dotp = HitVec dot Y; if ( (dotp > 0.0) && ((Level.Game == None) || !Level.Game.bVeryLowGore) ) { PlayAnim('Dead7', 0.7, 0.1); carc = Spawn(class 'Arm1'); if (carc != None) { carc.Initfor(self); carc.Velocity = Velocity + VSize(Velocity) * VRand(); carc.Velocity.Z = FMax(carc.Velocity.Z, Velocity.Z); } } else PlayAnim('Dead5', 0.7, 0.1); } } function PlayGutHit(float tweentime) { if ( (AnimSequence == 'GutHit') || (AnimSequence == 'Dead2') ) { if (FRand() < 0.5) TweenAnim('LeftHit', tweentime); else TweenAnim('RightHit', tweentime); } else if ( FRand() < 0.6 ) TweenAnim('GutHit', tweentime); else TweenAnim('Dead2', tweentime); } function PlayHeadHit(float tweentime) { if ( (AnimSequence == 'HeadHit') || (AnimSequence == 'Dead4') ) TweenAnim('GutHit', tweentime); else if ( FRand() < 0.6 ) TweenAnim('HeadHit', tweentime); else TweenAnim('Dead4', tweentime); } function PlayLeftHit(float tweentime) { if ( (AnimSequence == 'LeftHit') || (AnimSequence == 'Dead3') ) TweenAnim('GutHit', tweentime); else if ( FRand() < 0.6 ) TweenAnim('LeftHit', tweentime); else TweenAnim('Dead3', tweentime); } function PlayRightHit(float tweentime) { if ( (AnimSequence == 'RightHit') || (AnimSequence == 'Dead5') ) TweenAnim('GutHit', tweentime); else if ( FRand() < 0.6 ) TweenAnim('RightHit', tweentime); else TweenAnim('Dead5', tweentime); } function PlayLanded(float impactVel) { impactVel = impactVel/JumpZ; impactVel = 0.1 * impactVel * impactVel; BaseEyeHeight = Default.BaseEyeHeight; if ( Role == ROLE_Authority ) { if ( impactVel > 0.17 ) PlaySound(LandGrunt, SLOT_Talk, FMin(5, 5 * impactVel),false,1200,FRand()*0.4+0.8); if ( !FootRegion.Zone.bWaterZone && (impactVel > 0.01) ) PlaySound(Land, SLOT_Interact, FClamp(4 * impactVel,0.5,5), false,1000, 1.0); } if ( (impactVel > 0.06) || (GetAnimGroup(AnimSequence) == 'Jumping') ) { if ( (Weapon == None) || (Weapon.Mass < 20) ) TweenAnim('LandSMFR', 0.12); else TweenAnim('LandLGFR', 0.12); } else if ( !IsAnimating() ) { if ( GetAnimGroup(AnimSequence) == 'TakeHit' ) { SetPhysics(PHYS_Walking); AnimEnd(); } else { if ( (Weapon == None) || (Weapon.Mass < 20) ) TweenAnim('LandSMFR', 0.12); else TweenAnim('LandLGFR', 0.12); } } } function PlayInAir() { BaseEyeHeight = 0.7 * Default.BaseEyeHeight; if ( (Weapon == None) || (Weapon.Mass < 20) ) TweenAnim('JumpSMFR', 0.8); else TweenAnim('JumpLGFR', 0.8); } function PlayDuck() { BaseEyeHeight = 0; if ( (Weapon == None) || (Weapon.Mass < 20) ) TweenAnim('DuckWlkS', 0.25); else TweenAnim('DuckWlkL', 0.25); } function PlayCrawling() { //log("Play duck"); BaseEyeHeight = 0; if ( (Weapon == None) || (Weapon.Mass < 20) ) LoopAnim('DuckWlkS'); else LoopAnim('DuckWlkL'); } function TweenToWaiting(float tweentime) { if ( (IsInState('PlayerSwimming')) || (Physics == PHYS_Swimming) ) { BaseEyeHeight = 0.7 * Default.BaseEyeHeight; if ( (Weapon == None) || (Weapon.Mass < 20) ) TweenAnim('TreadSM', tweentime); else TweenAnim('TreadLG', tweentime); } else { BaseEyeHeight = Default.BaseEyeHeight; if ( (Weapon == None) || (Weapon.Mass < 20) ) TweenAnim('StillSMFR', tweentime); else TweenAnim('StillFRRP', tweentime); } } function PlayWaiting() { local name newAnim; if ( bIsTyping ) //why not? { PlayChatting(); return; } if ( (IsInState('PlayerSwimming')) || (Physics == PHYS_Swimming) ) { BaseEyeHeight = 0.7 * Default.BaseEyeHeight; if ( (Weapon == None) || (Weapon.Mass < 20) ) LoopAnim('TreadSM'); else LoopAnim('TreadLG'); } else { BaseEyeHeight = Default.BaseEyeHeight; ViewRotation.Pitch = ViewRotation.Pitch & 65535; If ( (ViewRotation.Pitch > RotationRate.Pitch) && (ViewRotation.Pitch < 65536 - RotationRate.Pitch) ) { If (ViewRotation.Pitch < 32768) { if ( (Weapon == None) || (Weapon.Mass < 20) ) TweenAnim('AimUpSm', 0.3); else TweenAnim('AimUpLg', 0.3); } else { if ( (Weapon == None) || (Weapon.Mass < 20) ) TweenAnim('AimDnSm', 0.3); else TweenAnim('AimDnLg', 0.3); } } else if ( (Weapon != None) && Weapon.bPointing ) { if ( Weapon.bRapidFire && ((bFire != 0) || (bAltFire != 0)) ) LoopAnim('StillFRRP'); else if ( Weapon.Mass < 20 ) TweenAnim('StillSMFR', 0.3); else TweenAnim('StillFRRP', 0.3); } else { if ( FRand() < 0.1 ) { if ( (Weapon == None) || (Weapon.Mass < 20) ) PlayAnim('CockGun', 0.5 + 0.5 * FRand(), 0.3); else PlayAnim('CockGunL', 0.5 + 0.5 * FRand(), 0.3); } else { if ( (Weapon == None) || (Weapon.Mass < 20) ) { if ( Health > 50 ) newAnim = 'Breath1'; else newAnim = 'Breath2'; } else { if ( Health > 50 ) newAnim = 'Breath1L'; else newAnim = 'Breath2L'; } if ( AnimSequence == newAnim ) LoopAnim(newAnim, 0.3 + 0.7 * FRand()); else PlayAnim(newAnim, 0.3 + 0.7 * FRand(), 0.25); } } } } //yeah..dumb idea... but had to put something :) function PlayChatting() { if ( mesh != None ) LoopAnim('Look', 0.7, 0.25); } function PlayRecoil(float Rate) { if ( AnimSequence == 'StillSmFr' ) PlayAnim('StillSmFr', Rate, 0.02); else if ( (AnimSequence == 'StillLgFr') || (AnimSequence == 'StillFrRp') ) PlayAnim('StillLgFr', Rate, 0.02); } function PlayFiring() { // switch animation sequence mid-stream if needed if (AnimSequence == 'RunLG') AnimSequence = 'RunLGFR'; else if (AnimSequence == 'RunSM') AnimSequence = 'RunSMFR'; else if (AnimSequence == 'WalkLG') AnimSequence = 'WalkLGFR'; else if (AnimSequence == 'WalkSM') AnimSequence = 'WalkSMFR'; else if ( AnimSequence == 'JumpSMFR' ) TweenAnim('JumpSMFR', 0.03); else if ( AnimSequence == 'JumpLGFR' ) TweenAnim('JumpLGFR', 0.03); else if ( (GetAnimGroup(AnimSequence) == 'Waiting') || (GetAnimGroup(AnimSequence) == 'Gesture') && (AnimSequence != 'TreadLG') && (AnimSequence != 'TreadSM') ) { if ( Weapon.Mass < 20 ) TweenAnim('StillSMFR', 0.02); else TweenAnim('StillFRRP', 0.02); } } function PlayWeaponSwitch(Weapon NewWeapon) { if ( (Weapon == None) || (Weapon.Mass < 20) ) { if ( (NewWeapon != None) && (NewWeapon.Mass > 20) ) { if ( (AnimSequence == 'RunSM') || (AnimSequence == 'RunSMFR') ) AnimSequence = 'RunLG'; else if ( (AnimSequence == 'WalkSM') || (AnimSequence == 'WalkSMFR') ) AnimSequence = 'WalkLG'; else if ( AnimSequence == 'JumpSMFR' ) AnimSequence = 'JumpLGFR'; else if ( AnimSequence == 'DuckWlkL' ) AnimSequence = 'DuckWlkS'; else if ( AnimSequence == 'StillSMFR' ) AnimSequence = 'StillFRRP'; else if ( AnimSequence == 'AimDnSm' ) AnimSequence = 'AimDnLg'; else if ( AnimSequence == 'AimUpSm' ) AnimSequence = 'AimUpLg'; } } else if ( (NewWeapon == None) || (NewWeapon.Mass < 20) ) { if ( (AnimSequence == 'RunLG') || (AnimSequence == 'RunLGFR') ) AnimSequence = 'RunSM'; else if ( (AnimSequence == 'WalkLG') || (AnimSequence == 'WalkLGFR') ) AnimSequence = 'WalkSM'; else if ( AnimSequence == 'JumpLGFR' ) AnimSequence = 'JumpSMFR'; else if ( AnimSequence == 'DuckWlkS' ) AnimSequence = 'DuckWlkL'; else if (AnimSequence == 'StillFRRP') AnimSequence = 'StillSMFR'; else if ( AnimSequence == 'AimDnLg' ) AnimSequence = 'AimDnSm'; else if ( AnimSequence == 'AimUpLg' ) AnimSequence = 'AimUpSm'; } } function PlaySwimming() { BaseEyeHeight = 0.7 * Default.BaseEyeHeight; if ((Weapon == None) || (Weapon.Mass < 20) ) LoopAnim('SwimSM'); else LoopAnim('SwimLG'); } function TweenToSwimming(float tweentime) { BaseEyeHeight = 0.7 * Default.BaseEyeHeight; if ((Weapon == None) || (Weapon.Mass < 20) ) TweenAnim('SwimSM',tweentime); else TweenAnim('SwimLG',tweentime); } M lQs!g $| K=?, K9ppp   [SDK=?, %]: M nVW"jThink about it!In case you haven't noticed, right clicking doesn't do anything in Uwindow's mode.\nWell, at least in Epic's windows ;)$$$ M r  fzE E q r E o n p n  r o ?,p q ' M sKXF"6i  -%3rq *Kyq -i - wq i D?K| w !o-@ K,K M M M hP b:Qa I-P a/!Sa P  > M o?// ============================================================ // Oldskool.Unrealmale: Allows proper demises of converted models // Psychic_313: DEPRECATED. DON'T USE ME. // ============================================================ class Unrealmale extends Unrealhuman abstract; function PlayDying(name DamageType, vector HitLoc) { local vector X,Y,Z, HitVec, HitVec2D; local float dotp; local carcass carc; BaseEyeHeight = Default.BaseEyeHeight; PlayDyingSound(); if ( DamageType == 'Suicided' ) { PlayAnim('Dead7', 0.7, 0.1); return; } if ( FRand() < 0.15 ) { PlayAnim('Dead2',0.7,0.1); return; } // check for big hit if ( (Velocity.Z > 250) ) { if ( FRand() < 0.7 ){ PlayAnim('Dead5',0.7,0.1);} else{ PlayAnim('Dead1',0.7,0.1);} if ( Level.NetMode != NM_Client ) { carc = Spawn(class 'MaleHead',,, Location + CollisionHeight * vect(0,0,0.8), Rotation + rot(3000,0,16384) ); if (carc != None) { carc.Initfor(self); carc.Velocity = Velocity + VSize(Velocity) * VRand(); carc.Velocity.Z = FMax(carc.Velocity.Z, Velocity.Z); ViewTarget = carc; } carc = Spawn(class 'CreatureChunks'); if (carc != None) { carc.Mesh = mesh 'CowBody1'; carc.Initfor(self); carc.Velocity = Velocity + VSize(Velocity) * VRand(); carc.Velocity.Z = FMax(carc.Velocity.Z, Velocity.Z); } carc = Spawn(class 'Arm1',,, Location + CollisionHeight * vect(0,0,0.8), Rotation + rot(3000,0,16384) ); if (carc != None) { carc.Initfor(self); carc.Velocity = Velocity + VSize(Velocity) * VRand(); carc.Velocity.Z = FMax(carc.Velocity.Z, Velocity.Z); } } return; } // check for head hit if ( ((DamageType == 'Decapitated') || (HitLoc.Z - Location.Z > 0.6 * CollisionHeight)) && !Level.Game.bVeryLowGore ) { DamageType = 'Decapitated'; PlayAnim('Dead4', 0.7, 0.1); if ( Level.NetMode != NM_Client ) { carc = Spawn(class 'MaleHead',,, Location + CollisionHeight * vect(0,0,0.8), Rotation + rot(3000,0,16384) ); if (carc != None) { carc.Initfor(self); carc.Velocity = Velocity + VSize(Velocity) * VRand(); carc.Velocity.Z = FMax(carc.Velocity.Z, Velocity.Z); ViewTarget = carc; } } return; } GetAxes(Rotation,X,Y,Z); X.Z = 0; HitVec = Normal(HitLoc - Location); HitVec2D= HitVec; HitVec2D.Z = 0; dotp = HitVec2D dot X; if (Abs(dotp) > 0.71) //then hit in front or back PlayAnim('Dead3', 0.7, 0.1); else { dotp = HitVec dot Y; if (dotp > 0.0) PlayAnim('Dead6', 0.7, 0.1); else PlayAnim('Dead7', 0.7, 0.1); } } function PlayGutHit(float tweentime) { if ( (AnimSequence == 'GutHit') || (AnimSequence == 'Dead2') ) { if (FRand() < 0.5) TweenAnim('LeftHit', tweentime); else TweenAnim('RightHit', tweentime); } else if ( FRand() < 0.6 ) TweenAnim('GutHit', tweentime); else TweenAnim('Dead2', tweentime); } function PlayHeadHit(float tweentime) { if ( (AnimSequence == 'HeadHit') || (AnimSequence == 'Dead3') ) TweenAnim('GutHit', tweentime); else if ( FRand() < 0.6 ) TweenAnim('HeadHit', tweentime); else TweenAnim('Dead3', tweentime); } function PlayLeftHit(float tweentime) { if ( (AnimSequence == 'LeftHit') || (AnimSequence == 'Dead6') ) TweenAnim('GutHit', tweentime); else if ( FRand() < 0.6 ) TweenAnim('LeftHit', tweentime); else TweenAnim('Dead6', tweentime); } function PlayRightHit(float tweentime) { if ( (AnimSequence == 'RightHit') || (AnimSequence == 'Dead1') ) TweenAnim('GutHit', tweentime); else if ( FRand() < 0.6 ) TweenAnim('RightHit', tweentime); else TweenAnim('Dead1', tweentime); } M M M swFJa a a a a a a a a  M pkW 6$6$6$&(  @OldSkool Amp'd 2.38  ?,By UsAaR33  ?,and much code and skins by Psychic_313  ?,%( Special Thanks to:  ?,Preacher: Hosting my WebSite The Renegade Master: Creating my WebSite: &H&T&T&P&:&/&/&w&w&w&.&u&n&r&e&a&l&i&t&y&.&d&k&/&u&s&a&a&r&3&3 HTTP://www.unreality.dk/usaar33 ?,The Real CTF team: Many Skins  ?,Nemo_NX: Consistant support thoughout this project  ?,Antonio "NetDevil" Cordero: UTPT for mesh extraction  ?,Bane: Akimbo automag code  ?,Hellscrag: Music Description  ?,DrSin: Hosting Forums  ?,Mongo: Ever wonder why he is on almost every mod's credits list?  ?,EzKeel and Cerr: Support and testing for Legacy  ?,DavidM: "Where are the scripts? Give me the scripts, dammit!"  ?,All of my beta testers, and anyone else who somehow contributed to OSA.  ?,Epic Megagames and Digital Extremes: without &t&h&e&m &y&o&u wouldn't have UT :0 without them you wouldn't have UT :06=,6=,6=,\C ?,  M l// ============================================================ // oldskool.sktrooperbot: the skaarjy boty // Psychic_313: DEPRECATED. DON'T USE ME. // ============================================================ class sktrooperbot expands skinbotset; function prebeginplay(){ //sets the skaarj more humanlike if (!class'oldskool.skinconfiguration'.default.skaarjprop){ default.Drawscale=0.75; default.jumpz=325.000000; default.health=100; default.Buoyancy=99.0; default.baseeyeheight=27.000000; default.EyeHeight=27.000000; Drawscale=0.75; jumpz=325.000000; health=100; Buoyancy=99.0; baseeyeheight=27.000000; EyeHeight=27.000000; Setcollisionsize(17,39); } Super.PrebeginPlay();} //OMG!!!!! The only converted model with CODE!!!!!!!!! :) ///better victory dances :) function PlayVictoryDance() { local float decision; decision = FRand(); if ( decision < 0.35 ) PlayAnim('Shield', 0.6, 0.1); else if ( decision < 0.5 ) PlayAnim('Pickup', 0.7, 0.2); else if ( decision < 0.7 ) PlayAnim('Taunt1', 0.7, 0.2); else PlayAnim ('Guncheck'); } simulated function WalkStep() { local sound step; local float decision; /* if ( Role < ROLE_Authority ) return; */ if ( FootRegion.Zone.bWaterZone ) { PlaySound(sound 'LSplash', SLOT_Interact, 1, false, 1000.0, 1.0); return; } PlaySound(Footstep1, SLOT_Interact, 0.1, false, 800.0, 1.0); } simulated function RunStep() { local sound step; local float decision; if ( Role < ROLE_Authority ) return; if ( FootRegion.Zone.bWaterZone ) { PlaySound(sound 'LSplash', SLOT_Interact, 1, false, 1000.0, 1.0); return; } PlaySound(Footstep1, SLOT_Interact, 0.7, false, 800.0, 1.0); } //----------------------------------------------------------------------------- // Animation functions function PlayDodge(bool bDuckLeft) { bCanDuck = false; Velocity.Z = 200; if ( bDuckLeft ) PlayAnim('LeftDodge', 1.35, 0.06); else PlayAnim('RightDodge', 1.35, 0.06); } function PlayTurning() { BaseEyeHeight = Default.BaseEyeHeight; PlayAnim('Turn', 0.3, 0.3); } function TweenToWalking(float tweentime) { if ( Physics == PHYS_Swimming ) { if ( (vector(Rotation) Dot Acceleration) > 0 ) TweenToSwimming(tweentime); else TweenToWaiting(tweentime); } BaseEyeHeight = Default.BaseEyeHeight; if (Weapon == None) TweenAnim('Walk', tweentime); else if ( Weapon.bPointing || (CarriedDecoration != None) ) TweenAnim('WalkFire', tweentime); else TweenAnim('Walk', tweentime); } function TweenToRunning(float tweentime) { local vector X,Y,Z, Dir; if ( Physics == PHYS_Swimming ) { if ( (vector(Rotation) Dot Acceleration) > 0 ) TweenToSwimming(tweentime); else TweenToWaiting(tweentime); } GetAxes(Rotation, X,Y,Z); Dir = Normal(Acceleration); BaseEyeHeight = Default.BaseEyeHeight; if (bIsWalking) TweenToWalking(0.1); else if (Weapon == None) PlayAnim('Jog', 1, tweentime); else if ( Weapon.bPointing ) PlayAnim('JogFire', 1, tweentime); else PlayAnim('Jog', 1, tweentime); if ( (Dir Dot X < 0.75) && (Dir != vect(0,0,0)) ) { // strafing if ( Dir Dot Y > 0 ){ if ( Weapon.bPointing) PlayAnim('StrafeRightfr', 1.75, tweentime); else PlayAnim('StrafeRight', 1.75, tweentime);} else{ if ( Weapon.bPointing) PlayAnim('StrafeLeftfr', 1.75, tweentime); else PlayAnim('StrafeLeft', 1.75, tweentime);} } } function PlayWalking() { if ( Physics == PHYS_Swimming ) { if ( (vector(Rotation) Dot Acceleration) > 0 ) PlaySwimming(); else PlayWaiting(); return; } BaseEyeHeight = Default.BaseEyeHeight; if (Weapon == None) LoopAnim('Walk',1.1); else if ( Weapon.bPointing || (CarriedDecoration != None) ) LoopAnim('WalkFire',1.1); else LoopAnim('Walk',1.1); } function PlayRunning() { local float strafeMag; local vector Focus2D, Loc2D, Dest2D; local vector lookDir, moveDir, Y; local name NewAnim; if ( Physics == PHYS_Swimming ) { if ( (vector(Rotation) Dot Acceleration) > 0 ) PlaySwimming(); else PlayWaiting(); return; } BaseEyeHeight = Default.BaseEyeHeight; if ( bAdvancedTactics && !bNoTact ) { if ( bTacticalDir ){ if ( Weapon.bPointing) LoopAnim('StrafeLeftfr',1.85); else LoopAnim('StrafeLeft',1.85);} else{ if ( Weapon.bPointing) LoopAnim('StrafeRightfr',1.85); else LoopAnim('StrafeRight',1.85);} return; } else if ( Focus != Destination ) { // check for strafe or backup Focus2D = Focus; Focus2D.Z = 0; Loc2D = Location; Loc2D.Z = 0; Dest2D = Destination; Dest2D.Z = 0; lookDir = Normal(Focus2D - Loc2D); moveDir = Normal(Dest2D - Loc2D); strafeMag = lookDir dot moveDir; if ( strafeMag < 0.75 ) { if ( strafeMag < -0.75 ){ if ( Weapon.bPointing ) newAnim = 'Jogfire'; else newAnim = 'Jog'; } else { Y = (lookDir Cross vect(0,0,1)); if ((Y Dot (Dest2D - Loc2D)) > 0) { if ( Weapon.bPointing) LoopAnim('StrafeLeftfr',1.85); else LoopAnim('StrafeLeft',1.85);} else { if ( Weapon.bPointing) LoopAnim('StrafeRightfr',1.85); else LoopAnim('StrafeRight',1.85);} return; } } } if (Weapon == None) newAnim = 'Jog'; else if ( Weapon.bPointing ) newAnim = 'Jogfire'; else newAnim = 'Jog'; if ( (newAnim == AnimSequence) && IsAnimating() ) return; LoopAnim(NewAnim); } function PlayRising() { BaseEyeHeight = 0.4 * Default.BaseEyeHeight; PlayAnim('Getup', 0.7, 0.1); } function PlayFeignDeath() { BaseEyeHeight = 0; PlayAnim('Death2',0.7); } function PlayDying(name DamageType, vector HitLoc) { local vector X,Y,Z, HitVec, HitVec2D; local float dotp; BaseEyeHeight = Default.BaseEyeHeight; PlayDyingSound(); if ( FRand() < 0.15 ) { PlayAnim('Death',0.7,0.1); return; } // check for big hit if ( (Velocity.Z > 250) && (FRand() < 0.7) ) { PlayAnim('Death2', 0.7, 0.1); return; } // check for head hit if ( ((DamageType == 'Decapitated') || (HitLoc.Z - Location.Z > 0.6 * CollisionHeight) )&& !Level.Game.bVeryLowGore) { DamageType = 'Decapitated'; PlayAnim('Death5', 0.7, 0.1); return; } if ( FRand() < 0.15) { PlayAnim('Death3', 0.7, 0.1); return; } GetAxes(Rotation,X,Y,Z); X.Z = 0; HitVec = Normal(HitLoc - Location); HitVec2D= HitVec; HitVec2D.Z = 0; dotp = HitVec2D dot X; if (Abs(dotp) > 0.71) //then hit in front or back PlayAnim('Death3', 0.7, 0.1); else { dotp = HitVec dot Y; if (dotp > 0.0) PlayAnim('Death', 0.7, 0.1); else PlayAnim('Death4', 0.7, 0.1); } } 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); } function PlayLanded(float impactVel) { impactVel = impactVel/JumpZ; impactVel = 0.1 * impactVel * impactVel; BaseEyeHeight = Default.BaseEyeHeight; if ( Role == ROLE_Authority ) { if ( impactVel > 0.17 ) PlaySound(LandGrunt, SLOT_Talk, FMin(5, 5 * impactVel),false,1200,FRand()*0.4+0.8); if ( !FootRegion.Zone.bWaterZone && (impactVel > 0.01) ) PlaySound(Land, SLOT_Interact, FClamp(4.5 * impactVel,0.5,6), false, 1000, 1.0); } if ( (GetAnimGroup(AnimSequence) == 'Dodge') && IsAnimating() ) return; if ( (impactVel > 0.06) || (GetAnimGroup(AnimSequence) == 'Jumping') ) TweenAnim('Land', 0.12); else if ( !IsAnimating() ) { if ( GetAnimGroup(AnimSequence) == 'TakeHit' ) AnimEnd(); else TweenAnim('Land', 0.12); } } function PlayInAir() { BaseEyeHeight = Default.BaseEyeHeight; TweenAnim('InAir', 0.4); } function PlayDuck() { BaseEyeHeight = 0; TweenAnim('Duck', 0.25); } function PlayCrawling() { BaseEyeHeight = 0; LoopAnim('DuckWalk'); } function TweenToWaiting(float tweentime) { if( IsInState('PlayerSwimming') || Physics==PHYS_Swimming ) { BaseEyeHeight = 0.7 * Default.BaseEyeHeight; TweenAnim('Swim', tweentime); } else { BaseEyeHeight = Default.BaseEyeHeight; TweenAnim('Firing', tweentime); } } function PlayWaiting() { local name newAnim; if( IsInState('PlayerSwimming') || (Physics==PHYS_Swimming) ) { BaseEyeHeight = 0.7 * Default.BaseEyeHeight; LoopAnim('Swim'); } else { BaseEyeHeight = Default.BaseEyeHeight; if ( (Weapon != None) && Weapon.bPointing ) TweenAnim('Firing', 0.3); else { if ( FRand() < 0.2 ) newAnim = 'Breath'; else newAnim = 'Breath2'; if ( AnimSequence == newAnim ) LoopAnim(newAnim, 0.3 + 0.7 * FRand()); else PlayAnim(newAnim, 0.3 + 0.7 * FRand(), 0.25); } } } function PlayFiring() { // switch animation sequence mid-stream if needed if (AnimSequence == 'Jog') AnimSequence = 'JogFire'; else if (AnimSequence == 'Walk') AnimSequence = 'WalkFire'; else if ( AnimSequence == 'InAir' ) TweenAnim('JogFire', 0.03); else if ( (GetAnimGroup(AnimSequence) != 'Attack') && (GetAnimGroup(AnimSequence) != 'MovingAttack') && (GetAnimGroup(AnimSequence) != 'Dodge') && (AnimSequence != 'Swim') ) TweenAnim('Firing', 0.02); } function PlayChallenge() { local float decision; decision = FRand(); if ( decision < 0.4 ) TweenToWaiting(0.1); else PlayAnim('Button1'); } function PlayWeaponSwitch(Weapon NewWeapon) { } function PlaySwimming() { BaseEyeHeight = 0.7 * Default.BaseEyeHeight; LoopAnim('Swim'); } function TweenToSwimming(float tweentime) { BaseEyeHeight = 0.7 * Default.BaseEyeHeight; TweenAnim('Swim',tweentime); } state FallingState { ignores Bump, Hitwall, HearNoise, WarnTarget; function Landed(vector HitNormal) { local float landVol; if ( GetAnimGroup(AnimSequence) == 'Dodge' ) { if (Velocity.Z <= -1100) { if ( (Velocity.Z < -2000) && (ReducedDamageType != 'All') ) { health = -1000; //make sure gibs Died(None, 'Fell', Location); } else if ( Role == ROLE_Authority ) TakeDamage(-0.15 * (Velocity.Z + 1050), None, Location, vect(0,0,0), 'Fell'); } landVol = Velocity.Z/JumpZ; landVol = 0.008 * Mass * landVol * landVol; if ( !FootRegion.Zone.bWaterZone ) PlaySound(Land, SLOT_Interact, FMin(20, landVol)); GotoState('FallingState', 'FinishDodge'); } else Super.Landed(HitNormal); } FinishDodge: FinishAnim(); bCanDuck = true; Goto('Done'); } M mI&>a!m333?= yxxV B 6zk8Ay1X'1X'X'X'X'X'X'X'X'X'X'X'11ka (]sktrooperskiny.skar5)]sktrooperskiny.skaa1m/f | C]Rdo q - --ApGv J 2]sktrooperskiny.skaarj7]sktrooperskiny.W]BotPack.VoiceMaleL]$Cm$Aa"3]UnrealI.sktrooper9]Botpack.TrophyBossS Q x ;] SkTrooper*]$B}$(BG$BM M 1. . BB. BB. BB [. BB []]      -(-'?,J M {R J/B %}${} R ,J. Q J}`~,`J J J `J `&R  R } ~ 1{~h~~,yh}~~}~h~~h&J. e }wJ*Jz  d J.pUnknown mutator in mutator list: }8q M U// ============================================================ // oldskool.femaletwobot: put your comment here // Psychic_313: DEPRECATED. DON'T USE ME. // ============================================================ class femaletwobot expands unrealfbot; function ForceMeshToExist() { Spawn(class'oldskool.femaletwo'); } l}FD B 6~dl8 (]female2skiny.sony5)]female2skiny.sony1A]female2skins.2]female2skiny.sonya7]female2skiny.3]UnrealI.Female29]Botpack.TrophyFemale1;] Demitra^]BotPack.VoiceFemaleOn* M M U// ============================================================ // oldskool.femaleonebot: put your comment here // Psychic_313: DEPRECATED. DON'T USE ME. // ============================================================ class femaleonebot expands unrealfbot; function ForceMeshToExist() { Spawn(class'oldskool.femaleone'); } lGB B 6@ l8 (]female1skiny.gina5)]female1skiny.gina1A]female1skins.2]female1skiny.gina7]female1skiny.3]UnrealShare.Female19]Botpack.TrophyFemale1;]Drace^]BotPack.VoiceFemaleOn* M M L// ============================================================ // oldskool.malethreebot: put your comment here // Psychic_313: DEPRECATED. DON'T USE ME. // ============================================================ class malethreebot expands unrealmbot; function ForceMeshToExist() { Spawn(class'malethree'); } CA@@ B 6B;)Co (]male3skiny.dant5)]male3skiny.dant1A] male3skins./2]male3skiny.dante7] male3skiny.3]UnrealI.Male39]Botpack.TrophyMale1;]Bane*M M ~// ============================================================ // oldskool.maletwobot: Ashy // Psychic_313: DEPRECATED. DON'T USE ME. // ============================================================ class maletwobot expands unrealmbot; function ForceMeshToExist() { Spawn(class'oldskool.maletwo'); } M |Awf A. wA*Vz]]Av]pp],AA.A ( ]  CCvI B 6ERc|Co (]male2skiny.ash15)]male2skiny.ash11A] male2skins./ 2Mmale2skiny.ash7] male2skiny.3]UnrealI.Male29]Botpack.TrophyMale1;]Ash* M M W// ============================================================ // oldskool.MaleoneBot: whatever...... // Psychic_313: DEPRECATED. DON'T USE ME. // ============================================================ class MaleoneBot expands unrealmbot; function ForceMeshToExist() { Spawn(class'oldskool.maleone'); } simulated function PlayMetalStep() { local sound step; local float decision; if ( !bIsWalking && (Level.Game != None) && (Level.Game.Difficulty > 1) && ((Weapon == None) || !Weapon.bPointing) ) MakeNoise(0.05 * Level.Game.Difficulty); if ( FootRegion.Zone.bWaterZone ) { PlaySound(sound 'LSplash', SLOT_Interact, 1, false, 1000.0, 1.0); return; } decision = FRand(); if ( decision < 0.34 ) step = sound'MetWalk1'; else if (decision < 0.67 ) step = sound'MetWalk2'; else step = sound'MetWalk3'; if ( bIsWalking ) PlaySound(step, SLOT_Interact, 0.5, false, 400.0, 1.0); else PlaySound(step, SLOT_Interact, 1, false, 800.0, 1.0); } M DMYt ML M yfa!N333? M y M CFp^ B 6 JȲQCoX'1 (]male1skiny.kurg5)]male1skiny.kurg1A] male1skins./ 2]male1skiny.kurgan7] male1skiny.3]UnrealI.Male19]Botpack.TrophyMale1;]Kurgan* M M H// ============================================================ // oldskool.spoldskool: base mutator for singleplayer2 // Psychic_313: mostly unchanged // ============================================================ class spoldskool expands mutator config(Oldskool); //da pulse icon...... #exec TEXTURE IMPORT NAME=pulseicon FILE=Textures\pulseicon.pcx var bool PropSetup; //no replacement var config bool //yawn.... bmed, bBioRifle, bASMD, bStingy, bRazor, bFlak, bmini, bEball, bRifle, bjump, bdamage, bpad, bmegahealth, barmor, bmag, bshield, bUseDecals, //more specifically blood decals :P PermaDecals; //permanent decals. //non-config options (for save game hack): var bool oBioRifle, oASMD, oStingy, oRazor, oFlak, omini, oEball, oRifle, odamage, opad, oarmor, omag, oshield; var config bool UnAir; //U1 aircontrol var bool NewVersion; //a hack. :D var localized string spymessage[2]; function SetUpCurrent(){ if (level.netmode!=NM_standalone||bUseDecals) //in co-op, always spawn the notify to allow effect swapping client-side. spawn(class'bloodnotify'); if (level.netmode!=NM_standalone||PermaDecals) spawn(class'decalnotify'); if (level.netmode!=NM_standalone){ spawn(class'EveryThingNotify'); return; } oASMD=basmd; //old options ostingy=bstingy; oRazor=brazor; oFlak=bflak; omini=bmini; oEball=beball; oRifle=brifle; odamage=bdamage; opad=bpad; oarmor=barmor; omag=bmag; oshield=bshield; NewVersion=true; //OSA 2.25+ save } function postbeginplay(){ SetupCurrent(); level.game.registerdamagemutator(Self); //OSA 3: damage mutator for skaarj voice thing //decals spawnnotify: //log ("OldSkool Amp'd: SPOldSkool Postbeginplay called"); } function FixContents(out class conts){ //mag, minigun, armor and kev not swapped do ro replacewith stuff if (conts==none) return; if (conts==class'ShieldBelt'){ if (bshield) conts=class'osUT_ShieldBelt'; else conts=class'osShieldBelt'; } else if (conts==class'powershield'){ if (bshield) conts=class'olweapons.shieldBeltpower'; else conts=class'olweapons.ospowershield'; } else if (conts==class'superhealth'&&bmegahealth) conts=class'healthpack'; else if (conts==class'health'&&bmed) conts=class'medbox'; else if (conts==class'weaponpowerup') conts=class'osDispersionpowerup'; else if (conts==class'amplifier'&&!bdamage) //do to modifications in replacewith, cannot swap damage conts=class'osamplifier'; else if (conts==class'jumpboots'&&bjump) conts=class'UT_jumpboots'; else if (conts==class'sludge'&&bBioRifle) conts=class'bioammo'; else if (conts==class'ASMDAmmo'&&basmd ) conts=class'ShockCore'; else if (conts==class'RocketCan'&&beball) conts=class'botpack.RocketPack'; else if (conts==class'StingerAmmo'&&bstingy) conts=class'botpack.PAmmo'; else if (conts==class'RazorAmmo'&&brazor) conts=class'botpack.BladeHopper'; else if (conts==class'RifleRound' &&brifle) conts=class'botpack.RifleShell'; else if (conts==class'RifleAmmo'&&brifle) conts=class'botpack.bulletbox'; else if (conts==class'FlakBox'&&bflak) conts=class'botpack.FlakAmmo'; else if (conts==class'flakshellammo'&&bflak) conts=class'olweapons.OSFlakshellAmmo'; else if (conts==class'ShellBox'&&bmag) conts=class'botpack.MiniAmmo'; else if (conts==class'Clip'&&bmag) conts=class'botpack.EClip'; else if (conts==class'pulsegun') //set up UT: SP stuff for old new maps..... conts=class'olweapons.OSPulseGun'; else if (conts==class'shockrifle') conts=class'olweapons.osShockRifle'; else if ( conts==class'Stinger') //set up decal/network weapons..... { if (bstingy) conts=class'olweapons.OSPulseGun'; else conts=class'olweapons.olstinger'; } else if ( conts==class'Rifle') { if (brifle) conts=class'botpack.SniperRifle'; else conts=class'olweapons.olRifle'; } else if ( conts==class'Razorjack' ) { if (brazor) conts=class'botpack.ripper'; else conts=class'olweapons.olrazorjack'; } else if (conts==class'quadshot') //some maps had this? conts=class'olweapons.olquadshot'; else if ( conts==class'Eightball') { if (beball) conts=class'botpack.UT_Eightball'; else conts=class'olweapons.olEightball'; } else if (conts==class'FlakCannon') { if (bflak) conts=class'botpack.UT_flakcannon'; else conts=class'olweapons.olFlakCannon'; } else if (conts==class'ASMD') { if (basmd) conts=class'olweapons.osShockRifle'; else conts=class'olweapons.olasmd'; } else if (conts==class'GesBioRifle') { if (bbiorifle) conts=class'botpack.UT_BioRifle' ; else conts=class'olweapons.olgesBioRifle'; } else if (conts==class'dispersionpistol' ) conts=class'olweapons.oldpistol'; } //main mutator logic: function bool CheckReplacement(Actor Other, out byte bSuperRelevant) { local Inventory Inv; local transhack hack; //OSA 2.2 Illumination hack fix // replace Unreal I inventory actors by their Unreal Tournament equivalents // set bSuperRelevant to false if want the gameinfo's super.IsRelevant() function called // to check on relevancy of this actor. //weaps... if (other.isa('transporter')){ //OSA 2.2 transport fix. hack=spawn(class'transhack',,other.tag,other.location); hack.Offset=transporter(other).Offset; other.disable('trigger'); //my version is better :P return true; //keep its navigation properties. With trigger disabled it can't do anything and the hack manages it. } if (other.isa('decoration')){ //fix content (falling stuff) if (other.isa('tree')||left(getitemname(string(other.class)),5)~="plant") other.style=STY_MASKED; //fix up mask bug in D3D? fixcontents(decoration(other).Contents); fixcontents(decoration(other).Content2); fixcontents(decoration(other).Content3); } if (other.isa('musicevent')&&musicevent(other).Song==none&&level.song==none){ //need to set to null musicevent(other).song=music'olroot.null'; return true; } if (other.style==STY_NORMAL&&other.isa('pawn')&&(other.isa('skaarjwarrior')||other.isa('krall')||other.isa('warlord')||other.isa('bird1')||other.isa('Slith')||other.isa('manta'))) other.style=STY_MASKED; //fix up masking bug on pawns if (other.IsA('inventory')) //so pickup messages work...... Inventory(other).PickupMessageClass = None; //here we swap baddie projectiles around.... (neither a spawn notify nor mutator would affect the projectiles so I had to do it the hard way :( else if (other.isa('scriptedpawn')){ if (class'olweapons.uiweapons'.default.busedecals){ //if (other.isa('skaarjtrooper')) //scriptedpawn(other).Shadow = Spawn(class'PlayerShadow',other,,other.location); //else //what is the difference? update(actor l) only works if a pawn has a weapon. thus I use olpawnshadow. playershadow works for troopers though, so might was well be used. if (!other.isa('tentacle')) //no decal for them. scriptedpawn(other).Shadow = Spawn(class'olpawnShadow',other,,other.location); if (scriptedpawn(other).RangedProjectile==Class'UnrealShare.BruteProjectile') scriptedpawn(other).RangedProjectile=Class'oldskool.olBruteProjectile'; if (scriptedpawn(other).RangedProjectile==Class'Unreali.mercrocket') scriptedpawn(other).RangedProjectile=Class'oldskool.olmercrocket'; else if (scriptedpawn(other).RangedProjectile==Class'UnrealI.GasBagBelch') scriptedpawn(other).RangedProjectile=Class'oldskool.olGasBagBelch'; else if (scriptedpawn(other).RangedProjectile==Class'UnrealI.KraalBolt') scriptedpawn(other).RangedProjectile=Class'oldskool.olkraalbolt'; else if (scriptedpawn(other).RangedProjectile==Class'UnrealI.EliteKrallBolt') scriptedpawn(other).RangedProjectile=Class'oldskool.ol1337krallbolt'; else if (scriptedpawn(other).RangedProjectile==Class'Unrealshare.skaarjprojectile') //no slith thankz to the hitwall not being simulated (and me too lazy to redo it ;) scriptedpawn(other).RangedProjectile=Class'oldskool.olskaarjprojectile'; else if (scriptedpawn(other).RangedProjectile==Class'Unreali.queenprojectile') scriptedpawn(other).RangedProjectile=Class'oldskool.olqueenprojectile'; else if (scriptedpawn(other).RangedProjectile==Class'Unrealshare.tentacleprojectile') scriptedpawn(other).RangedProjectile=Class'oldskool.oltentacleprojectile'; else if (scriptedpawn(other).RangedProjectile==Class'SlithProjectile') scriptedpawn(other).RangedProjectile=Class'olSlithProjectile'; else if (scriptedpawn(other).RangedProjectile==Class'Unreali.warlordrocket') scriptedpawn(other).RangedProjectile=Class'oldskool.olwarlordrocket'; } //if (busedecals||level.netmode!=nm_standalone) scriptedpawn(other).carcasstype=class'olCreatureCarcass'; //get those skaarjy right..... i.e sets weapons so won't screw up player. Warning: this makes the skaarj even deadlier ;) if ( Other.IsA('skaarjtrooper')){ if (skaarjtrooper(Other).weapontype==Class'unreali.Stinger') { if (bstingy) skaarjtrooper(Other).weapontype=Class'olweapons.osPulseGun'; else skaarjtrooper(Other).weapontype=Class'olweapons.olstinger'; } if ( skaarjtrooper(Other).weapontype==Class'unreali.Rifle') { if (brifle) skaarjtrooper(Other).weapontype=Class'botpack.SniperRifle'; else skaarjtrooper(Other).weapontype=Class'olweapons.olRifle'; } if (skaarjtrooper(Other).weapontype==Class'unreali.Razorjack') { if (brazor) skaarjtrooper(Other).weapontype=Class'botpack.ripper'; else skaarjtrooper(Other).weapontype=Class'olweapons.olrazorjack'; } if ( skaarjtrooper(Other).weapontype==Class'unreali.Minigun') { if (bmini) skaarjtrooper(Other).weapontype=Class'botpack.Minigun2'; else skaarjtrooper(Other).weapontype=Class'olweapons.olMinigun'; } if ( skaarjtrooper(Other).weapontype==Class'unreali.automag') //no special mags allowed in SP...... { if (bmag) skaarjtrooper(Other).weapontype=Class'botpack.Enforcer'; else skaarjtrooper(Other).weapontype=Class'olweapons.olautomag'; } if ( skaarjtrooper(Other).weapontype==Class'Eightball') { if (beball) skaarjtrooper(Other).weapontype=Class'botpack.UT_Eightball'; else skaarjtrooper(Other).weapontype=Class'olweapons.olEightball'; } if (skaarjtrooper(Other).weapontype==Class'FlakCannon') { if (bflak) skaarjtrooper(Other).weapontype=Class'botpack.UT_flakcannon'; else skaarjtrooper(Other).weapontype=Class'olweapons.olFlakCannon'; } if ( skaarjtrooper(Other).weapontype==Class'unreali.ASMD') { if (basmd) skaarjtrooper(Other).weapontype=Class'olweapons.osShockRifle'; else skaarjtrooper(Other).weapontype=Class'olweapons.olasmd'; } if ( skaarjtrooper(Other).weapontype==Class'GesBioRifle'){ if (bbiorifle) skaarjtrooper(Other).weapontype=Class'botpack.UT_BioRifle'; else skaarjtrooper(Other).weapontype=Class'olweapons.olgesBioRifle'; } //tourney weaps if ( skaarjtrooper(Other).weapontype==Class'dispersionpistol') //always change...... skaarjtrooper(Other).weapontype=Class'olweapons.oldpistol'; if ( skaarjtrooper(Other).weapontype==Class'shockrifle' && !(skaarjtrooper(Other).weapontype==Class'osshockrifle')) skaarjtrooper(Other).weapontype=Class'olweapons.osshockrifle'; if ( skaarjtrooper(Other).weapontype==Class'pulsegun' && !(skaarjtrooper(Other).weapontype==Class'ospulsegun')) skaarjtrooper(Other).weapontype=Class'olweapons.ospulsegun'; /* if ( skaarjtrooper(Other).weapontype==Class'sniperrifle' && !(skaarjtrooper(Other).weapontype==Class'ossniperrifle')) skaarjtrooper(Other).weapontype=Class'olweapons.ossniperrifle'; */ } return true; } else //anything else forget about it..... return true; if ( Other.IsA('Weapon') ) //set up decal/network weapons..... { if (Other.Isa('tournamentweapon')){ if ( Other.IsA('uiweapons') ){ return true;} //possible options for "new" maps.... /* If (Other.Isa('Olstinger')&&bstingy){ ReplaceWith(Other, "olweapons.osPulseGun"); return false;} If (Other.Isa('Olautomag')&&bmag){ ReplaceWith(Other, "botpack.enforcer"); return false;} If (Other.Isa('Olminigun')&&bmini){ ReplaceWith(Other, "botpack.minigun2"); return false;} If (Other.Isa('Olgesbiorifle')&&bbiorifle){ ReplaceWith(Other, "botpack.ut_biorifle"); return false;} If (Other.Isa('Olasmd')&&basmd){ ReplaceWith(Other, "olweapons.osshockrifle"); return false;} If (Other.Isa('Oleightball')&&beball){ ReplaceWith(Other, "botpack.ut_eightball"); return false;} If (Other.Isa('Olflakcannon')&&bflak){ ReplaceWith(Other, "botpack.ut_flakcannon"); return false;} If (Other.Isa('Olrazorjack')&&brazor){ ReplaceWith(Other, "botpack.ripper"); return false;} If (Other.Isa('Olrifle')&&brifle){ ReplaceWith(Other, "olweapons.ossniperrifle"); return false;} return true; } */ if ( Other.class==class'pulsegun') //set up UT: SP stuff for old new maps..... { ReplaceWith(Other, "olweapons.OSPulseGun"); return false; } /* if ( Other.IsA('sniperrifle')&&!Other.Isa('OSsniperrifle')) { ReplaceWith( Other, "olweapons.OSSniperRifle" ); return false; } */ if ( Other.class==class'shockrifle') { ReplaceWith( Other, "olweapons.osShockRifle" ); return false; } return true;} if ( Other.class==class'Stinger') //set up decal/network weapons..... { if (bstingy) ReplaceWith(Other, "olweapons.OSPulseGun"); else ReplaceWith(Other, "olweapons.olstinger"); return false; } if ( Other.class==class'Rifle') { if (brifle) ReplaceWith( Other, "botpack.SniperRifle" ); else ReplaceWith( Other, "olweapons.olRifle" ); return false; } if ( Other.class==class'Razorjack' ) { if (brazor) ReplaceWith(Other, "botpack.ripper"); else ReplaceWith( Other, "olweapons.olrazorjack" ); return false; } if (other.class==class'quadshot'){ //some maps had this? ReplaceWith(Other,"olweapons.olquadshot"); return false; } if ( Other.class==class'Minigun') { if (bmini) ReplaceWith( Other, "botpack.Minigun2" ); else ReplaceWith( Other, "olweapons.olMinigun" ); return false; } if ( Other.class==class'AutoMag') { if (bmag) ReplaceWith( Other, "botpack.Enforcer" ); else ReplaceWith( Other, "olweapons.olautomag" ); return false; } if ( Other.class==class'Eightball') { if (beball) ReplaceWith( Other, "botpack.UT_Eightball" ); else ReplaceWith( Other, "olweapons.olEightball" ); return false; } if ( Other.class==class'FlakCannon') { if (bflak) ReplaceWith( Other, "botpack.UT_flakcannon" ); else ReplaceWith( Other, "olweapons.olFlakCannon" ); return false; } if ( Other.class==class'ASMD') { if (basmd) ReplaceWith( Other, "olweapons.osShockRifle" ); else ReplaceWith( Other, "olweapons.olasmd" ); return false; } if ( Other.class==class'GesBioRifle' ) { if (bbiorifle) ReplaceWith( Other, "botpack.UT_BioRifle" ); else ReplaceWith( Other, "olweapons.olgesBioRifle" ); return false; } if ( Other.class==class'dispersionpistol' ){ //for Vrikers where you pick it up...... ReplaceWith( Other, "olweapons.oldpistol" ); return false;} return true; //some other wierd weapon that got in here :D } //ammo if ( Other.IsA('Ammo')) //ammo sets for correct item place....... { if (string(Ammo(Other).PickupSound)~="UnrealShare.Pickups.AmmoSnd") { //fix up this stuff..... Ammo(Other).PickupSound=Sound'BotPack.Pickups.AmmoPick'; Ammo(Other).bClientAnim=True; } if ( Other.IsA('TournamentAmmo') ) //for UT: SP....... { if ( Other.IsA('shockcore')){ //check not default ammo... shockcore(other).icon=Texture'UnrealShare.Icons.I_ASMD'; return true; } if ( Other.isa('RocketPack')) { RocketPack(Other).UsedInWeaponSlot[5]=0; RocketPack(Other).UsedInWeaponSlot[9]=1; RocketPack(Other).Icon=Texture'UnrealShare.Icons.I_RocketAmmo'; return true; } if ( Other.IsA('Pammo')) { Pammo(Other).UsedInWeaponSlot[3]=0; Pammo(Other).UsedInWeaponSlot[5]=1; Pammo(Other).Icon=Texture'pulseicon'; //ph34r |\/|y 1c0|\| |\/|4k1|\|9 5k1llz!!!!!!! return true; } if ( Other.IsA('bladehopper')) {bladehopper(other).UsedInWeaponSlot[7]=0; bladehopper(other).UsedInWeaponSlot[6]=1; bladehopper(other).Icon=Texture'UnrealI.Icons.I_RazorAmmo'; return true; } if ( Other.IsA('bulletbox')) { bulletbox(other).UsedInWeaponSlot[9]=0; bulletbox(other).UsedInWeaponSlot[0]=1; return true; } if ( Other.IsA('Flakammo')) { flakammo(other).UsedInWeaponSlot[6]=0; flakammo(other).UsedInWeaponSlot[8]=1; flakammo(other).Icon=Texture'UnrealI.Icons.I_FlakAmmo'; return true; } if ( Other.IsA('miniammo')) { miniammo(other).UsedInWeaponSlot[0]=0; miniammo(other).UsedInWeaponSlot[7]=1; miniammo(other).Icon=Texture'UnrealShare.Icons.I_ShellAmmo'; return true; } if ( Other.IsA('bioammo')) { bioammo(other).UsedInWeaponSlot[8]=0; bioammo(other).UsedInWeaponSlot[3]=1; bioammo(other).Icon=Texture'UnrealI.Icons.I_SludgeAmmo'; return true;} return true; } if ( Other.IsA('ASMDAmmo')&& !Other.IsA('Defaultammo')&&basmd ){ //check not default ammo... ReplaceWith( Other, "botpack.ShockCore" ); return false; } if ( Other.IsA('RocketCan')&&beball) { ReplaceWith( Other, "botpack.RocketPack" ); return false; } if ( Other.IsA('StingerAmmo') &&bstingy) { ReplaceWith(Other, "botpack.PAmmo"); //no icon :( anyone? return false; } if ( Other.IsA('RazorAmmo')&&brazor) {ReplaceWith( Other, "botpack.BladeHopper" ); return false; } if ( Other.IsA('RifleRound') &&brifle) { ReplaceWith( Other, "botpack.RifleShell" ); return false; } if ( Other.IsA('RifleAmmo')&&!Other.IsA('RifleRound')&&brifle) { ReplaceWith( Other, "botpack.bulletbox" ); return false; } if ( Other.IsA('FlakBox')&&!Other.Isa('flakshellammo')&&bflak) { ReplaceWith( Other, "botpack.FlakAmmo" ); return false; } if (Other.Isa('flakshellammo')&&bflak) { ReplaceWith( Other, "olweapons.OSFlakshellAmmo" ); return false; } if ( Other.IsA('ShellBox')&&!Other.Isa('clip')&&Other.Location != vect(0,0,0)&&Other.owner==None ) { if(bmag){ ReplaceWith( Other, "botpack.MiniAmmo" ); return false; } if (bmini){ //only set slots..... miniammo(other).UsedInWeaponSlot[0]=0; miniammo(other).UsedInWeaponSlot[7]=1; return true;} } if ( Other.IsA('Clip') &&bmag&&Other.Location != vect(0,0,0)&&Other.owner==None ) { if (bmag){ ReplaceWith( Other, "botpack.EClip" ); return false; } if (bmini){ //only set slots..... miniammo(other).UsedInWeaponSlot[0]=0; miniammo(other).UsedInWeaponSlot[7]=1; return true;} } if ( Other.IsA('Sludge')&&bbiorifle) { ReplaceWith( Other, "botpack.bioammo" ); return false;} return true; //other stuff... } //items if ( Other.IsA('pickup') ) { if (Other.Isa('armor2')){ //icon..... armor2(other).Icon=Texture'UnrealShare.Icons.I_Armor'; return true;} if (Other.Isa('thighpads')){ //stronger pads...... (kev suit standarts) thighpads(other).Icon=Texture'UnrealShare.Icons.I_kevlar'; //to stop confusion :D return true;} if ( Other.IsA('Tournamentpickup') ) //sure ok :D return true; if ( Other.IsA('JumpBoots') &&bjump) { ReplaceWith( Other, "Botpack.UT_JumpBoots" ); return false; } if ( Other.IsA('Amplifier')&&!Other.Isa('OSamplifier')) { if (bdamage)ReplaceWith( Other, "Botpack.UDamage" );else ReplaceWith( Other, "olweapons.osamplifier" ); //special amp (supports the olweapons...) return false; } if ( Other.IsA('WeaponPowerUp')&&!Other.Isa('OSDispersionpowerup') ){ replacewith( Other, "olWeapons.OsDispersionpowerup");//supports oldpistol return false; } if ( Other.IsA('KevlarSuit') &&bpad) { ReplaceWith( Other, "Botpack.ThighPads"); return false; } if ( Other.IsA('SuperHealth')&&bmegahealth) { ReplaceWith( Other, "Botpack.HealthPack" ); return false; } if ( Other.IsA('Armor')&&barmor) { ReplaceWith( Other, "Botpack.Armor2" ); return false; } if ( Other.class==class'unrealshare.health' &&bmed) { ReplaceWith( Other, "Botpack.MedBox" ); return false; } if ( Other.IsA('ShieldBelt') &&!Other.Isa('Powershield')) { //shieldbelt effects.... if (bshield) ReplaceWith( Other, "olweapons.osUT_ShieldBelt" ); else ReplaceWith( Other, "olweapons.osShieldBelt" ); return false; } if ( Other.IsA('Powershield')){ if (bshield) ReplaceWith( Other, "olweapons.shieldBeltpower" ); else ReplaceWith( Other, "olweapons.ospowershield" ); return false; } return true; //other inventory (like invis.) that's not allowed to change for cheating reasons....... } bSuperRelevant = 0; return true; } //keeps even more inportant stuff...... function bool ReplaceWith(actor Other, string aClassName) { local Actor A; local class aClass; if (PropSetup) return false; if ( (level.game.Difficulty==0 && !Other.bDifficulty0 ) //as gameinfo's isn't called...we'll just make up for it here..... || (level.game.Difficulty==1 && !Other.bDifficulty1 ) || (level.game.Difficulty==2 && !Other.bDifficulty2 ) || (level.game.Difficulty==3 && !Other.bDifficulty3 ) || (!Other.bSinglePlayer && (Level.NetMode==NM_Standalone) ) || (!Other.bNet && ((Level.NetMode == NM_DedicatedServer) || (Level.NetMode == NM_ListenServer)) ) || (!Other.bNetSpecial && (Level.NetMode==NM_Client)) ) return False; if( FRand() > Other.OddsOfAppearing ) return False; if ( Other.IsA('Inventory') && (Other.Location == vect(0,0,0)) ) return false; aClass = class(DynamicLoadObject(aClassName, class'Class')); if ( aClass != None ) A = Spawn(aClass,,Other.tag,Other.Location, Other.Rotation); if ( Other.IsA('Inventory') ) { if ( Inventory(Other).MyMarker != None ) { Inventory(Other).MyMarker.markedItem = Inventory(A); if ( Inventory(A) != None ) { Inventory(A).MyMarker = Inventory(Other).MyMarker; A.SetLocation(A.Location + (A.CollisionHeight - Other.CollisionHeight) * vect(0,0,1)); } Inventory(Other).MyMarker = None; } else if ( A.IsA('Inventory') &&Inventory(Other).bhelditem) { Inventory(A).bHeldItem = true; Inventory(A).Respawntime = 0.0; } } if ( A != None ) { if (A.Isa('thighpads')){ //kev suit pads..... Thighpads(A).charge=100; Thighpads(A).armorabsorption=80; Thighpads(A).AbsorptionPriority=6;} if (A.Isa('armor2')) armor2(A).ArmorAbsorption=90; if (A.Isa('udamage')) { //9 sec Udamage...... udamage(A).charge=90; udamage(A).finalcount=2; } if (a.IsA('minigun2')&&!bmag) //if we have automags we gotta do this..... minigun2(a).AmmoName=Class'UnrealShare.ShellBox'; if (a.IsA('enforcer')&&!bmini) //if we have minigunz we gotta do this..... enforcer(a).AmmoName=Class'UnrealShare.ShellBox'; if (a.Isa('olautomag')&&Other.Isa('automag')&&automag(other).hitdamage==70){//h4x for Ballad of Ash olautomag(A).hitdamage=automag(other).hitdamage; olautomag(A).altfiresound=automag(other).AltFireSound; olautomag(A).firesound=automag(other).FireSound; olautomag(A).misc1sound=automag(other).Misc1Sound; olautomag(A).misc2sound=automag(other).Misc2Sound; olautomag(A).selectsound=automag(other).SelectSound; } A.event = Other.event; A.tag = Other.tag; A.RotationRate= Other.RotationRate; ///other important info..... return true; } return false; } //quick save and quickload...... (a cheat code too!!!!) function Mutate(string MutateString, PlayerPawn Sender) { local class Packclass; if (MutateString ~= "quicksave") { if ( (sender.Health > 0) && (Level.NetMode == NM_Standalone)) { class'olroot.OldSkoolSlotClientWindow'.default.quicksavetype=class'oldskool.oldskoolnewgameclientwindow'.default.SelectedPackType; //obvious why this is needed :D class'olroot.OldSkoolSlotClientWindow'.static.staticsaveconfig(); sender.ClientMessage("Saved game"); sender.ConsoleCommand("SaveGame 1000"); } } if ((MutateString ~= "quickload")&&(Level.NetMode == NM_Standalone)&&class'olroot.OldSkoolSlotClientWindow'.default.quicksavetype!=""){ if (!(class'olroot.OldSkoolSlotClientWindow'.default.quicksavetype ~= "Custom")) PackClass = Class(DynamicLoadObject(class'olroot.OldSkoolSlotClientWindow'.default.quicksavetype, class'Class')); if ((packclass != None)&&(packclass.default.loadrelevent)) { //a gameinfo should turn this off..... packclass.default.bLoaded = true; packclass.static.StaticSaveConfig(); } //sender.ConsoleCommand( "open ..\\save\\save1000.usa");} sender.ClientTravel( "?load=1000", TRAVEL_Absolute, false);} if (MutateString ~= "spyd00d" && Level.Game.Isa('singleplayer2')){ sender.ClientMessage(spymessage[byte(Singleplayer2(level.game).spectateallowed)]); Singleplayer2(level.game).spectateallowed=!Singleplayer2(level.game).spectateallowed; } if ( NextMutator != None ) NextMutator.Mutate(MutateString, Sender); } //check skaarj feign for autotaunt. function MutatorTakeDamage( out int ActualDamage, Pawn Victim, Pawn InstigatedBy, out Vector HitLocation, out Vector Momentum, name DamageType) { local int NextTaunt, i; if (Victim.isa('skaarj')&&TournamentPlayer(InstigatedBy)!=none&&TournamentPlayer(InstigatedBy).bAutoTaunt&&instigatedby.health>0&& (Level.TimeSeconds - SinglePlayer2(level.game).LastTauntTime > 3) &&DamageType != 'gibbed'&&(addvelocity(momentum,victim.velocity).z>120) &&victim.health-actualdamage< 0.4 * victim.Default.Health){ //at this point try the random test. animsequence=victim.animsequence; //backups velocity=victim.velocity; victim.animsequence='Lunge'; victim.velocity.z=121; victim.health-=actualdamage; skaarj(victim).PlayTakeHit(0,hitlocation,actualdamage); //set back: victim.velocity=velocity; velocity=vect(0,0,0); victim.health+=actualdamage; //then will be subtracted again :P if (victim.animsequence=='death2'){ //fake taunt! SinglePlayer2(level.game).LastTauntTime = Level.TimeSeconds; NextTaunt = Rand(class(InstigatedBy.PlayerReplicationInfo.VoiceType).Default.NumTaunts); for ( i=0; i<4; i++ ) //keeps taunts unique..... { if ( NextTaunt == SinglePlayer2(level.game).LastTaunt[i] ) NextTaunt = Rand(class(InstigatedBy.PlayerReplicationInfo.VoiceType).Default.NumTaunts); if ( i > 0 ) SinglePlayer2(level.game).LastTaunt[i-1] = SinglePlayer2(level.game).LastTaunt[i]; } SinglePlayer2(level.game).LastTaunt[3] = NextTaunt; InstigatedBy.SendGlobalMessage(None, 'AUTOTAUNT', NextTaunt, 5); } else victim.animsequence=animsequence; //set back to old. (only this case as need to force skaarj to feign) animsequence=''; //don't want something getting messed up :P } if ( NextDamageMutator != None ) //might as well. NextDamageMutator.MutatorTakeDamage( ActualDamage, Victim, InstigatedBy, HitLocation, Momentum, DamageType ); } function vector AddVelocity( vector NewVelocity, vector current) { if ( (current.Z > 380) && (NewVelocity.Z > 0) ) NewVelocity.Z *= 0.5; current += NewVelocity; } function bool IsRelevant(Actor Other, out byte bSuperRelevant) { local bool bResult; // allow mutators to remove actors bResult = CheckReplacement(Other, bSuperRelevant); if ( !propSetup&&bResult && (NextMutator != None) ) bResult = NextMutator.IsRelevant(Other, bSuperRelevant); return bResult; } M c// ============================================================ // oldskool.SinglePlayer2: duel sp and vortex rikers.... mutator handles the big stuff..... // ============================================================ class SinglePlayer2 extends UnrealGameInfo; //tourney tele effects var float LastTauntTime; var int LastTaunt[4]; //taunt holder..... var bool spectateallowed; var bool bloadingsave; //is a save loaded? based on state before player possession var config bool SpTaunts; //taunts/headshots? var config bool Pause; //load save as pausing? function float PlaySpawnEffect(inventory Inv) //note to self: save this for co-op..... { spawn( class 'EnhancedReSpawn',Inv,, Inv.Location ); return 0.3; } function bool CanSpectate( pawn Viewer, actor ViewTarget ) //blockz spectating unless cheat is activated... { return (spectateallowed || Viewer.PlayerReplicationInfo.bIsSpectator); } function PreCacheReferences() { //never called - here to force precaching of meshes spawn(class'olweapons.olautomag'); spawn(class'olweapons.oldpistol'); spawn(class'olweapons.oleightball'); spawn(class'olweapons.olflakcannon'); spawn(class'olweapons.olrazorjack'); spawn(class'olweapons.olasmd'); spawn(class'olweapons.olgesbiorifle'); spawn(class'olweapons.olrifle'); spawn(class'olweapons.olminigun'); } function RegisterDamageMutator(Mutator M) //never change OSA 3 SP oldskool as top mutator. { if (spoldskool(m)!=none) damagemutator=m; //always spawned fist. else{ M.NextDamageMutator = Damagemutator.nextDamageMutator; Damagemutator.nextDamageMutator = M; } } function PlayTeleportEffect( actor Incoming, bool bOut, bool bSound) //Ut tele effect..... { local UTTeleportEffect PTE; if ( Incoming.bIsPawn && (Incoming.Mesh != None)&& (Level.DefaultGameType != class'endgame')) { if ( bSound ) { PTE = Spawn(class'UTTeleportEffect',,, Incoming.Location, Incoming.Rotation); PTE.Initialize(Pawn(Incoming), bOut); Incoming.PlaySound(sound'Resp2A',, 10.0); } } } function Killed(pawn killer, pawn Other, name damageType) { local inventory scoreholder; local int NextTaunt, i; local bool bAutoTaunt; if ( (damageType == 'Decapitated') && (Killer != Other) && (Killer != None) &&(Killer.isa('playerpawn')) && SpTaunts) //play headshot thingy :D Killer.ReceiveLocalizedMessage( class'DecapitationMessage' ); super.Killed(killer, Other, damageType); bAutoTaunt = (SPTaunts&&Killer.isa('tournamentplayer')); //stupid auto taunting if (bAutoTaunt && (Killer != Other) && (DamageType != 'gibbed') && (Killer.Health > 0) && (Level.TimeSeconds - LastTauntTime > 3) ) { LastTauntTime = Level.TimeSeconds; NextTaunt = Rand(class(Killer.PlayerReplicationInfo.VoiceType).Default.NumTaunts); for ( i=0; i<4; i++ ) //keeps taunts unique..... { if ( NextTaunt == LastTaunt[i] ) NextTaunt = Rand(class(Killer.PlayerReplicationInfo.VoiceType).Default.NumTaunts); if ( i > 0 ) LastTaunt[i-1] = LastTaunt[i]; } LastTaunt[3] = NextTaunt; killer.SendGlobalMessage(None, 'AUTOTAUNT', NextTaunt, 5); } if ( killer.IsA('PlayerPawn') ) { scoreholder = PlayerPawn(killer).FindInventoryType(class 'scorekeeper'); scorekeeper(scoreholder).scoreit(Other); } } //can't super. all this does is stop the scorekeeper from being destroyed...... function DiscardInventory(Pawn Other) { local actor dropped; local inventory Inv; local weapon weap; local float speed; if ( Other.Weapon != None ) Other.Weapon.PickupViewScale *= 0.7; if( Other.DropWhenKilled != None ) { dropped = Spawn(Other.DropWhenKilled,,,Other.Location); Inv = Inventory(dropped); if ( Inv != None ) { Inv.RespawnTime = 0.0; //don't respawn Inv.BecomePickup(); } if ( dropped != None ) { dropped.RemoteRole = ROLE_DumbProxy; dropped.SetPhysics(PHYS_Falling); dropped.bCollideWorld = true; dropped.Velocity = Other.Velocity + VRand() * 280; } if ( Inv != None ) Inv.GotoState('PickUp', 'Dropped'); } if( (Other.Weapon!=None) && (Other.Weapon.Class!=Level.Game.BaseMutator.MutatedDefaultWeapon()) && Other.Weapon.bCanThrow ) { speed = VSize(Other.Velocity); weap = Other.Weapon; if (speed != 0) weap.Velocity = Normal(Other.Velocity/speed + 0.5 * VRand()) * (speed + 280); else { weap.Velocity.X = 0; weap.Velocity.Y = 0; weap.Velocity.Z = 0; } Other.TossWeapon(); if ( weap.PickupAmmoCount == 0 ) weap.PickupAmmoCount = 1; } Other.Weapon = None; Other.SelectedItem = None; for( Inv=Other.Inventory; Inv!=None; Inv=Inv.Inventory ) { if ( !Inv.IsA('scorekeeper') ) Inv.Destroy();} } function AddDefaultInventory(pawn PlayerPawn ) { // @@@ Psychic_313: be kind and give them a translator too? // I've commented it out here // (copied from CoOpGame2) local Translator newTranslator; local scorekeeper scoreholder; if ( Level.DefaultGameType != class'VRikersGame' ) Super.AddDefaultInventory(PlayerPawn); //add the pistol if not vrkersgame.... if ( playerpawn.IsA('Spectator') || playerpawn.FindInventoryType(class'scorekeeper') != None ) return; scoreholder = Spawn(class'scorekeeper',,, Location); scoreholder.bHeldItem = true; scoreholder.GiveTo(playerpawn); /* Psychic_313: add this? // Spawn translator. if( PlayerPawn.IsA('Spectator') || PlayerPawn.FindInventoryType(class'Translator') != None ) return; newTranslator = Spawn(class'Translator',,, Location); if( newTranslator != None ) { newTranslator.bHeldItem = true; newTranslator.GiveTo( PlayerPawn ); PlayerPawn.SelectedItem = newTranslator; newTranslator.PickupFunction(PlayerPawn); } */ } event playerpawn Login ( string Portal, string Options, out string Error, class SpawnClass ) { local PlayerPawn NewPlayer; local string InVoice; if ( ClassIsChildOf(SpawnClass, class'Spectator') ) { if ( !ClassIsChildOf( SpawnClass, class'chSpectator')&&!classischildof(spawnclass,class'messagingspectator' )) //force unreal spectator.... (fix me!) SpawnClass = class'chSpectator'; } /* Psychic_313: changed to remove potential OldModels dependency else if ( !ClassIsChildOf(SpawnClass, class'TournamentPlayer') || Left(string(spawnclass),6) ~= "u4etc."|| ClassIsChildOf(SpawnClass, class'oldskool.sktrooper')) //don't allow U4E or sktrooperz*/ else if ( !ClassIsChildOf(SpawnClass, class'TournamentPlayer') || ((Left(string(spawnclass),6) ~= "u4etc."|| SpawnClass.default.Mesh==LodMesh'UnrealI.sktrooper')&&bhumansonly) || !SpawnClass.default.bSinglePlayer) //don't allow U4E or sktrooperz, unless hacked so bhumansonly=false SpawnClass = DefaultPlayerClass; NewPlayer = Super.Login(Portal, Options, Error, SpawnClass); //if (!newplayer.isinstate('invalidstate')) //bLoadingSave=true; //HUD loadcheck. bloadingsave=(newplayer.myhud!=none); if ( NewPlayer != None ) { if ( !NewPlayer.IsA('Spectator') ) { InVoice = ParseOption ( Options, "Voice" ); if ( InVoice != "" ) NewPlayer.PlayerReplicationInfo.VoiceType = class(DynamicLoadObject(InVoice, class'Class')); if ( NewPlayer.PlayerReplicationInfo.VoiceType == None ) NewPlayer.PlayerReplicationInfo.VoiceType = class(DynamicLoadObject(NewPlayer.VoiceType, class'Class')); if ( NewPlayer.PlayerReplicationInfo.VoiceType == None ) NewPlayer.PlayerReplicationInfo.VoiceType = class(DynamicLoadObject("Botpack.VoiceMaleOne", class'Class')); } else if (newplayer.isa('chspectator')){ //we have to swap the spectator's HUD newplayer.hudtype=class'oldskool.oldskoolspectatorhud'; If (newplayer.myhud!=None) //if it is then the hudtype swap will fix it anyway :D newplayer.myhud.destroy(); } } if ( (NewPlayer != None && Level.DefaultGameType == class'VRikersGame') && (NewPlayer.Health == NewPlayer.Default.Health) ) { NewPlayer.PlayerRestartState = 'PlayerWaking'; NewPlayer.ViewRotation.Pitch = 16384; if (!bLoadingSave) //save h4ck NewPlayer.Health = 12; } return NewPlayer; } event AcceptInventory(pawn PlayerPawn) //allow mutator to analyze....... { //default accept all inventory except default weapon (spawned explicitly) local inventory inv; local byte useless; if (level.title~="Ending Sequence"){//accept no inventory in this case for ( Inv=PlayerPawn.Inventory; Inv!=None; Inv=Inv.Inventory ) if (!inv.isa('scorekeeper')) Inv.Destroy(); return; } // Initialize the inventory. AddDefaultInventory( PlayerPawn ); // analize........ if (basemutator.isa('spoldskool')){ spoldskool(BaseMutator).PropSetup=true; for ( Inv=PlayerPawn.Inventory; Inv!=None; Inv=Inv.Inventory ) BaseMutator.IsRelevant(inv, useless); spoldskool(BaseMutator).PropSetup=false; } log( "All inventory from" @ PlayerPawn.PlayerReplicationInfo.PlayerName @ "is accepted" ); } event PostLogin( playerpawn NewPlayer ){ //local PlayerPawn NewPlayer; local Pawn P; local spoldskool SP; local mutator m; local scorch d; //save fix: if (NewPlayer.player.IsA('WINDOWSVIEWPORT')){ if (!(NewPlayer.ConsoleCommand("get core.system savepath")~="..\\save")) NewPlayer.ConsoleCommand("set core.system savepath ..\\Save"); } else if (NewPlayer.player.IsA('MACVIEWPORT')){ if (!(NewPlayer.ConsoleCommand("get core.system savepath")~=":save")) NewPlayer.ConsoleCommand("set core.system savepath :Save"); } if (class'spoldskool'.default.unair&&!(string(class)~="legacy.LegacySP")&&!IsA('tvsp')) //2.3 stuff NewPlayer.Aircontrol=class'pawn'.default.aircontrol; if (bloadingsave){ //do NOT set music when loading a save. (it is already set :P) only set fade to swap newplayer.Transition=MTRAN_FastFade; //saving property hacks to prevent messing up of options from saves (resets defaults). for (m=basemutator;m!=none;m=m.nextmutator) if (m.isa('spoldskool')){ SP=Spoldskool(M); break; } NewPlayer.SetPause(Pause); //new in 2.3 if (SP==none){ log ("WARNING: no SP mutator!"); return; } if (class'spoldskool'.default.PermaDecals) //find and reattach decals! foreach AllActors(class'scorch',D){ D.Disable('destroyed'); //crash bug. if (D.IsA('directionalblast')) D.destroy(); //impossible to reattach else { D.attachtosurface(); D.Enable('destroyed'); } } if (!SP.NewVersion){ //old save. update options. SP.SetupCurrent(); return; } SP.bBioRifle=SP.oBiorifle; SP.bASMD=SP.oASMD; SP.bStingy=SP.ostingy; SP.bRazor=SP.oRazor; SP.bFlak=SP.oFlak; SP.bmini=SP.omini; SP.bEball=SP.oEball; SP.bRifle=SP.oRifle; SP.bdamage=SP.odamage; SP.bpad=SP.opad; SP.barmor=SP.oarmor; SP.bmag=SP.omag; SP.bshield=SP.oshield; SP.SaveConfig(); return; } // Start player's music. else If (Level.Song!=None) NewPlayer.ClientSetMusic( Level.Song, Level.SongSection, Level.CdTrack, MTRAN_Fade ); else NewPlayer.ClientSetMusic( Music'olroot.null', 0, 0, MTRAN_Fade ); } //OSA 2.25: redefault options on leaving level. (again changing levels in game would get b0rked.): function SendPlayer( PlayerPawn aPlayer, string URL ){ local spoldskool SP; local mutator m; for (m=basemutator;m!=none;m=m.nextmutator) if (m.isa('spoldskool')){ SP=Spoldskool(M); break; } if (SP==none) return; class'spoldskool'.default.bBioRifle=SP.oBiorifle; class'spoldskool'.default.bASMD=SP.oASMD; class'spoldskool'.default.bStingy=SP.ostingy; class'spoldskool'.default.bRazor=SP.oRazor; class'spoldskool'.default.bFlak=SP.oFlak; class'spoldskool'.default.bmini=SP.omini; class'spoldskool'.default.bEball=SP.oEball; class'spoldskool'.default.bRifle=SP.oRifle; class'spoldskool'.default.bdamage=SP.odamage; class'spoldskool'.default.bpad=SP.opad; class'spoldskool'.default.barmor=SP.oarmor; class'spoldskool'.default.bmag=SP.omag; class'spoldskool'.default.bshield=SP.oshield; class'spoldskool'.static.staticsaveconfig(); aPlayer.ClientTravel( URL, TRAVEL_Relative, true ); } //Psychic_313: changed default.DefaultPlayerClass to Tournament guy //so players lacking OldModels aren't left out. Sorry, Dante fans :-) M z// ============================================================ // oldskool.sktrooper: da skaarj // Psychic_313: DEPRECATED. DON'T USE ME. // ============================================================ class SkTrooper expands skinsetclass; //OMG!!!!! The only converted model with CODE!!!!!!!!! :) //sets the collision size to the Human one... function prebeginplay(){ //sets the skaarj more humanlike if (!(class'oldskool.skinconfiguration'.default.skaarjprop)&&Role == ROLE_Authority){ default.Drawscale=0.75; default.jumpz=325.000000; default.health=100; default.Buoyancy=99.0; default.baseeyeheight=27.000000; default.EyeHeight=27.000000; Drawscale=0.75; jumpz=325.000000; health=100; Buoyancy=99.0; baseeyeheight=27.000000; EyeHeight=27.000000; Setcollisionsize(17,39); } Super.PrebeginPlay(); } simulated function WalkStep() { local sound step; local float decision; /* if ( Role < ROLE_Authority ) return; */ if ( FootRegion.Zone.bWaterZone ) { PlaySound(sound 'LSplash', SLOT_Interact, 1, false, 1000.0, 1.0); return; } PlaySound(Footstep1, SLOT_Interact, 0.1, false, 800.0, 1.0); } simulated function RunStep() { local sound step; local float decision; /*if ( Role < ROLE_Authority ) return; */ if ( FootRegion.Zone.bWaterZone ) { PlaySound(sound 'LSplash', SLOT_Interact, 1, false, 1000.0, 1.0); return; } PlaySound(Footstep1, SLOT_Interact, 0.7, false, 800.0, 1.0); } //----------------------------------------------------------------------------- // Animation functions function PlayDodge(eDodgeDir DodgeMove) { Velocity.Z = 210; if ( DodgeMove == DODGE_Left ) PlayAnim('LeftDodge', 1.35, 0.06); else if ( DodgeMove == DODGE_Right ) PlayAnim('RightDodge', 1.35, 0.06); else if ( DodgeMove == DODGE_Forward ) PlayAnim('Lunge', 1.2, 0.06); else PlayDuck(); } function PlayTurning() { BaseEyeHeight = Default.BaseEyeHeight; PlayAnim('Turn', 0.3, 0.3); } function TweenToWalking(float tweentime) { BaseEyeHeight = Default.BaseEyeHeight; if (Weapon == None) TweenAnim('Walk', tweentime); else if ( Weapon.bPointing || (CarriedDecoration != None) ) TweenAnim('WalkFire', tweentime); else TweenAnim('Walk', tweentime); } function TweenToRunning(float tweentime) { local vector X,Y,Z, Dir; GetAxes(Rotation, X,Y,Z); Dir = Normal(Acceleration); BaseEyeHeight = Default.BaseEyeHeight; if (bIsWalking) TweenToWalking(0.1); else if (Weapon == None) PlayAnim('Jog', 1, tweentime); else if ( Weapon.bPointing ) PlayAnim('JogFire', 1, tweentime); else PlayAnim('Jog', 1, tweentime); if ( (Dir Dot X < 0.75) && (Dir != vect(0,0,0)) ) { // strafing if ( Dir Dot X < -0.75 ){ if ( Weapon.bPointing ) LoopAnim('JogFire',1); if (!Weapon.bPointing) LoopAnim('Jog',1);} else if ( Dir Dot Y > 0 ){ if ( Weapon.bPointing) PlayAnim('StrafeRightfr', 1.75, tweentime); else PlayAnim('StrafeRight', 1.75, tweentime);} else{ if ( Weapon.bPointing) PlayAnim('StrafeLeftfr', 1.75, tweentime); else PlayAnim('StrafeLeft', 1.75, tweentime);} } } function PlayWalking() { BaseEyeHeight = Default.BaseEyeHeight; if (Weapon == None) LoopAnim('Walk',1.1); else if ( Weapon.bPointing || (CarriedDecoration != None) ) LoopAnim('WalkFire',1.1); else LoopAnim('Walk',1.1); } function PlayRunning() { local vector X,Y,Z, Dir; BaseEyeHeight = Default.BaseEyeHeight; GetAxes(Rotation, X,Y,Z); Dir = Normal(Acceleration); if ( Weapon.bPointing ) LoopAnim('JogFire',1.1); else LoopAnim('Jog',1.1); if ( (Dir Dot X < 0.75) && (Dir != vect(0,0,0)) ) { // strafing if ( Dir Dot X < -0.75 ){ if ( Weapon.bPointing ) LoopAnim('JogFire',-1.0/GroundSpeed,, 0.5); if (!Weapon.bPointing) LoopAnim('Jog',-1.0/GroundSpeed,, 0.5);} else if ( Dir Dot Y > 0 ){ if ( Weapon.bPointing) LoopAnim('StrafeRightfr',-2.5/GroundSpeed,0.1, 1.0); else LoopAnim('StrafeRight',-2.5/GroundSpeed,0.1, 1.0);} else{ if ( Weapon.bPointing) LoopAnim('StrafeLeftfr',-2.5/GroundSpeed,0.1, 1.0); else LoopAnim('StrafeLeft',-2.5/GroundSpeed,0.1, 1.0);} } } function PlayRising() { BaseEyeHeight = 0.4 * Default.BaseEyeHeight; PlayAnim('Getup', 0.7, 0.1); } function PlayFeignDeath() { BaseEyeHeight = 0; PlayAnim('Death2',0.7); } function PlayDying(name DamageType, vector HitLoc) { local carcass carc; local vector X,Y,Z, HitVec, HitVec2D; local float dotp; BaseEyeHeight = Default.BaseEyeHeight; PlayDyingSound(); if ( FRand() < 0.15 ) { PlayAnim('Death',0.7,0.1); return; } // check for big hit if ( (Velocity.Z > 250) && (FRand() < 0.7) ) { PlayAnim('Death2', 0.7, 0.1); carc = Spawn(class 'CreatureChunks',,, Location + CollisionHeight * vect(0,0,0.8), Rotation + rot(3000,0,16384) ); if (carc != None) { carc.Mesh = mesh'SkaarjHead'; carc.Initfor(self); carc.Velocity = Velocity + VSize(Velocity) * VRand(); carc.Velocity.Z = FMax(carc.Velocity.Z, Velocity.Z); ViewTarget = carc; } return; } // check for head hit if ( ((DamageType == 'Decapitated') || (HitLoc.Z - Location.Z > 0.6 * CollisionHeight) )&& !Level.Game.bVeryLowGore ) { DamageType = 'Decapitated'; PlayAnim('Death5', 0.7, 0.1); carc = Spawn(class 'CreatureChunks',,, Location + CollisionHeight * vect(0,0,0.8), Rotation + rot(3000,0,16384) ); if (carc != None) { carc.Mesh = mesh'SkaarjHead'; carc.Initfor(self); carc.Velocity = Velocity + VSize(Velocity) * VRand(); carc.Velocity.Z = FMax(carc.Velocity.Z, Velocity.Z); ViewTarget = carc; } return; } if ( FRand() < 0.15) { PlayAnim('Death3', 0.7, 0.1); return; } GetAxes(Rotation,X,Y,Z); X.Z = 0; HitVec = Normal(HitLoc - Location); HitVec2D= HitVec; HitVec2D.Z = 0; dotp = HitVec2D dot X; if (Abs(dotp) > 0.71) //then hit in front or back PlayAnim('Death3', 0.7, 0.1); else { dotp = HitVec dot Y; if (dotp > 0.0) PlayAnim('Death', 0.7, 0.1); else PlayAnim('Death4', 0.7, 0.1); } } //FIXME - add death first frames as alternate takehit anims!!! 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); } function PlayLanded(float impactVel) { impactVel = impactVel/JumpZ; impactVel = 0.1 * impactVel * impactVel; BaseEyeHeight = Default.BaseEyeHeight; if ( Role == ROLE_Authority ) { if ( impactVel > 0.17 ) PlaySound(LandGrunt, SLOT_Talk, FMin(5, 5 * impactVel),false,1200,FRand()*0.4+0.8); if ( !FootRegion.Zone.bWaterZone && (impactVel > 0.01) ) PlaySound(Land, SLOT_Interact, FClamp(4.5 * impactVel,0.5,6), false, 1000, 1.0); } if ( (GetAnimGroup(AnimSequence) == 'Dodge') && IsAnimating() ) return; if ( (impactVel > 0.06) || (GetAnimGroup(AnimSequence) == 'Jumping') ) TweenAnim('Land', 0.12); else if ( !IsAnimating() ) { if ( GetAnimGroup(AnimSequence) == 'TakeHit' ) AnimEnd(); else TweenAnim('Land', 0.12); } } function PlayInAir() { BaseEyeHeight = Default.BaseEyeHeight; TweenAnim('InAir', 0.4); } function PlayDuck() { BaseEyeHeight = 0; TweenAnim('Duck', 0.25); } function PlayCrawling() { BaseEyeHeight = 0; LoopAnim('DuckWalk'); } function TweenToWaiting(float tweentime) { if( IsInState('PlayerSwimming') || Physics==PHYS_Swimming ) { BaseEyeHeight = 0.7 * Default.BaseEyeHeight; TweenAnim('Swim', tweentime); } else { BaseEyeHeight = Default.BaseEyeHeight; TweenAnim('Firing', tweentime); } } function PlayWaiting() { local name newAnim; if ( bIsTyping ) { PlayChatting(); return; } if( IsInState('PlayerSwimming') || (Physics==PHYS_Swimming) ) { BaseEyeHeight = 0.7 * Default.BaseEyeHeight; LoopAnim('Swim'); } else { BaseEyeHeight = Default.BaseEyeHeight; if ( (Weapon != None) && Weapon.bPointing ) TweenAnim('Firing', 0.3); else { if ( FRand() < 0.2 ) newAnim = 'Breath'; else newAnim = 'Breath2'; if ( AnimSequence == newAnim ) LoopAnim(newAnim, 0.3 + 0.7 * FRand()); else PlayAnim(newAnim, 0.3 + 0.7 * FRand(), 0.25); } } } function Playchatting (){ Loopanim ('shield'); } function PlayFiring() { // switch animation sequence mid-stream if needed if (AnimSequence == 'Jog') AnimSequence = 'JogFire'; else if (AnimSequence == 'Walk') AnimSequence = 'WalkFire'; else if ( AnimSequence == 'InAir' ) TweenAnim('JogFire', 0.03); else if ( (GetAnimGroup(AnimSequence) != 'Attack') && (GetAnimGroup(AnimSequence) != 'MovingAttack') && (GetAnimGroup(AnimSequence) != 'Dodge') && (AnimSequence != 'Swim') ) TweenAnim('Firing', 0.02); } function PlayWeaponSwitch(Weapon NewWeapon) { } function PlaySwimming() { BaseEyeHeight = 0.7 * Default.BaseEyeHeight; LoopAnim('Swim'); } function TweenToSwimming(float tweentime) { BaseEyeHeight = 0.7 * Default.BaseEyeHeight; TweenAnim('Swim',tweentime); } function SwimAnimUpdate(bool bNotForward) { if ( !bAnimTransition && (GetAnimGroup(AnimSequence) != 'Gesture') && (AnimSequence != 'Swim') ) TweenToSwimming(0.1); } XMrz  6 N%!6XOX'1]H]H]H]H]H]H]H]H]H]HX'X'X'X'X'X'X'X'X'X'X'X'11ka "(]sktrooperskiny.skar5)]sktrooperskiny.skaa1mA]sktrooperskins.- --2]sktrooperskiny.skaarj7]sktrooperskiny.| C]Rdo q ApGv W]BotPack.VoiceMale/f J ]$Cm$Al$Aa"3]UnrealI.sktrooper9]Botpack.TrophyBossS Q x ;] SkTrooper^]multimesh.skaarjvoice*]$B}$(BG$BM M v~TU ~-w~*-@W a  ~ ~ W M.~- ~a  A M O| Bk 0ab -ab b ab |Vb,u4etc.rb b- b <| Z { bw<*<a/!D<-(<a'''X HZ VoiceH{X <X r<*<< r<*<Botpack.VoiceMaleOne F< B 6w<*<a<*pLogging in to |The Source Antechamber-@ 'reduce fall damage< M M a M r1LG. ?,?,@BAG G  } . ?,8?,@BAQ. ?,j?,@BAQ  M RLvJ. J]  a j J]   M S~"JJ?,} ?,4} ?,Q?,fQ?,G?,G?, M TGk0RWg [ G?6?6g  M fi Hs\aP a,a%Ti h l aTi h l , &a M XM M g M M qM M Us Y6j $s Q-'z} - m j  $$$@ GW s j  s j   M [// ============================================================ // Oldskool.FemaleTwo: A.K.A. Sonya // Psychic_313: DEPRECATED. DON'T USE ME. // ============================================================ class FemaleTwo extends UnrealFemale; //ahh...no code at all :) M @ w{tyfq rxqxpwmunviseqcpboao`n]mZkVhRfQfOeNdMcJ`JbIaHaF`E_D^C^B]A]@\>[=[;X;Z:Y9X7W6W3T4U3U0R1S0S.R,O,P-R*O)N(M&L%M$L#L!JF!JH JHGDGECD>DCBA@@? > ; < : < 8 <9:8:998767     # $')+-/012578:;<=>?@ABCDEGIKLMOQRS U!V!W!Y"Z"[#\#]$^$_$`%a%b&c&d&e'f'g'h(i(j)k)l)m*n*o*p+q+r,s,t,u-v-w.x.y.z/{/}0~011122333444556|~jtkuhsXjYkUiTh  ! &3z}v{ ~}M ZFvP  Ff f ?, M ahO r* Ar 3-S > ur g-S r r -z r -R r   r  -E 4r -W \r -] r -B r -{ r -A r -@ $r -l Lr -l tr -h r -h r -M r -M  r  &r  Zr L-A W r -l  r -@  r  r -{  Gr 9-h D {r m-B x r -]  r   M Y@M M ]EAUx rEm G s$LUTMenu.ngWorldSecretWindow BBHCHC' $- 'b@  M {UI!|P M NVr VH0Nr o n Hr o n ,* M `TWkl ?. .j -e  -lanplay|.customTppr?Game=oldskool.coopgame2?Mutator=.Tppppp. r?Game=. ?Mutator=.TpT?Listen g.gE@GppppRELAUNCH Te  -server log= $ M H// ============================================================ // OldSkool.Femaleone:They call her "Gina!" // Psychic_313: DEPRECATED. DON'T USE ME. //================================================================= class FemaleOne extends UnrealFemale; M e M M _M M cq@ $Lw|.customqppr?Game=oldskool.coopgame2?Mutator=.qppppp. r?Game=. ?Mutator=.qpq?Listen rd qppq?Checksum=d  g.gERq$( EL""""*j|q* "bc M U @205! 00 D2 >BMD2AB$TDNKD= 0!BNQQT$&&YTQNLD!2 aYZZZa&&aZQd!505A&$$$QZ&&)dTdA 0 0KKY)TaY$'%" LT&$Qd&a(<=   =A$Q$*)$bcI27!52 5 NKMT*kVQY";5 2 M5޶224ǽ0DBKV5޸20&J 00 0 2V82 CA <  ޼[b! A!   Za5L@206 0KaqTKFFAFKB28D,CFBD ຸ2N&[ZfbQMKYQKA޺!DCy.,+X0  &,&FQ)bQNFMTYdfTNMKF 2 NdTKKF B*ܯ.  050BQjyG$gYZqdQTQMLA!5d*cA5 ?pץzrVH3=!22 DTbpm$)j$YZadY&LB2߾DXL$K!N)ט׫|eU6552 $Qqт$fydb'&qcYY$FB ߹MLJLDQ'yܥӘ֦^1!DKboY$bja$Y&QTTFB!2T>Kb.פSE<3!AdZdaTd$Yh$bDDB=!FM!5!Nq../i830 !ALNZgqjfbg)T$M$dqMML= 2 AA60F*ccs/sU;  002!=AKZyсс))danQZaYMDA=5D3 s]PJ&(cVP;5! !!A񁋋m&bYQXZdbY$T$"BA05NdwTYVYHC;0! =!=M$a}}kQQQa&$BA߷5=2 ayX8  7޾ABAf)d%VMQYZQ$M$a&J=22  Aaפ;3߽Q&6  B5 FD= QTDQQQaaQMNKMQJCA20B!׫)5255 22!DFKKK5TgjBZYZ$$A=0D R 6 '2!DBA FKDFFLKC5A'},bDBKTda$ZYY$LD! 2=U5DabAA D!ANbb$FLJ2FN&qeXNNQbd&TQ&Y"855  DF FBΓqLLDAADKTMQTQ'qb$MLKKDDDA5ATYf'ZbaYTY&a5025 == AMdm)aMN$TTY*qaQNLA=50YquTYTZaYJ 2߶ ! AM$aѓ}ma$Q*ؤ+Z$MLDB=M$Y'u}QQQYF 2K$a,ܪ,Z,ؤcKJF ap,mK8 5 KQT'ٳzZT,܄kmۀhTL!3!Qg}bQKD= 55 D!Y͒֡ڤ֧na)fs܊)eecXR"L64fq,})d$K! 02KMA )װђykJCDD2 Zq&byJ!!=! 6062!DD7FMLkա.kJD! A5D&Za,cF!! 2 0ƣTA0=AxܣӜ֢܏]DB!DF  fbqnB! 50 05 cV; 5!M}٣Ԝբ^BBBFDB߶ $gdm]F羽 2 0BD!俽 32 qԠ./cADL!5߹ȁXB<00A B A 2 5 BY.cnרܯЯ۳^CDM翺Fa})B==50߿5 AB!޹!ϵnLK$w֣/n+x%M=< DDN)B 8200GFFG  D8!A!F)(FM+.z%eD侾 BFDNY)Z!0AaDF)b5忶BNYkRK񥥧zyڱzzcXc]⺾ADBDYY}X缹eH!;"  GQ&fq$ qܮ{Xn(#V@ KFBFMM\%M 25ACDB8޺07LYs$MC=FKq|("VzrVC 2!0ɑ550=J050BBF$VQNVR"=Txc;0ݶ!?~p0AL5A6 KK!AM&PM$TC= Daqe%<2 JNl5AKCA ޺ NKZNfd*fBDAJLP  D:BN"A!GZYJDa*oDF' L2޷:2 YC ! GdfMQ˴.Y 32C㏊ !A&DA !Bp,ekx/^=31 2} 02KFJ" BjkH<82q86 ! &ܪU0!"83˓2!<5 ߺ+۳|E6!6  0 G'*L0252 h6003 0 $dB!5K 0 05A!5qR50 #Qi  > B)mB!ƇjAA05 A 0$n2T" Aniݷ AG8Y&" !TD0 05AM $5! 2 2D @ 0KFAALQqb= BADQH 0 D ߺ!ANbXD62B7<2  FNLM$VKF]H  ⶷0 !KNKGM"A FA5 D58!55KLQLFKFJ 62 uyJB!F52QV; 2YLDF=DCDQLDMMD!05_lTF5KM! 2L60)kLJ5!LAK"=0C! OvDFTaFMQ0 ;6Ǵn$C D50 AFMM;0A=525DKp~_aFFT)TAX; 4  jܭiNMD =!!DC!DA !BA KQ)--~QLK&P!!3 <  6*ܳUDL=A佾MJ2   D AB Yΐ-֞g"LK! 0  5FZ,{AFALLDAA! 0045FKA=BDH$ZԜvLDA7Dqh"= BMDA= BKJA55 0BK !Atәԉ=82 (I8LDD 5AAB822޽ADDBKfә!5mX5AAD AF2F&-ҙә=  4F)m6 2=5FKGC62 !-ә$CA  Dfa GBGA2ԗәDL޶5 202!FADM &baD ! 5Fbwpԗӗ%DD9 2TQbTA$g*TFK!!jlיnLM DQ& P2=Zda*KBT'%KAƐ--ԙt.5BYP25<2 TTYf&TKZYA -֟R 5X2!'aQfqdZZJ$&&&Q>l֍^H   F MK=!0TXVkxxqbbV !FQQYD 2_R@ 0 J=FbZL0 GBYrD.*H!F"JJ ~-(<3f)YB!5޸AfZcL KˏxXQb5 !DKB55-v]RH 225*},bZD704 !Tc"<8 Ad]}}D9޼BDTՕu82A  2AZw}dYT7 KB C$51"IsMBDFKXbnb%5B! A,*db[g)N2!KB  !<85YB=AJQaZf֩e&5=<  D*ww,jb BYB5 083dTJ =BN&fd΢֡کqX5 5[jс,)},*KA'&NC0 CfaC5==B&ӠR2Z)wu),u(cX" 2  Y&CB!>Y֠]Z_`WYd(}nP  AY'}с,LYT@! 5 !4'8 Q&MKBFKM&puP F&jy+b%2  DKTuт}YGjjL! ޼丶Fa%;2daNQa$NY)ܳsR2 abkA 2>A00Kj}y,eрaTQ&)&V !0A&R 0&TjYfj)wr8޶5JT̏) MQddM!5GQ)y}uqb&e%TaMD޹ = B2bdZqu)q}X@3AeX )& Z*+*AbQ$!2  ju,s+yc"80DV3M۪hC D&MJFAQ=L ޷0?$'xks)xc! 26 $]]ckh 4 DLLMJDMFDK50Qb*khdb&VH 2 5 36!!AKF7߽DDFLTAGdaMLK8=&hXZ'(;ݶ YZ&dN2 !AXVB20q(URQ<  0BA*%&*(D 52= D )U!H!T˴(V^L8=  220߶b;3325 G*}.kH; !20  QZV!0>)qΓ^߷2D20޷!25T$aqc552202DZa5TMLT,.D 02  AY)]0;;C#frH   MMaq(H6̏h;2MVV@6nUſ!3AI35D 6C;B >J853$323>;e @@ߺ=!=FKM#TNKA4!TTYYd&ZY$ 0&QTQlߺBd&lL464FB6߼C@4MQ 05 0ч"JB55 !NffMFB!=BF6BܬыX1 $*MfKQbdM=00FaP=ۜhH515#f}*b~tYJ0AMp.^36!TYf~Q$YFB FHo}|6 !CMgyujT~lZMA<uQĹ "͇eYZYF5޿0ǣ@Q9=BFa$FQP#YJA0B!R0<445!CJF g'FBTYTLF4J0B XDC=BTFKvT"KJA4KaXTYbTa0= T,aTTwT"F5Y}bTTYJ63KQΰ)QB0}jKB 5 5TPժy}VJ0B)m0F0BJզ.JYj( 800006_L0 ?զDKF5*a;B =8 ݾ5 ̍VզyJDFT53BB޿BGMXzM~]MapMlFB$550LYCtVoC6BN 5FAABMQPC(ݷ!F 65JFaFwpFFL65BM 3 B%]# 620B#D = û D}68 0 ;688 ]5Bv@ 83Q@3 YL9t_5 F ~8 50=FaBBTX  55?FKQ0KCIFLJKJC35`ZFJ0BB 8jVMD5 BFJ5 BlXFaFJߺ8<6L==9=  w`L;53 dBL8FC 30!KA==B[Ԛ`=5 }+ DA8BB0 Ǝ   jX5 KM2M~CF MTKQ 'YB0FؘݶKA!Y#NZA ՟ؕ}D5߹ KMA5llw)[MBTYM5lՖ¸0=fYF00Ola Uu>a ou?a uL?a a c::$ r*-ma  Po-mRm$c- ff&?N-a Y Poca ^ Po M rM M c M M Pia6p%/a0 qq-q- 6q -p,pqp,,qp10p,p,p%*=%=p=ozE=/a0 ff-=%=pa f = =oa a ff=o$tI=*10_ %o[ %=&.=p$=o_ _ =o[ ==[  M oCv/ Cb b ?, M Nr b.Xs.r f Jrs*s,V r  M M M 14- (- 'HCB~ M wF~Xo?C?D?, Da ?66C?D?,2vFa ?,?,?,?, M hM M v@M M xGP*~GF M Dm{`{ Pd JYE-g=er*a!:?m-a!B?ma!:?mYP@?Y#&YP@-a!B?#-a!:?uYd ?%`-a![?mra!c?m-a!Z?ma!Y?m M cM M {~0B#?C  M ~b +:W b   ??b - 'b  M p// ============================================================ // Oldskool.Maletwo: also called ash... // Psychic_313: DEPRECATED. DON'T USE ME. // ============================================================ class MaleTwo extends UnrealMale; //nothing is here...It's the evil blank class :) M 1 - (- (~ M A~^C?"?D?, \Cj?D?, C?,?,?,?, M BCPr~CB M GQgT;d&r*a&!&QbU- w*a&!yQba&!&Q M EM M PkjQ-sB9.-sA9s[a/!U m H}a/!T m Jm LP@@As@@AmP?,@@A4Bs@@AmP@@?,A@@s(BAmP[A M p Cstckwc*Tca/!mca c p ccv!s I"@"@"@"@* " ԍ M ' @@V[DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDK5aaaaaaaaaaaaaaaa((aPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP aaaaaaaaaaaaaaaa"!L)))))))))))))))))))))))))))))))))))))))))) aaaaaaaaaaaaaaaa+)R11111111111111111 11111111111111111111111 aaaaaaaaaaaaaaaa0.X;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;; aaaaaaaaaaaaaaaa54YCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCC! aaaaaaaaaaaaaaaa;8[JJJJJJJJJJJJJJJJJ JJJJJJJJJJJJJJJJJ% aaaaaaaaaaaaaaaa><\LLLLLLLLLLLLLLLLL LLLLLLLLLLLLLLL& aaaaaaaaaaaaaaaaC@\OOOOOOOOOOOOOOOOO OOOOOOOOOOOOOOOOO( aaaaaaaaaaaaaaaaDC\PPPPPPPPPPPPPPPPP PPPPPPPPPPPPPPPPPPP( aaaaaaaaaaaaaaaaGD\SSSSSSSSSSSSSSSSS SSSSSSSSSSSSSSSSSSSSS) aaaaaaaaaaaaaaaaHG\VVVVVVVVVVVVVVVVV VVVVVVVVVVVVVVVVVVVVVVV+ aaaaaaaaaaaaaaaaHG\XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+ aaaaaaaaaaaaaaaaJH7++++++++++++++++++++++++++++++++++++++++++ aaaaaaaaaaaaaaaaG aaaaaaaaaaaaaaaa&&aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa !!!!!!!!!!!"aaaaaaaaaaaaaaaa))))))))))))))))))))))))))))))))))))))))))))&aaaaaaaaaaaaaaaa%11111111111111111111111111111111111111111111)aaaaaaaaaaaaaaaa);;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;[0aaaaaaaaaaaaaaaa-CCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCC^7aaaaaaaaaaaaaaaa 1JJJJJJJJJJJJJJJJJ JJJJJJJJJJJJJJJJJJJJ^;aaaaaaaaaaaaaaaa 4LLLLLLLLLLLLLLLLL LLLLLLLLLLLLLLLLLL^?aaaaaaaaaaaaaaaa 7OOOOOOOOOOOOOOOOO OOOOOOOOOOOOOOOO^Caaaaaaaaaaaaaaaa 8PPPPPPPPPPPPPPPPP PPPPPPPPPPPPPPPPPP^Gaaaaaaaaaaaaaaaa ;SSSSSSSSSSSSSSSSS SSSSSSSSSSSSSSSSSSSS^Haaaaaaaaaaaaaaaa XXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXX^Jaaaaaaaaaaaaaaaa >SSSVVVVXXXXXXXXXXXXXXXXXXXXXXXVVVXXXXXXXXXX^Haaaaaaaaaaaaaaaa!@\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\[Jaaaaaaaaaaaaaaaa??????>???????????>>>>>>>??>>>>>?>???????????J[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTZBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBN6aaaaaaaaaaaaaaaa**_QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ$aaaaaaaaaaaaaaaa'$N******************************************aaaaaaaaaaaaaaaa**Q///////////////// /////////////////////// aaaaaaaaaaaaaaaa/,Q66666666666666666 666666666666666666666 aaaaaaaaaaaaaaaa33Q================= ===================$aaaaaaaaaaaaaaaa66QBBBBBBBBBBBBBBBBB BBBBBBBBBBBBBBBBB'aaaaaaaaaaaaaaaa:6TFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFF'aaaaaaaaaaaaaaaa::TFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFF'aaaaaaaaaaaaaaaa:6TFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFF'aaaaaaaaaaaaaaaa66QBBBBBBBBBBBBBBBBB BBBBBBBBBBBBBBBBBBBBB'aaaaaaaaaaaaaaaa66QBBBBBBBBBBBBBBBBB BBBBBBBBBBBBBBBBBBBBBBB'aaaaaaaaaaaaaaaa66QBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB'aaaaaaaaaaaaaaaa:6,''''''''''''''''''''''''''''''''''''''''''aaaaaaaaaaaaaaaa: aaaaaaaaaaaaaaaa*'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@@M @!)19BJ!R!Z)Z)!B!R)c1c1k1k9k9c9s!!!!B{))))J)R)R1111R1Z1Z9999Z9cBBBBcBkJJJJkRRRRsR{ZZZZ{ZZccccckkkkkksssss{{{{{{{K"@"@"@"@* "Z0 M < @@HO:::::::::::::::::::::::::::::::::::::::::::A-TTTTTTTTTTTTTTTT$$TFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFTTTTTTTTTTTTTTTTD'''''''''''''''''''''''''''''''''''''''''' TTTTTTTTTTTTTTTT'$F,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, TTTTTTTTTTTTTTTT+)H33333333333333333333333333333333333333 TTTTTTTTTTTTTTTT--M:::::::::::::::::::::::::::::::::::: TTTTTTTTTTTTTTTT31NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA! TTTTTTTTTTTTTTTT73QDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD! TTTTTTTTTTTTTTTT:7QEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE$ TTTTTTTTTTTTTTTT::QFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF$ TTTTTTTTTTTTTTTT>:QGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG' TTTTTTTTTTTTTTTT>>PHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH' TTTTTTTTTTTTTTTT>>QHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH' TTTTTTTTTTTTTTTTA>0'''''''''''''''''''''''''''''''''''''''''' TTTTTTTTTTTTTTTT= TTTTTTTTTTTTTTTT!!TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT''''''''''''''''''''''''''''''''''''''''''''!TTTTTTTTTTTTTTTT!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,$TTTTTTTTTTTTTTTT '33333333333333333333333333333333333333333N+TTTTTTTTTTTTTTTT ):::::::::::::::::::::::::::::::::::::::R0TTTTTTTTTTTTTTTT +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAR3TTTTTTTTTTTTTTTT -DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDR7TTTTTTTTTTTTTTTT 1EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEER:TTTTTTTTTTTTTTTT 1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFS=TTTTTTTTTTTTTTTT 3GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGS>TTTTTTTTTTTTTTTT 3HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHSATTTTTTTTTTTTTTTT 6HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHRATTTTTTTTTTTTTTTT 6GGGHHHHKKKKKKKKKHHHHKKKKKKKKKKHHHKKKKKKKKKKR>TTTTTTTTTTTTTTTT7PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPOATTTTTTTTTTTTTTTT777777777777777777777777777777777777777777777ANTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT8B%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%. TTTTTTTTTTTTTTTTI444444444444444444444444444444444444444444TTTTTTTTTTTTTTTT. TTTTTTTTTTTTTTTT4 TTTTTTTTTTTTTTTT4 TTTTTTTTTTTTTTTT4""""""""""""""""""""""""""""""""""""TTTTTTTTTTTTTTTT4%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%TTTTTTTTTTTTTTTT8((((((((((((((((((((((((((((((((TTTTTTTTTTTTTTTT8((((((((((((((((((((((((((((((((((TTTTTTTTTTTTTTTT8((((((((((((((((((((((((((((((((((((TTTTTTTTTTTTTTTT4%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%TTTTTTTTTTTTTTTT4%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%TTTTTTTTTTTTTTTT4%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%TTTTTTTTTTTTTTTT TTTTTTTTTTTTTTTT TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT@@M @!!!!))))11!1119!999B!B)BBBJ)JJJR1RRRZZZc9ccckBkBkkksBsJsJsss{R{R{{{ZZ!Z!c!k1s1s9{9{B{BBJJRRRZƜZƜcΜcΥcΥk֥k֭k֭s޵s޵{罄ƌΌΔΔ֔֜ޥM"@"@"@"@*Ǿ "mU M `P @@aebbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbU922dddddddddddddddddddddddddddddddddddddddddd ))c888888888888888888888888888888888888888888 77n>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> =>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>6 7VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVw= 1) && ((Weapon == None) || !Weapon.bPointing) ) MakeNoise(0.05 * Level.Game.Difficulty); if ( FootRegion.Zone.bWaterZone ) { PlaySound(sound 'LSplash', SLOT_Interact, 1, false, 1000.0, 1.0); return; } decision = FRand(); if ( decision < 0.34 ) step = sound'unrealshare.male.MetWalk1'; else if (decision < 0.67 ) step = sound'unrealshare.male.MetWalk2'; else step = sound'unrealshare.male.MetWalk3'; if ( bIsWalking ) PlaySound(step, SLOT_Interact, 0.5, false, 400.0, 1.0); else PlaySound(step, SLOT_Interact, 1, false, 800.0, 1.0); } M E^Ti"- r Ia!{ ::$333?a!<w*-a&!H>L>^!i^!K^a^>333?a^>333?> M @                                      ) # #!' $#!/ '&*)3 &/+#)..32.)28 48A 253:>7/!;8@+'=J6"?D<@DG=!B6'T JGC!LE"J TK!PE%N!;."K$US!P#I(O&X _U#] P)V&@4'^#Y&S,_%g N1!](X+d%H9*_+i%Y/e(^0i)e,q%m*g/Q>&`4!o,x&n0w+h5PC4y-DMCr3n9y3.YF7x731s>"[L76}:49<bR:zD'?:=7C> ;Df[JAK%FAR: #K Ex`KLQ&]tnGV'ORW#Vp]3tc\`+g2gfmp2vw6؃ɇ4ڒ'#+ȿ&4Ⱥ0]Bk>dM D// ============================================================ // oldskool.oldskoolconfigclient: actually its only used for DM mutator configuration, but I'm too lazy to rename it. // First menu code ever written by me. Not very clean nor optimized, but I really don't feel like fixing it up... // ============================================================ class OldskoolConfigClient expands UMenuPageWindow; var UWindowCheckBox item0, item1, item2, item3, item4, item5, item6, item7, item8, item9, item10, // item11, item13, item14, item15, item16, item17, item18, item21, item22, item23; var UWindowComboControl ShieldCombo, redeemcombo, arenacombo, quadshotcombo; function Created() { Super.Created(); item0 = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 10, 210, 1)); item0.SetText("Make Default: Dispersion Pistol"); item0.SetFont(F_Normal); item0.Align = TA_Left; item0.bChecked = class'Oldskool.oldskool'.default.bPistol; item1 = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 25, 210, 1)); item1.SetText("Enforcer to Automag"); item1.SetFont(F_Normal); item1.Align = TA_Left; item1.bChecked = class'Oldskool.oldskool'.default.bMag; item2 = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 40, 210, 1)); item2.SetText("Unreal I BioRifle"); item2.SetFont(F_Normal); item2.Align = TA_Left; item2.bChecked = class'Oldskool.oldskool'.default.bBioRifle; item3 = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 70, 210, 1)); item3.SetText("Make ShockRifle ASMD"); item3.SetFont(F_Normal); item3.Align = TA_Left; item3.bChecked = class'Oldskool.oldskool'.default.bASMD; item4 = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 85, 210, 1)); item4.SetText("Make Pulse Gun Stinger"); item4.SetFont(F_Normal); item4.Align = TA_Left; item4.bChecked = class'Oldskool.oldskool'.default.bStingy; item5 = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10,100, 210, 1)); item5.SetText("Make Ripper Razorjack"); item5.SetFont(F_Normal); item5.Align = TA_Left; item5.bChecked = class'Oldskool.oldskool'.default.bRazor; item6 = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10,115, 210, 1)); item6.SetText("Unreal I Minigun"); item6.SetFont(F_Normal); item6.Align = TA_Left; item6.bChecked = class'Oldskool.oldskool'.default.bmini; item7 = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 130, 210, 1)); item7.SetText("Unreal I Flak Cannon"); item7.SetFont(F_Normal); item7.Align = TA_Left; item7.bChecked = class'Oldskool.oldskool'.default.bFlak; item8 = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 145, 210, 1)); item8.SetText("Make Rocket Launcher Eightball"); item8.SetFont(F_Normal); item8.Align = TA_Left; item8.bChecked = class'Oldskool.oldskool'.default.bEball; item9 = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 160, 210, 1)); item9.SetText("Unreal I Sniper Rifle"); item9.SetFont(F_Normal); item9.Align = TA_Left; item9.bChecked = class'Oldskool.oldskool'.default.bRifle; item10 = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 175, 210, 1)); item10.SetText("Chainsaw Disperion Power-up"); item10.SetFont(F_Normal); item10.Align = TA_Left; item10.bChecked = class'Oldskool.oldskool'.default.bPower; /* item11 = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 175, 210, 1)); item11.SetText("Make SuperShock Asmd *4"); item11.SetFont(F_Normal); item11.Align = TA_Left; item11.bChecked = class'Oldskool.oldskool'.default.bSuperASMD; */ redeemcombo = UWindowcombocontrol(CreateControl(class'UWindowcombocontrol', 10, 190, 210, 1)); redeemcombo.SetText("Remeemer to:"); redeemcombo.SetHelpText("What do you want to change the redeemer into?"); redeemCombo.SetButtons(False); redeemcombo.seteditable(False); redeemcombo.SetFont(F_Normal); redeemcombo.Align = TA_Left; redeemcombo.additem("keep it"); redeemcombo.additem("ASMD with Amp"); redeemcombo.additem("SMP"); redeemCombo.SetSelectedIndex(class'Oldskool.oldskool'.default.redeemmode); item13 = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 205, 210, 1)); item13.SetText("Unreal I Jumpboots"); item13.SetFont(F_Normal); item13.Align = TA_Left; item13.bChecked = class'Oldskool.oldskool'.default.bJump; item14 = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 220, 210, 1)); item14.SetText("Damage to Amplifier"); item14.SetFont(F_Normal); item14.Align = TA_Left; item14.bChecked = class'Oldskool.oldskool'.default.bdamage; item15 = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 235, 210, 1)); item15.SetText("Thigh Pad to Kevlar"); item15.SetFont(F_Normal); item15.Align = TA_Left; item15.bChecked = class'Oldskool.oldskool'.default.bpad; item16 = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 250, 210, 1)); item16.SetText("Unreal I Megahealth"); item16.SetFont(F_Normal); item16.Align = TA_Left; item16.bChecked = class'Oldskool.oldskool'.default.bmegahealth; item17 = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 265, 210, 1)); item17.SetText("Unreal I Armor"); item17.SetFont(F_Normal); item17.Align = TA_Left; item17.bChecked = class'Oldskool.oldskool'.default.barmor; item18 = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 280, 210, 1)); item18.SetText("Vial to bandage"); item18.SetFont(F_Normal); item18.Align = TA_Left; item18.bChecked = class'Oldskool.oldskool'.default.bbandaid; /* old checkbox was here.... item19 = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10,310, 210, 1)); item19.SetText("Old Shieldbelt (100)"); item19.SetFont(F_Normal); item19.Align = TA_Left; item19.bChecked = class'Oldskool.oldskool'.default.bshield; item20 = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10,325, 210, 1)); item20.SetText("Shield to Powershield (200)"); item20.SetFont(F_Normal); item20.Align = TA_Left; item20.bChecked = class'Oldskool.oldskool'.default.bpshield; */ ShieldCombo = UWindowComboControl(CreateControl(class'UWindowComboControl', 10, 295, 210, 1)); ShieldCombo.SetButtons(False); ShieldCombo.SetText("ShieldBelt to:"); ShieldCombo.SetHelpText("What do you want to make the shieldbelt?"); ShieldCombo.SetFont(F_Normal); ShieldCombo.SetEditable(False); ShieldCombo.Align = TA_Left; ShieldCombo.AddItem("Keep it (150)"); ShieldCombo.AddItem("Old shieldbelt (100)"); ShieldCombo.AddItem("PowerShield (200)"); ShieldCombo.SetSelectedIndex(class'Oldskool.oldskool'.default.shieldmode); item21 = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10,310, 210, 1)); item21.SetText("Unreal I HealthPack"); item21.SetFont(F_Normal); item21.Align = TA_Left; item21.bChecked = class'Oldskool.oldskool'.default.bmed; item22 = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 325, 210, 1)); item22.SetText("Full Invisibility"); item22.SetFont(F_Normal); item22.Align = TA_Left; item22.bChecked = class'Oldskool.oldskool'.default.binvis; item23 = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 55, 210, 1)); item23.SetText("Start off with automag"); item23.SetFont(F_Normal); item23.Align = TA_Left; item23.bChecked = class'Oldskool.oldskool'.default.bdefauto; quadshotcombo = UWindowcombocontrol(CreateControl(class'UWindowcombocontrol', 10, 340, 210, 1)); quadshotcombo.SetText("Weapon to Quadshot:"); quadshotcombo.SetHelpText("What weapon should become the Quadshot? Note that the Unreal I equivilents will also change with this option...."); quadshotcombo.seteditable(False); quadshotcombo.SetFont(F_Normal); quadshotcombo.Align = TA_Left; quadshotcombo.additem("Nothing"); quadshotcombo.additem("Impact Hammer"); quadshotcombo.additem("Enforcer"); quadshotcombo.additem("Pulse Gun"); quadshotcombo.additem("Shock Rifle"); quadshotcombo.additem("Rocket Launcher"); quadshotcombo.additem("Flak Cannon"); quadshotcombo.additem("Ripper"); quadshotcombo.additem("GES BioRifle"); quadshotcombo.additem("Sniper Rifle"); quadshotcombo.additem("Minigun"); quadshotcombo.additem("Redeemer"); quadshotCombo.SetSelectedIndex(class'Oldskool.oldskool'.default.quadmode); arenacombo = UWindowcombocontrol(CreateControl(class'UWindowcombocontrol', 10, 355, 210, 1)); arenacombo.SetText("Arena:"); arenacombo.SetHelpText("Select the weapon you wish to act as an arena. Select No Arena for OldSkool to use all the above options."); arenacombo.seteditable(False); arenacombo.SetFont(F_Normal); arenacombo.Align = TA_Left; arenacombo.additem("No Arena"); arenacombo.additem("Dispersion Pistol"); arenacombo.additem("Automag"); arenacombo.additem("Stinger"); arenacombo.additem("ASMD"); arenacombo.additem("Eightball"); arenacombo.additem("Flak Cannon"); arenacombo.additem("Razorjack"); arenacombo.additem("GES BioRifle"); arenacombo.additem("Sniper Rifle"); arenacombo.additem("Minigun"); arenacombo.additem("QuadShot"); arenacombo.additem("SMP"); arenaCombo.SetSelectedIndex(class'Oldskool.oldskool'.default.arenamode); DesiredWidth = 220; DesiredHeight = 380; } function RightClickTab() // :D { MessageBox("Semi-Secret Message", "Close, but no cigar. Try again!", MB_OK, MR_OK, MR_OK); //hey!!!!! don't look at this!!! } function Notify(UWindowDialogControl C, byte E) { Super.Notify(C, E); switch(E) { case DE_Change: switch(C) { case item0: class'Oldskool.oldskool'.default.bPistol = item0.bChecked; class'Oldskool.oldskool'.static.StaticSaveConfig(); break; case item1: class'Oldskool.oldskool'.default.bMag = item1.bChecked; class'Oldskool.oldskool'.static.StaticSaveConfig(); class'olroot.oldskoolweaponprioritylistbox'.default.bnewmag = !item1.bChecked; //for weapon priorities class'olroot.oldskoolweaponprioritylistbox'.static.StaticSaveConfig(); break; case item2: class'Oldskool.oldskool'.default.bBioRifle = item2.bChecked; class'Oldskool.oldskool'.static.StaticSaveConfig(); break; case item3: class'Oldskool.oldskool'.default.bASMD = item3.bChecked; class'Oldskool.oldskool'.static.StaticSaveConfig(); break; case item4: class'Oldskool.oldskool'.default.bStingy = item4.bChecked; class'Oldskool.oldskool'.static.StaticSaveConfig(); break; case item5: class'Oldskool.oldskool'.default.bRazor = item5.bChecked; class'Oldskool.oldskool'.static.StaticSaveConfig(); break; case item6: class'Oldskool.oldskool'.default.bmini = item6.bChecked; class'Oldskool.oldskool'.static.StaticSaveConfig(); break; case item7: class'Oldskool.oldskool'.default.bFlak = item7.bChecked; class'Oldskool.oldskool'.static.StaticSaveConfig(); break; case item8: class'Oldskool.oldskool'.default.bEball = item8.bChecked; class'Oldskool.oldskool'.static.StaticSaveConfig(); break; case item9: class'Oldskool.oldskool'.default.bRifle = item9.bChecked; class'Oldskool.oldskool'.static.StaticSaveConfig(); break; case item10: class'Oldskool.oldskool'.default.bPower=item10.bchecked; class'Oldskool.oldskool'.static.StaticSaveConfig(); break; /* case item11: class'Oldskool.oldskool'.default.bSuperASMD = item11.bChecked; class'Oldskool.oldskool'.static.StaticSaveConfig(); break; */ case item13: class'Oldskool.oldskool'.default.bjump = item13.bChecked; class'Oldskool.oldskool'.static.StaticSaveConfig(); break; case item14: class'Oldskool.oldskool'.default.bdamage = item14.bChecked; class'Oldskool.oldskool'.static.StaticSaveConfig(); break; case item15: class'Oldskool.oldskool'.default.bpad = item15.bChecked; class'Oldskool.oldskool'.static.StaticSaveConfig(); break; case item16: class'Oldskool.oldskool'.default.bmegahealth = item16.bChecked; class'Oldskool.oldskool'.static.StaticSaveConfig(); break; case item17: class'Oldskool.oldskool'.default.barmor = item17.bChecked; class'Oldskool.oldskool'.static.StaticSaveConfig(); break; case item18: class'Oldskool.oldskool'.default.bbandaid = item18.bChecked; class'Oldskool.oldskool'.static.StaticSaveConfig(); break; /* case item19: class'Oldskool.oldskool'.default.bshield = item19.bChecked; class'Oldskool.oldskool'.static.StaticSaveConfig(); break; case item20: class'Oldskool.oldskool'.default.bpshield = item20.bChecked; class'Oldskool.oldskool'.static.StaticSaveConfig(); break; */ case item21: class'Oldskool.oldskool'.default.bmed = item21.bChecked; class'Oldskool.oldskool'.static.StaticSaveConfig(); break; case item22: class'Oldskool.oldskool'.default.binvis = item22.bChecked; class'Oldskool.oldskool'.static.StaticSaveConfig(); break; case item23: class'Oldskool.oldskool'.default.bdefauto = item23.bChecked; class'Oldskool.oldskool'.static.StaticSaveConfig(); break; case ShieldCombo: class'Oldskool.oldskool'.default.shieldmode = shieldcombo.getselectedindex(); class'Oldskool.oldskool'.static.StaticSaveConfig(); break; case redeemCombo: class'Oldskool.oldskool'.default.redeemmode = redeemcombo.getselectedindex(); class'Oldskool.oldskool'.static.StaticSaveConfig(); break; case quadshotCombo: class'Oldskool.oldskool'.default.quadmode = quadshotcombo.getselectedindex(); class'Oldskool.oldskool'.static.StaticSaveConfig(); break; case ArenaCombo: class'Oldskool.oldskool'.default.arenamode = Arenacombo.getselectedindex(); class'Oldskool.oldskool'.static.StaticSaveConfig(); break; } break; } } U""""*&#"* "/ M  @    ++  * , *&:S-V;V &&*<*; *S<** --+8*>; -V<-Y><<+8 -;S,;<<*--<<ːP8       +++  3  -& *** <<**;V>*++8<<5VYV;;:5;5P8-,5pUUGp5epe 4 F4FFBD     +++   ++   - *5-5&-*&-+<;-;-,*,,,;;-< , 5--5**        ++  ++++  -++<<* ;V8-;;XSSY, &,,,,*!*:&K--;+8<5       ++    +++  * *-***+- ,,,,:S:,S,SY<-** &,&!! ,;;+-<+5-+          ++  - +*+-+-- !,,X=:=;;Y[Y-5;**& *,!,,!,* <-5Y+*-            &* &**&**+* * ,;[[=[Y<*-5<  ,.S,!*+5S<*<*<                &* -5; **&5! :;SYXS5--<--* ,,;=-**5<588*<            +  & &5<5***! ::,SS--;::*!&**,**;**+-5;;5  +++++          /1 &  **-<5;<;;Y<-<*:,=;,!&&*-,,5* 8555+  +++        + 4  *&  +*<-S;-,:S--+::;;;;:*,;-,--* *;S<8  ++++             -;;>S-<,,;;5-+*;.;;;;-,;-*,,--+&<-P*  +1+          -Y>S;-*-;;,-<;;<;=,,;;<;,;;-,,58SY<><<;[[S;:,,M-8    +377773+       +     ! &,YSYYV><8VYZZX.=;;SVVS:;S;.:=;,,<VKPVS885* &5,-PYK88>VK-,*&&**+5;S; **4  *SXX]S555*5SK55KKK*+5+ #,****9974434483479JJ97733+11+1  !! -8+PK>KKVVSVYS ,*-&  &  <-;-87+*;=-;YS+-- *****5SK5Q55K5SVKKYY;*-----**,&&!&! !&&   <<& &!!*  *5555ZX, *,,**845* 8888, *4*9J97897433377779JJJJ997733++33731+  & ,-VYK888-=*--&! * **-K5*5;X5S5K**+* **5K8**4*JJJI7J97++344377JJJJJJ97774+1333+   *YYVVYVK5SS5<<8*<=:SYYYS;;SS>,*-++X;;Z⚚YS<+ *-,-;*--;--,*,,&&    8*---&&;--+***55S஗5SK++* ,K8K8+44 4J8JJJ84+387778999JJJJ773+3331+    -YVVV>Y<4<;-,& ;55*SKKS55* KKM544845 5* #Q88734++7977379IJJJ973+++113311+    -;SVVVKPP<-<8=.,,;5+-*&<;**,;:.*,:*  #*<+;>-* &*&&, 5555-+-5-<&***&,-&    *5>-<<-+& !&*&5EKK5K5*4*** *5*8K84 4 5KK54*P8++4887348999JJJJ977777777773311     !! *<<-+;*&&&&&& &SKEK5-**4* ,5+KKK 4845EKE55*+48J97337899IJJJJJJ777777777733+  !!! &,<<<--58V>VVYXXSK8;-,;<<;-,; +5+VVVVVXS>Y<;;-,- 5-;;->-!->;&,**;:--&&-Y] *E5**44**,,*4*PK**5**54**8K+ *4+PJ9777777777999777777777777731+    *,,,,;<<--& *>++<-5**55KE***48+DSUK/T*K55I8I*8KK4MJ799774444777777447777777733+  **,!*&>YS-<;<5-S--* &-&&;, ******555E555*K54KKT*TT]›5448PK88+8PP4KJJJJ7777777777737777777733++  &**!*&SYYVY<<<;[<;<-;-SS>S<<- ++-+& ** -;5;&  <;P<:-;XX;><;-*;>S;+ +*   &   <8+;V8+Y?>&* &!&&+& *&5555KTK5,*,55K**55KEKKKK5S4*P555 * 4KJJJJ9977777337777773++ *!!!!,;S;+-- * *      *<>><>8&&&;>*&&& &&*---+-5K#55E5555SS5**KT5K5K“KK5554*5K48/E +JJJ997433337773+  *!!!!::;;;;SSS⯗-;<-;;<-,* *         8<<<-88*-,--*<- &---++8-&&--&5KKK]K55//* *KEEE*KK્KTK5KK5444K5K* 4+P9JJJ774337773++++  *!!!,:X=X;-YYYYX-S<<5--<*+&**-&&**,&     8><;-:>&&!&-<-><8-*-<>>-*#KTS555S**5* !5DKMKK55KK*4*/5K***KK97IJJJJ7744434+++++  !,X[=X;S-&-><;+&---<>;&& &>;&--& ;P-&-;<:-9<:-**&+-&&-* +&&-<- E/*5***4K+5K5PKKY-&,:?;;++ &-&&&&&*&*]/#**5,5EM*8KK55884445558*5**5*K8K5K88JJ8989JJJ7887773+++  !;YYYVYS85+--<5;<;;=--==, *<;,   <<8<;-(8>;<+;V?;* &&&&&,(& *&->-E/*K55TKK84K4+4514*555E5*KK8K8I878IJJ9777777++  !,SS;+>;-;9?>Y<&* &&<>+&&& +-+--<; *KK55KTK5KII54548I58455KK*K88P9JJJ8IJJ9778777+  &S;;8;;8+;*&&*--+<< **+-++<-&&&&*5KK55D5KPK4***88JK4K555**45E 49JJJ97IJJJI744774+++  *<-+SYS;5<--+<;;;-+ !!!   ->V;V>V<<<*8,-*&&&&&:+;<---&& &-<<-& *KTMMKPPPI444PKK8HPK88TK5**4P++7IJJJJI87JJ734777773311++  -555<;;SY;;;++-<>-->&<8->P:-&*--<>>-;,& -<++<-& KTM885P8PK**IMJKEK5]K+4+4*PKIJ7JJ8887477331333331++  -+8<88+*-<<+--<<;-   V;>->&<,V&&>><*&*+;---<+ &&!&-* MK555*5KP44I745E5K4455*P88+9JJJ98777977+++++++++  -K<<,&-><><-><--<;&&---&+( 4 * +P*8IK4K8I488555KD*KKK5PI +7JJJJJI777777443+ +V9&&-<<;&??* M55K8<- &    *&     +V<>>+;-;?8->V+ -Y-*;&KMKKKPKM›K8 8J4484KETSMK5*K4  *378J97777777973+ ;;YYYX<-*     ! V<8;88<;-&-V?P-89-&* 5LDM**KKTMP48+1JK5KKKTMES5*45  *4IJJ9I77++77777++  $:S<>-*/M-8>DK­5KKE5K8*KTKKTKD48KMI7I4145KKKK++++77773+++++ &73<>;-->-V<> 5EMT/#K<>;-V>-+& 5KK/ D88PK54***KK5*MD/**54TP8848KKK4454K8488 479J73+++++ *;PP- -585 * ,*&*,*-, *5* &** +;-   *-><>;<<& *MK/* /KT5**5,*+*K/# 54 5K*8P184584KKK58K*  +77777++<<-+**&*<<8 8 !*! &** #*&<+5 ****+&* ;<<9V;+  MK444/5TMSK5*5K*55EKE5***4+K*SPPK***JPP8888KK5  ++++4+<;--8<+ <& &*  !  4K*4 ET˜E*+*5EKK55EE5/EMTK5 *5S*** * 8*KP*P8K44**  --*+8-PVPV<*<<-  *  !&*,!*<;!*,*=*&& ,*,,-;<<  !;V &;-& &  4*4**5D***++E5555K5*5/5EE44KKT5K8858KP88K854*/  --**+-P+<>< 5V<*  & * --;; 5<*,-  &5* &**-,*  &V- -*,& &    44455 **455/EE55KP5*K**455TS]E55KKPKPKK8D5   *<<-8>--+*8- *YYS5< **& &**-  &5 !;8<-,,  -& & *  -<- &**! *+** *&    **KT5*445KKD/*//E55K55KE5*4K/’E*5KŽMK844*   <<-8P8& --8+ VV-  * ,-+< *  -&,,&<-** *  &5-5* V<8 *++;* & **+ */555*+45DDE5/EK545M5KK55*SKKK*8KPIKS4 *  <5--8-*++8-* Y- * *# *, --*5 * 5 ,** &----2  -****& V> *, *+*8---  **&  +5555K+**//DE55K555KK]4555EKSKK54T5P44TKKKM58     ;<+**8+**---*V# ***! ,+** *-*5*<&+,+* & &*+**-*&*-**5, &  ,**,*5*<*-+& &- 4ES55KK85*55//D5EK4KKDEM5*5*5K5KKK5558K454 K4   ;<+--8-<--<<*>-S5, >Y-->*& *,.*5* &**5+ ****+; *;-  <**<-;<5** *5- *;* **-& &&& !&  5*****45*#5*5KKED555DKMKKDKKS5****5K’5 KP8K4* 84  S, SVV*-< ,5,! *+5Y; &---**5 -*5<+ 5,--**<*,* ,-- :!,,+8-*--&&*  &&& *5EKD5/*5D5//D5ES55/4KD5KK5KSK44K**58*ᒘE5*4*8+ *;-!,5* ,5<>;*>VY5>V ,,**, !,*S55*---5*  -5-** --,;5*;- /* *<- *!-<><5+-** + &&& &&  * *EK5K5*5DD5//555D544*5K85KK555K* 58855SSS 5***45+44* +S-!#,5 *<<>;-!;5-** ! & & -S5+5 +-<+8+& *-;***&*-* ,, EKK * !,5; *+**&**  &  ,*5555***** ##*+ED/K/ *55K55K5*555* 4454K5E55KKSD584+8514+454 -SS,!*<-<<;**;-5>V><*&VV;5;*, *--,,-;5; *---;;- * *,*0 *-**5,! T5K5 !-; .* ,,*-,** *& &*&-* *,544455555E/ *SKEE/* **5K4***8*+* *5SKK**5***544KIK5+ * <<*-,--<>-& V>5;- ,;-*<-,,&+5+&*,---->V *# ** 0 & &&+55 TTEK5*&*!! ,;& +--,-;& &  *& **KE***5**D*E]E* /,5** ****/***4*+* *KSSK5K*/ 5K4*58K8P55 *4*  <;*;-* &--5,-* V<>&5:<,,: 8<,; 0<; ,---& , &0& &*;; D ! &<* *--&! ,**&   & *4TK5****5/5TE/ **55*4+4KK++*55*44 -5SE* **45P55+55K8 **4*  58*****--<<5* >>**,;**; <>,* *- &  -  ,!* **2 & ;;!,-&#* &,&! !*& ! ,*&,- & &*** 5H15MM****/**/Q]^E/  *********++44SSE#*5E55* ***4+* *8E545*KK#*  ;,&*--,&*,5<<*--& **, -<--- &&;<55 -,# *5*02 &*--*&*,  &!! && ! ,-,& *&&  IMI /ESTE/* *,**5+*****+45*SSE**#**5*#* **-* 5K8KMKK<54*54 <*-,<<**-,**-**-*& ;+ &*,--  *--+-**!* <<*02+*& &***&  ! !! *  *55*&*& **&*&& PI * #ET]TE//## ******84 * 44* 45EEEK44**/D/*5K5*55E5KK55K5/E5* *;**--;<-*,*-*--!! ! ,<- ,-**<*--+-<<!*, -;52 &&  !!& **55&& & !! - 8K5 *554544***5S]K5/#******45*4*44***KK55K5*5,*//*5KKK5*5K*54DK55KE,**  -<**+++*&--,-,**&& & -<- !&& -<&-;-S<<,0+,,** -;52   ! ! &!* *& && & 58 *54K4/5**DQ]EKEE# *5****44K44 **4*54KEK55/,55****,5SKK5*4455*K*55]K*  *;,&*&*+-&**;,& *& --* -+ <,<<<888PPJ799JӸPPPPP73+++VV<8+-<<5++++-SJJ7     !     !! !  ]  8KPKKKKK55 * ! ! !!**5++58488PPƴƱJ9P+888-+55+  : &--+   !! !! ]vv # & ** **,5*+++++88PPǺǺƳŦJ73++88+++++*& ; -*5<;5-5,-,-;-+*! *  &*5--VV-*!& !5uuuuuEw   ! !##!! ! ****55-++48PPPPƱƽJ31+*+ ;S !&<5-***** &&&&!**tt ! ! #,#! *!********   58 !!&*-;SsK! !,#!#  *! !!*   -< !&+;;555KSVV>SVV8V8485 ! ##,** ** #  !*****+-->Vë74998888++*+*!  & &,*--***+-5;<;-++++<<8K4! # ,** #* **/# 5* !**+++<< PP8 # , ## # **5***** &**--<<88P8PP938P8<8899988888V<85+*   !&&&,,*,,::,,;<<<<VVYÕV+8   ,!!! ,!## ! # **555*# !**558-+-58<<5+----*8V<-;;<;;-*++8-*5-8<<8885<VV<<<<<<<;,;Y;<<55--88++<88<8888+--8V<<+-& !**KV<<5--8<889PPPVV55+-YSSY<-5VY><8<8++888+97++88<58;VVVP>><8>VVVSVVV8><<>SYVYKSXYYYYYYS<VVYVVVVVV<Y>5<58 **&*+*VV8;<<8++8P9Pí9VS<;<<8<855+-88+<>555-<<;Y>PVVYV<8->YVVKVV<8 **%** ##*#*#*!->,SVPPV85--;5VSVVPS>SKVVYK8<848 # *******%%%%*5,*!!<;!!! 5-&*--+<<5S>888988PPP8PVP85-85+58++-KVV8+P>VVYV<5-*+++5 %%*%%/////////*-,*& &****+*+-5<<<<8-++-5 叫 % %***//////555/,;S  !!!  ***+***588<88<>V9ᐫPJPP88VPVKPPV8KVVPPKPVVVP䭕SSSS    %#%%//////55DDDDESS;- &&&**+****-<-*-,,,,:,**&!&! ! &!&*-******--+555-88<8PíõéëPV933ǺVPé8P<8PVVVPK8  #%%%%%*///55DDDDES;;! &****-855--**,-,-,;;;;:,*!&*! &!*,*,-,-*-***-+-5PL88;;<* &K888888FÕȑȋ8PûVVVV<V<<VV<<<;;;<<5<8;;-5<58K<5-8<<;<<;<<;;5<<<<ᶵ  %*///D/DIѳ8;<, *+5KS<5**KP><<<V<8+<898+8<8PpCe q Ck c@Cd LLNLMV>PVV<888<SYYYSS<5SSKV஭VVP<5++++8P<8+8KVPq/CfgiArariBdfpKYV5<>PVKP<85<ᕌVJJ4DDM5Ս* *5YXSSS;<VVS<-,,,5*>K<5--;885<-*-88<<<<<>>>YV<;;:555<<;5;SS<<<<<<58;<<<<;--;>YVYPSY><<;<<<<<YYY<;-22!62%:2)2222:)2:22B)2B2:22)2:)::22:2::2B::2:)2B22B:2B22J:2J:2S2:B2BB2<):B2B2::::>>6BB2B::BB:::B:BBB2BB:BBBB::J:BJB2JB:JBBJ::S:BSB:S??]ON-&L4)N26JBJ>)J:2J>6N2>J:FJB:JBBJ:SJBNJB[JBgW,S:2SB)S>6S>>S?GS:SSB[[='[6:[B:[?Kk'eC4"?-JAJ@[J5BJSWJNkJ%gJ2gJ:eJD@\6KXK]U8^WPGu=C>A=B@pQ4n[B|Y0_/tVIrbN~dLfJn6pNx>|?Iӓ@@DJP[\T[OWeTZcT_h\f]tdyfzq]omlvaɟdҋijrroΟW""""* "* "( M  @'49GKX__ff__XTKKGGGGD>>>>>>>>>9999>>LV\bgoorvvvvroaaagozzzzmmmiivwww{vroogab\WOII@@;QQY\kkt~tkkkkt~~~~~kkccYYQJJ<330000))#,,&&&&,,,,,00;@IIOOOOOWWOOOOI@@222222220022222222220002222000000,,,,###  L'b>K_mmX{{vGovo>>9oootgoogĜėĚĴzm{{vooogab\OIII@QQYYkktt~~~~~~~~~kkccYYQQJJ<;;;;;200,33-3,,,3<;;@IOW\\\\\\\\WWOI@;;;220000000222222200,,,0220,,,,,,,,,##ºXmĺīG[DDƦgvɯºgoɫĺĐīɺɺmƒɃɺooooabWOIB@IIIY\kkttt~~~~~~~~kkccccYYQJJ;@;;;200333333,,3<0;@IOOWW\\\\\\WYYYI;;200000000000000000,,&&,00,,&&&&&&&&& bb77aTzzsiga{DwaKDotbgroozz{{vooabWOOBBIIO\kttttttt~~~~kkkkccYQQQIII@@;;<<<<<<<[izssszm_XTKGGDDDKTTTTTTTKKGVVLLWWW\agiiirroogaaowzzzwwwwvwwvroooooa\OII@@@IOWktttttttt~~~~~kkkkkcccYQQQII@@@;<<<<<<<<GXmsssszm_XTKGDDDGTXXXXXXXT[[[V\W\\\[giiiiigggaaowzzwwwwvvvvvroggggaWO@@@@@IO\kttttttt~~~~~~~~kkkccYYYYYIIIQJJJJJJJJJJQQY\\bbbbbb\\YQQJJJ<<33,,&&&&&&&&&!!!!&&&,,&&&&&&&&&!''''''''/4DK_mmssmm_XTKGDDDGKXX___XXXTa[[V\\\\[aiiiiigaaaagwwwwwwwvrrrrogggggbWI@;22@IO\bkttttttt~~~~~tk~kkkkkcYYYQIIII@;JJJJDGGKTX__f__Xiiiiiiiooooooiiiiiiiiwz{{vvrrrrvvooooogabVVO@022@@BOOOW\\bbkkkkkttttttttt~~~~ $$$$$jhJJJhh>DGGKKTXX_XTTiiiiirvvvvvriiiiiiimwzz{{{vrrrrrrvvvvvogabVVO@22@@@BBIOOYYW\\\kkkkkkkttttt~~+    `jR`uj---R`uuuj``ujj`RRuj--A-RA!&!!  KGGGGDD99999DGKTXXX__XXXKD>>DDDGGKKTKKKTgiiwww{{{vvriiiiiiimwz{{vvvvrrvvvv{vvvogabVLB@222@@@@BIIIIIYYYY\\\\\\kttttt~F   RRu-AujA``uAjjuuj`jA--Rju !!  TKKGGGDD9999DGKKTXXXXXXXTG>>>99DDDDGGGD[aiiww{{vriiiiiimwzw{vvvvvvv{{{{{{vvooab\WO@202@@@@@@@@@IIYYYYW\\\\ckttttc     `!-! R-AARARAAAjRAu`Au    !  XTKKKKGDD9999DGKTXXXXXXXTKD>9999>>>>>>>>[aiwz{wwiiiiiiimzzzw{vvvrrvv{{{{{{{{vooab\WI@;02277@@;;;;@@@@IIIOOYY\kkkkk    --       __XTKKKGGDD999DGKTXXXXXXTKG>994444>>4>>>D[irwwwriiiiiimmzwwvrrrrrvww{voogb\OI@;022222220302@;;;@IIIYYcktkk     ----A!- !   ff_XTTKGGGDD999DDKTXXXXTTKGD94/////444>>>[giw{viiiiiiimmzzzwwvrrrrrvww{{vroga\OI@;00)))000,,,0)203;;2@QQYckk6    `juj`jA-!RARRRRA-!-!-!-    sff_XTTKKGGGD>9>>GKXXXXXTKGD94/''777/44>>Vaov{vriiiiiimmwzzzzzzwvvvvvvvvvv{{{{{vroab\OI@;20)))00,,&,#))033;;;QQYckP    ARRuA!uuAjjA!`-uu      sff_XTKKGGGDD9>DDGTXXXXTKGD94/'))))'//4>D[gr{{vii_XXX_mmmwzzwwwwvvvvwwvvvrvv{{{vvvvobbWOI@20)))))###&##)#,&302;@QYY\     AjuA`R-!A Ru-j`u !jj--jjR   ssf_XTKGGGDDDDGGKKTTTTTKKGD94/)))2''/44>[aov{{voii_____mmmwwwwwvrrvwwwwwvrrvvvvvvvvokbWOI@72))))#####&&33;;IYY\     RuuRuR---AAjjA j`A--R`uj      ssfXTKGGDDDDGGKKKTTTTKKKGD>94/''22''/4>V[oov{{{voogiiX____mmmiiwwwvrrrvwwwwvroooooooovtbbWOB77)))))#!&3<;IOO2    -A--A-`RR``juu!`uAuR       ss_XTKGDDDDGKKTTTKKKKKKKGD>4//7777'77BL[gov{{ottggggiiimmiiiiiirvvrrrvvvvvvrrrrroooootkbWWOB72))))#!--3<;IOI    -!-  - -A----AR!         sfXTKKGD>DGKKTXTKKGGGGGGD>>4///772)7BLVaooovtkbb[agiiimmiiiiggirrroorrrrrrrroooooggggbbWWOB72)))##&,,<;@I     A-- !     sf_TKKGGDDGGKKTTKKGGGGGGDD>944/7B777BLV[goovokb\V[agiiwwmiiiaagooooooorrrrrrrvvoogaaabb\WWOB7))###,0;;;@+     ----!       sf_TKKGGGGGGGKKKKKGGDDDDD99994444B77BBLbaooooa[VV[[giirrriiia[agoooooooooooooooogabbab\WWWLB7))##)20020    Ru`u-AR!`ujRA`R------    sf_TKKKKKGGKKKKKKKKGDD99999999444>LBBOW\aoooooa[[[[givvvvriigaagiooooooooorrrooottbbbb\\WLBB2)###)22222       ARujAAuu uuj`uuu-`R       s_XKGGGGGGGGGGGGGGGD99999999999>>>LLLW\btooooa[[[[aiwvvvriiga[aiioooooooooooogggtkbb\\WLB77))##))02         -!A!!-AuA-AjR ARAuuR!-A`u         sf_TKGGDDDDDDGGGGGGD9444499999>>>LLLW\bbtvvoooaaaagovw{{vriia[agiiooorrrrrrooggakkbb\\WLB72)####)0$             -!         sf_XKGGDDDDDDDDDDDDD4////44999>>LLLLW\bkov{voogaaagovw{{{viig[[aggooooooooooogabbkb\WWLL77)#####                  s_XTKGD9999999999994/''//499>>LLLLLWbbto{{{{voogggov{vriga[aggooooorrrooogabbbb\WOBB72))#####,,                            sf_TKGD94499999999994/'''//49>LLLLLW\bto{{{{oooooov{riga[[aagoooooooooogaabb\WOB@@72))####)                            sf_XKGD944444444444994//''////7BBBBOW\bto{{{{vvoooov{{viia[[aagoooooooooooaab\\OI@@222))##))####                         ssf__TG994//////////D944/'''''7777@IOWbbto{{voooooov{{{rgga[[aaggooogooooogabb\WOB@200)))#))###                        sff_XKD94//////////7P4994/)))))))22@IWW\bktvvooooovv{{{roaa[[agggiggggooogaabb\\OI@20#######))#####                           ssf_XKD9//''''////44B>>>>7')))))))02@IOWWbaoooooooov{{{voga[[[aaiiiigaagogga[\\WWO@20##############)                         sffXTG94/''''''//44>LLLLB7)))####)02@IOW\baggggooov{{{vrga[[[[agggggaaggga[[\\WWOI;0##))##))                          ssfXTG94/''//4>>LWWWWB2)###))22@BLV[aaaaaaovv{w{vig[VV[[[aaggaa[aaaa[V\WWOO@;0,#######                   ,00# ssssffXTGD94/''/4>VV\\\\O@2)###))02@LLV[[[[aagrwwwwwri[VV[[[[[aaaaaaaa[b\\\WOI@;00,######                            6YkI$ ssmff_XKGD994/'/4>[[[b\\WB20######))007BLLVV[[aagovwwwwria[VV[[[[[[[[[[[[V\WWWWOB@20000#&&                           +kF  ssf__XTKGD9994'/4D[gaabb\O@200,,))000027LLL\bbaagovwwwwvrg[V[[[[[[[[[[[[[V\\WOII@@20,,,#!!!                            cp$  sssssf__XTKGD9999/''/4>[aga[b\WI@22000)000))7BLLW\baagovwwwwwrga[[[[[[[[[[V\\\\\WOI@@@20,,,,&!                        +cp6  sssssmf___XKGD>>999/''//4>D[aa[b\WOB@@@@;2200227BLWWW\bagorvwww{voga[[[[[[[[[V\\\\\WOI;220,,&&&!                          ,QQ6 smffff_XXXTG>>>>994///44>>V[[[VLOBBBBOOI;20027BBLWWWV[aaagirww{vroa[[VV[[[[V\\WWWWOI@2000,&&&!!                           ssssffff_XXXXTGDD>>994444>>>>LVVLLBBBLLW\YQ;;2)7BLWWWWVV[[aagir{{voga[VVV[[[\\\\\\OI@@2000,&&&&!--!                          sssff____XXXXXTKGGDD>9444994/44>BBBBBLVbbkYQ;@77BBOWWLLVV[[[[gir{{vrga[V>DV[V\WWWWWOI20))000&&!!!---                     fffff_XXXXXXXXXXTTKGD>>>>994/'''777BOLbakkk\OIIIB@BBLLLLVVVV[[gov{vrga[[VVV[V\\\WWWOI20)))00,&!!!--                        ff____XXXXXXXXXXXXTKGD>>>994/)7BLbottkb\WWWI@27>LLLLLLLVV[govriia[[[VVV\bb\\WOO@2))))00,&!!!                            f_____XXXXXXXXXXX_XTKKDD>94/'))7O\tottkb\\\WI;7BLLLLLLLLVbaaooiig[[[[[\\bbbVLOB72))))00,&!                         ffXXXXXXXXXXXXXXXXXXXTKGD94/')7BWbtottkbb\WO@@BBBLWLLLLLVV[aggga[V[[[V\\bVVLBB77))))00,&!                      ff_XXXTTTXXXXXXXXXXTTXTKGD9/')7@O\tottkkkb\WOBBBBOWWLLLLLVV[aaaab\V[[[[[VVLOBBB7))))),,&&!                      fff_XTTKKKTXXXXXXXTTTTKGDD94/'''7BW\bbbbkkb\WOIBBBOWWLLLLLLLV[[[bb\\V[[[VVLOBBB>7')))#,&&&&!!                              mfff_XTKKKKTXXXXXXTKKKKGD>>94/''/4LLWOYY\bbb\\WOIIOOWWLLLVVVV[[[[[\\WVV[[[VWWBBB477)))),&&&&&!                          mmmf_XXTKGGKTXXXXXTKKGGGDD>994/''4>LLB;;IW\\\WWOIIOWWLLLLVV[[[[[VVVLLLLVV\\\WOB777'))00,&&&&&                         zszzw_XTKKKKTXXXXXTKKGGDDDDD994/''77B@@;@OWW\WWOOOOWWLLLLV[[[[[[[VLLLLLL\\\\\OO77'))22;0333&!                         mzzzww_XTKKKKTXXXXTKKGGD>DGGD999/''''720;BLWWWOIOOWWLLLLVV[[[[[VVVLLLLLLLWWWWOBB77722000,,,&                              mmmmmwmf_XTKKKTXX_XKGGGDDDGKGD994/)))))00@BLWWOOOWWWLLLLVbbbaa[VD>>>LLLLL\\\\WOBB47@;200;;3                           _ff__mmmf__XKKTTXXXTKGDDDDKTKKG94/'##)0)#)27BOOOOWWWLLLLLVbbb[[V>>>>LLLLLWWOWOIBBL>720,0;;                                 +__f___mmmf__XTKTTXXXKGD>DGKTXTKD9/'##00###)7@BOWW\WWLLBOLV\\VVVL>>BBBBLLOIIIIIBBBB@;00;;$                                   6+ XX___X_iiii__XTTKGKTKGD9>DGKKGD94/'#,##)2BOW\\\WLLBBBLWWWLLL>>BBBBBB@;;;;;@B772,0;;0                         KX___XXiiiiii_XXTDDGGGD99>DGGD9/''####2@O\bbb\WBBBBBBOOLLLLBBBBBBBB@;;;;@@@2203;;                               KTXXXTKKTTiiiXXXTG>DGGD99999D94/#@O\kkkk\BBBBBBBBBL>BBBBBBBBB@@@;2277222;;                             TX___XKGD[TT___XTKD>DGGD9444///'#2ObktttbOB@@@@@@7BBBBBBBBBBBBB@@2222;;;;$                              $6$KTXXXXTG>DGKTXXXTKGD>DGD94//'#2IkkttkkWB@222222777@BBB@@@@@@@22222;;;0                            !6ZPD[agii_TG>>DGKTTT[KD>9994/''' #0@\kktkk\O@200))))02@BBB@@;;;;;;;;;;@@;                               $Fpp=>DV[giiXKD>>>DG[[[[GD944/' )2@W\kkb\I@2000)))00277@@@22200002;;;;        $                   +FpZ>LV[agiiTGD>>>GG[VVGD44/''  #)2@YYc\WI@000000))00222;;;;;;03333;;3                  %%             6cp+BBLV[aiiTGD>>>DGGDD>>4'''  #)2;@QYII;222200))00))22222200,,333<                          +=F$)7BLVV[iiTKD>>>DGGDLLL7))  #0;;JJ;;<;@@200)))22222@;;;;;;33<<               ( %%%               #)74>LV[TXXKD>>>DGDLLLB7) ,0;;;<<<;;@200))))0222220,,2;0333                  %(.55(((       #)7LLLV[TTTKD>>>DDLLLLB)#02@@;<<<;;200,,,,02222;;03;;;<<<,             %%(%%% %5(((((((               #07LLV[[[[[D>>>4444>B7) #,0@@@;;<<00)),&&&,)2220,,333330<<              %% %%%(5((5((((%$            #02BLV[[[[[VL>>>/'/44')  #)00@IOII;<3,,###,,,222;0333<<<<<<<           $% ((%%(((%.(5555:555((%%%%%       !+#02@BBLVVVVVV>>>B//49/  ))02IWWWI;3&&#)00220,,,333333333!           %% %(.((((.555::5555%(%%%%            6F6#02@@BBOLLLLLL>>BB4999/  ,02IW\b\Q<,&##00000033<<<<<<3<<3       $ % %% %%((5((((555555:CCH::CC5(5( %%((% $     $6+#)22@IOWWVVLLB77B4>994'  &,2IOckkY;,&&&&,&,,33333333333          %% ((( (%%((%((((5555555::HHCHCHHH5555(%((((%      #)02@OWWWV[VL77/>LLL>4'  #,2;IkkcY;3&&&&&&3333333<<<3<<<<        $%%((((%(((%(5(5::555:55:::::CCUHHNHHHHC:55555((((.((%(%((( %%        #,02@BBBLLLB7)77BBB/' ,0;;YkYQ<&&&&&&&&,,3&&33333<<>,*<-.-6?'0?6- 34AA=U!9C)3B20663"78FD";F>"P?GD`/4D:<GH;7%&>I676<>&@NOL29GKm(AN#GP@A:<8"KQ,CP@>+J']::KCEYRRz8?N0FQFHBA?)OX?>TGE)IKbZZ=DSEFA)V^MO;KTLL/kaIJCQRd]-w-\bTUAQZ-bhSU*viOQEXYn\^Y[,UVKKXc`aceM_f[]Fgi_aPTcjkmnpij6WjmehSrtjlXvxarvtv9z}nq\vxJmxyvxdF|~fmMuqT}UxPzYnP`TƢ̆uΥұםpذޝMy<}Y""""** "t M K@          $ $$$$$((((( (-($((2-((--2((2222(((8222-(8===22-$(?D??8=-$ -DMO?=D=((2HOO??H?--=DOYH?O=2( 2D?MYHDO?8-(2HOHUHMMD822=HYHYHDHH=8 2=HOYYOHHH?=((2?HOOYHODHD=2-2?DMOYHH?HD88(2=??DO?D??D8=$2==?????=8==8=(-282288=?22828=-2-2---2-8---2=82((-$(((=2((2-288(2=?DDDOHHD???=2(8=DDOOOMMHHHDDD?=8(28????D?????HHHD??=2( (-2????D?DOUOMOHHOHH?=2-$-28=??????HHOMHHDOHHHH?===-(-2-28888===8?====8=??88222$$$$$$-28+$-=H-$(($ =UD=2828=888?UY=$+-$$8H]UUYMMHUYOYYrgH=;A+ =28DOaY]]YYagg]ggmgUOMD8   $==DOYgaaaamdgrrtgrmaYUOC "        $?HDOYa]aaadaggmmrmgaYYYD +    $$?DMMYaad]aggmgmtxmd]dYUD    '++/        (=DOHYagg]dggmagrtma]aYYA     "    $(DIMDaaadamgmtmtrtmg]]]YC    '"          $$DHOU]gdtrgmg~xtrt~magaU3           $$OMMYYmgmmmrr~xx~~mggaY;         $$HOMUardmgmrr~~xxxtmmgaY;         (MUMOdxmmmmrrtxxxxtmmdaY;           (DMMOgmrggggrtrrr~rgaa]O+         $+=HOHamgdaagrmgmrtd]aUUN+(         ( $=?DD]agdaa]dadddm]YOHOD -           ( (?DDUmmmmrrrrxrrrrrg]UO= 2          ($$=UD\YgYHlmrrttmlUMtgNIMY2 (2            -2$-=cUaM$'Dagmrd\;=ra\H3"(2$            (938DcOgY2 =rrtxr\COxg\$UA**($        ($@;;H3cUga;?tr~t\I]xmW3YI9$(         ($@@AAD3\Maa;=rt~tm\IdrmK-]N7J4$$        -HDwp CDDCcUmaA?rm~tl\WatmP=aU_9+OH($              2== IDMCcYrd+Htrm\Ut~rP;dU hE+;?-(     $(+p_ CDOCcYmg+UxtlcWr~tP;gN" Vp/$+-(         HM?YA+./ CDOAWYrdgxxxt~dPUr~t;IdI && *>+=D=HH==             UHD?22=CA;C$CIO;3OgaI;dtr~xdWNmxm;IdA3;MAA8+2??CMYUN                $?+$(-DMDOUM2IIM;5OmdWWgrr~tllYttmCM];$I]]YOUD$(((?MNI          =-($2DHMMOM-WIM3 Umd+drx~t;+Wmxa/Nd;-MaaY]UM--22MI+                -=8(=HUUUMO2WNH3Omdartxt$YmxY+U\22OYgd]OMD8=2DC               +H=2DHUUOOM2WUUYrrYxm ]~xI3Ud-2U]mg]YOO(DH8(8             (=O=?HHUUUUH2PMMYtgmtr~Yt=+Y]-2UYd]YYOM-OYD-?         2DUHHMOOUUUU8A=?'YrYrxmxxUxt?$UU(2OY]]UOOM8UYO=;           2MUH?HMMMOOM-$$-DUC UY]]a ;YY-A38Yaa]YUUM2IaU?2          8HUHHDMHOOUM- 8D$DHUMH $HH+ 8 +=Ua]YOUUH8O]OD2       ""       =MOOHHHUOUMO8DOYHmxmgmd]aaYAYr~xgHMU+?Y]]YUHMD8M]MD              3*&&/+       =MUODOMUOUOO8(828=HDOOODHOOUU]YMDNI2+Daag]YOUU8OgUH+          '"+ !       2HOHHOMUUYYM28?DHHa]daYYYmagamr]]aYDDaag]YUYM8UdHD               535$        2DOHHMOOYYUO2$=UYY]xtxxtrr~x~~xxxmO$Haaaa]UOM=OaOI          " *+      2DUDDOOMHOUM$=UYYa~xx~xx~xtmI$Hag]YUOMC2U]HA            ! )  +/        -DODMMOMOUYH(DOYYdxx~x~xxxrmI$HagYYOOM==OY?D       " """"/5/       8DMDHMMYUYYO-$DOYYmt~xt~~~xxrg;$M]a]YHDI==OU?C               +*      =DOHDOUYYYYU-$MUUYmx~~xxxxxxd=-UaggYUOY;?YdDC                   8HUDDOMOUYYM-$HOYgm~xx~~~~xg;-OagaYUOY8M]]=;            *   */*""      8HUHDHMOUUUM+$MY]dm~~~~xg;2U]]aYUOO8OY]H;      '   "&   (=OD?OOMMY]H+$HUY]gx~~xxa-2Yda]YYYM2DaUA8         *"&"   2DODDDMMOUOH$$DU]]rx~~~xxx~t]-8Uda]YYUH2O]MD/                      2DMHHOMUYUOM($?O]Ygx~tx~~~~~xrY2=Y]maYOOH2H]MD$            &       33:2DOMDOOUYYYO(HUU]rr~ttx~xxxtY28Y]mdYOUY2MgOC2       &    NN$1(DUDDOMUUYYD($HOUgrxx~~xxxY(DadmaYUUO2OaHH(                  (DMMDDIOUYUM+$MUYamx~x~~~xxU-D]gddYUUN8MaOO- +           .#      p(DYD??OMOOUD$$COO]x~txxxxN(D]a]OUOHA2U]HI3             *.&    +;3  )*$=MDDHOMOUMD$8MUUmrxx~~xxxttC+I]aY]UOD=AYY=M'!      !*' &9# "    3;2DMD?HMYUYUO((8?D]mmmdt~~~~trm]Y- M]gg]UOUD8YUDI             &&"       $A-DOHHONYUYUM((8(-2MUUOaYamggddYUOIC-=HagmYYUY?DYdHC             !     3(?OHHIHMUUOH$88=MU]HDHHMNUUMUHHUY]=+Ogdg]UMO=M]YDC            "+$ (=OHDMOOOOOD+2(HUMWtmagx~]md+N+-UatdYMUO2IYYHA           "     $=MDD?HOOOUD$3=(?O=3AOM]Y/ 2a]$Y$/MadYUUMD-M]MC8               !!         -DMMDDDYOUOM-AD2O]UAMaaag3/Dtm+Y82U]gaYOND2M]HD;+                       -=OHDMOUOYUM$ AH3OgdAVgx~~~33]t~AY82Y]mgUUUU2HYDD$           '    &   2DYDDOOUU]UD$$CU;+Ym]AEttxx;=]xx H]82]amaYUUI2MdMH$           "    (=MHDMOOMOOD$ AM3/ammIEtrtxr;Cr~D]+2Y]Y]UOII8M]HM/                   '   "#&     (DUH?HUOOOUD$;O3/]tgNEmtxxCItdIN23]a]YYUOI2O]HN                   *"    &     (?MD?IHYUUOD CM3.YmgI3tt~rCNrdII2AU]YYOOMC8UY8M               &      !  2DUM=OOYUUOD$AH/?YrdI3xrt~rINgx]UN8CY]gaUIUD=YYHI                      !""$  2HUH?OMUUYO?$;M/?OgdI+mx~mIMrx]UN+;YdmYYOUD=UaHD      "*     +        !;; YmA2MUHCUUUUUOD8O8H]mdI!rx~xtIUr~N!YC-A]aga]OU?DY]DD        +            "/  '* !)'+2;Y]d] -DUD=HUMMUU?+H3N]mmN;xrgIW~C ];$C]md]UUM2IU]HA       "  #        ""!! /"  *53//3;8/++)))!+DUH=DDDMOUD;+NargNMxt~gI]xDd+Ddg]UUUM2O]UN;$C8        &/           "*"     !*"&*" -3331)))2HUM8DDH=UUO$NOgNNUtxxmID~~= M(DYUUUMNM8MYOD; 3;;     &        5   !! 33:A3+)+ '!' -HUMCOC--DMI$-?2(=U2NI]dtm]I2ad8==CUYOOOUO8H]OI+ !'))'         " &             '" *5;I$++$-DUD8=2(=MD$$2=MO]=8=HMYUH8M?HdaADUH8?MMM2HgUM/ !!)'''                >V3   /'NA;;A+ 2DUH=?-22M?$ -??==U]gxY~~tadxgUUNC8?2-2DUN8HdON+ !!$ ''            C_P+ p" !!"&ACAAA/$+DOD=;2$A; 2OOMHUU]YHDUYUY]d]adg==82-ANI2O]NN  +   "         & "!         +;IK"     3C;CIA$' //8OUM=8$8$2?2UU]dxmtga]mmmtx~xt~m8$2(=22DI8O]DU/+/33$                     du:_ l   ";IAII+33$+++$2HYH2-2(8$2UU]dxxtxtt~~x~td8(=8(DM2OYHI +/3$                 \K/P '_pur     ;W;;$33 $+++2MYD(((2;UU]axttrxx~~~xd-(88$?==UdHN+  $+$""                   >\VP/)/)   ;/$NIC; $++3MUD+$-(- =UYdgrxmttx~~t~~~g$((-8=?U]HI +   /3&                     Kw_ +>$+))   WWWWWNC +/2DUC-++28D+-$=UYggxrxxx~~g 228(;88UYNC$ +  )   "                 "    V3+/3333/WWWWWNN +;HNC++8DUM+8 8UY]gxt~t~x~x]-88;==(DUNI;            1    "    " 31:;:::35NNWWWNI+ ++ADUH-3=U]Y+8+8OYam~rxx~~xx] =MUYDC-=YIM; $  $  ! "   i!];          555:>>::)ICIICIC $++8IUC$/AYdY-2$DUUYdtxtt~tx~~~xrY =OdmH=(D]YN+    +    *&   3~           :>>E>E>>   IIIIICC/$$+/;NUC+2A]]U+-$HYUYmrxrrt~xtx~txx] Aarm=?-D]NI3   /+3A        a]N            1EEE>5+ ! !ICACA;;+ +/3INA+-=U]N++?UUagrmmmrrt~~x~~xtN?amm=;(CYIN/+   5VwW                   >3$)! !!)!C;;A;;3  ++CMNI$(;U]H-8AYYaart~rrr~~x~~xI =]rd=;-HUIW++  W܂_Iw>Pl/          IA        ++)))!!!!'!!!!'333333/ +CDUH(-=Y]U$+8OUYgtmrrmxt~~~~rmA 8]m]2C$DNDN+    C;/5}\           ;;         ++))+/))!!!'!' +CHUD--AYaM++$/HUYdgmmtxm~tx~xxmd/=Uma2=+DdHI   NP>ʂd               ')! +3///3/)!!!!  $ACND(-CYYH$$+C=AIYddaggxrr~~rmrdU$;Utd-=(M]=C     uPw"3K܂x+" &"*                     !'!! 3333//3)')))')1'!)3)' $;CIC--AU]C++3C8DDHMUOYagdgdgagUIH+=UrY22+HOAC     53 ;KEIC$+** !/!/&5; )3                  !!'' 3533331))1:1!!!1)!'')!))  CIIC+(AUYC$/;I/KNY]UUDMNWYOUdON]$?UgN222MHC3    EE1+5>!CI &'.&"  &*                 !!!)'!555:3::331)''))''!1!!!1)!!!!'' CIND$CUUM$+CC81=N8PYYUYml8]]W]+DUdN82-MCC3      5EVpPhVlN'  */."5*  )!"&              !')!5;>>>E>:/11'1'!!!))!')!'!  CCOA$CUYC$$I=/)CNAuwHNMUl} ]dP]+$=NdN8+2NMI+       *hw_WC  )53'5*&  !           !''''111 ;>KEKKE>3))11)!!! CCI=$AYUD$NC3 CYIhuUN]U}d8amW\ $CUgC2;NMI   5hpN  /3!594+"*   '*!             1)!!!::)!E;>CK\hK:3)1::1 AIC8$$;UU=$IC/IYIl}Y]dYxW;]mP$] HUdC-3ICI       $W)  /79NFN/         *  !!1:VV)!P!3AEPhwV>3/)1) !'!!!III8(++A= ++NC/ IUNu}YY]]]NAmmK/W $AY]A+ 8N;C  ! CK   ;>>5 "/:5"  '         .&   !'''11E::!3>EKh\K>3   !!!'! CII8$+++((IA+PWYHluUU]gIWCdg:+W -CC-8/I;I    !''!!+\!   "&  &&   4_w_    ))11111' )3:>KP53!     CCC8$2$$+2(AC/h\OCclUYd]I\IggE/N23-88Y;I   !!')'!W\  '!**// ;3 * "/'׈w       3!'11)11/555     ;AA2(-+ +8( I/_WOA\\NN]YW_C]dP3I$//-8N3=   '"!:\W  !*  """&& ʦ      .&&"4  3'!111! !   AAA3+228+38+;C+\NNAKWNU]UWWCYd:;C$-$ +3-8I8A      'WWW! '!&&  &  `׾.}p      *#44*3!311       ;=A+$328882$I;KINCKIIIUUAPC]l1;I-33 /+2-8A+;    1 !+WWN "'!!"/&""""" 1:Ĺwp"   &&#.*"  ++!'+! !    AAA+ /32-22 (3CIO;EINIYY)5I]]'3N+;=8222+8=;) 'E ' /WWW !  )1 3/// *'  VPĹk   "*#4*&4.*"      '!    ! ;;;+++-22/$;WgACEEHIUO3D]Y;$3/;;8+++2=3+ 111  3WWN' )' *35    1>}Ӧwwp5  "&  . ".&*&.4.9      !   !!' ;38+$+8-2/ +;;I;=]NAANNK+3NUUIA+3;2/++ ;;3'   :1     ;\WW !&/)' ')/" + "  !:pK   "#  &97F@  $        ;82$$$3/+($8;;ACNdN28CAm]ADANN;$282++$88; '' !  ;\WP!)  '" &  ):_wĪp5   *&*". "&.4FQkF  $    !!  ;//$ +/-$$3A;;;88AA=AHICNINUN3+382+$(3/;      !''))'''!!  NWWW '''       'KhhpӂF>    &..#5&& 47@@Q@JF#4$     33+ $$ 3;;A;88223AAADINUOH+++/+($$8/3   5E!1:11!)')))!! IW\W '*!!    &"" '5Vp5 '&."7*49"4*QT@4FQ7!+   !!!  /++ $ $8;;;;;;;;8AADANNUNI+$+++$$ 8+;  KP)11))35153)! IccW !'!   31>P*  &&4 ##.F4J*FQZF!'  !   ++$ -3;3;A;338;;AAAINNI$$$+  ++;   EE1!!)):>::1'' WlcW    '5  *&*"47 #4@JJ.#):1)'   !' !    +28;888288;;A;;INNC +$+ :'!''!1:EVV>1/)'$\lhW!   '   "*". ..# ..4749.:'  !!1'! !   +++22-82/28;;;CINI;  $+ / !'!!1'!1:KchE1/! $\wpP    ""  #**.7 #4# &JZ@*!!  !')!!!')! !!))!  +++/2-2222=8;;AICC; +    '111 11EVhE:*)!/\lI       "&&     #"""#.@J@9&   '!!!!!!'    +++/+++++8;;;;C;;/      !!11' /'KE5*'!)\pK 1      ! &"  """979.   !     $++($$++238;8AA;      !!' 153))';c\   "    '  " #.4*. .#       !      $$+++23/A3      '1:'/') ;\+'!)!          *)" *@4&"""*&4##   !!!    $++++-+        '''1EK1' ' ;; !'1:1'       >  *7*&&&9""#               ''1)11EE1' /)111:E:1     &*@*" &."& .#                  !''!)) '1E:1:1::)       "# 4F." &4&0<                    ! ''1)!!'11:!'1!!      *".&77.&*"&"#%6G                )'1)'1'!!')11'11)!      "*#"*&..&**9"*"*&" #,<6<     !    !!  +          !)))'))1!'!)1)!'!    *#.944.&&44&9**Q""##0B<06    !)!!    '!! ++         $$)'))'1)!)!'!!!   "9.".@7.##.4&**.#.*,6000G0  ))!!   '1)'!          /!!A!!'!!!!   9&&..94#&**.5&.&.4.600''1! /     #         Z[Lǿèyΰԉn<4F0.47# &F7  4*94&  &)*>:K1'')! "3   ..#          '!!)*>3!   !             Դ߻´jXk6##*#49*.*"&." *5*.&4**3>*'55P_*!)/3:'   +'            bǣͷƣjbnT...#&4*##&*" 7"#4&*&7@&.* *5.'./@VF@555>5    3)         B«ƻ·oyyj@J.9#&4" *5*&&*7* #.&#..4.9J97@F* '*5>P5PKEK:53:K>1   "   ""      ʹŰƳȸb^e<@F.@."##" ".JTF@@JJ4  *>*3>KP__PF>E: ".    ##"       XѰ߷̗sj[STF4@.4..4# &*""*&47QTF@J`ZF. !*!':VpwK>3>>!  ""   "&7     # J»ȻŰѻ̷ƬojeBF@7947.J*5"&& FJ6@4@@QJF. '&''>P_VE/)5'       #7.##         ¥Ż¿ϯ{veJ@F9...J" ****..&"&#447&9J@9@@44.  "'1111KVE:'        *.#.&&"  z̴̫̥èÐ̥{{oyL@@J.4.77# *&4 .."#&&#Q@@@7ZTJ  ')1/''   .##"&.    ## #      ".Ҩϵ{vSLJJ4.97F"&  "*#..""""JZ.4*F@*4.    !'::'     *77*&#.&     #4##""&#    ###  eϝϴƬnSk9@#F.949 .#"*49"".4@ZF@Z@7ZT   1>*   !.9FF4..9.  #&   # # <ϯɵƿsb[@JF99.@" ""#..** #.@4.#&@#@4QFFQ44*  !*51::11    >*&*444.#"*4.    ..#  "*  *4yyϿɝyon{veS`JFJQ79.  "## #797"J&&&.4@749@*& )51E: *EKJF.@..4.*"##7#    .7  """"&#"bnsy{[yevqJ9TQ@74    99#9.49JZTZJ@..&77@FP@* +>"   5pK:@.*"#@*"    .#  #&""&"0ezҧvjeen6TZTQ4@`& "  7F@.QT*.9@@7.*&*4KKF9*/35'   )>:VV:_E5@9@@      #"*njү{jnjeekJ``JFFZJF ##.&4@.4."9@9@J47*PQT@*! :5 5KPP::EV:K/>**"      ## "*"[eϺ̬yv{ynysnjz``FJ4`k`T.   .#"4F7*77Q@4".*4"::5 '5VVPK:>)**"&     ###.* #ƃƜve{ennZZQ@JkfFf`   ##"47&*4F@F`9#4*7J@9*#&&@@*/:5' "33K_hhV51)555>KE'9>&&*      ##"#4" sbƯooyyfJ@ffJZff #&4***JJ99FTT@T9".F@4.97*5&5&*''"5@5>*51*:5>)5>55557"       #,6% Bǧɿƣ»yZF`f9qZzf   "47*@ZQ79Q9&&FT*F.7_TQF5.&&/&*!5"::5&&5:5!K>V:>>'5@** "  "   ###/35!*:5>EE*EV_K':&"&".&.  ". 60%%%##0<<6,#   eïϯƷջͻzZ4qfffTf@   ""&".*.4Fff949Z@FTQ9F*IIWN\cN5EPPVwE::*1>>>_:55   &4 #"%%,<<6,%,%%06B6,0#<ƯïϿÛ³ŋ`fQk``TkfZ   4449E7JZzZ*TZ9F@&&fK\ccW\P>VV_V5)E*PP1EE55*)*   .&# ,6<0%600<00%0,%55pKE>5:*!" &4797#@F# 4B0,,0,E__KEE>5*9.**#.&"74.*4FJ99.#.0<6BGSGGhEV|1VP      ïƷyk̯ҨƜ̣yvbjy̬v{{{vشu}}}}}llyyLGBLsne[jvyvvnnyovyƸ¸jnjXLhVʙEVP:'!l1!5hiiE   L÷yƣѯ⟉ƣyn[nvv{yƬv{{Ɠَluclule٠b[yjeXbyosvn͜yyvXLhPʂh:\E>!!C1!>3hiR>     0槷÷ƨïn^bsvԡosɶ}u}cl`bnjysvvvnjyͻͷyyeXhVܞw1KK>/!/)'5):3:5:K):wi||RE  yЧ̋´ѸѫsnbXbyy{o{vɮؾl}ucuujenyssvsvsesƫݷ›{y{ywKw:EPb'1'!')!!!/w:)|!'c    yϵϿqsjbyo{osev鱾걾˶}}l{ǠvjsnskLsѻ«ѯsnsnowKw1Ehb!111:1'1!''):w:>|1Ep BvɜϺǴ̴ƴư[ejjv{vyyvyϵؾɾl}ll{nnnyyvbjsj^[vô͸y{wEӽ1Epb'*!)'!:)!3!!5h>:KWEc   6ҵɴõƿ̌•yvynúnjXyyjenرuuq{nsss[ZXSsúΥݫŻ{h>hwcu[!!1'11'!'!)h::ʙp   Ǻ䧺̨ÜyyͲ²^vvov^bk[j꾱˩}uuunwsnsqZQLBSq̗{֓γ{h:1!lh[ '1!!5')'))pVPp   ɿڿïƠyyvszbbkzǩuluTyyq[ZZB``q̸ųvnpVKP}pQS3!cK15>EEE>KV5M @ %  !!!' #$ !*% "%"" &$$-!(!$&")(%%%$1#&*)'#(,%,''&4(((&).-)'/ 7(+0+++(2/,#9*,2,--+-41.!+4S#=,7./551 20,&@/18.;!(C72+239(E86#0?"35=*G;4/56<*J5A$68@@8%V),L2G">838:B.O+SA=)4J$:?H2V8O(/ZG@9@BK7U%y3["JE01_"BDMAL89Y&4` MC>9\#DFQ4c"9_&>Y,DQ:FHS3e)PF@OL05g"@\(;b& 6h+GT@TICILX8k#=f&Ca*WP/r'' &   $.+$($+.5D^n;+   +DY5I R5 nרz׾פ &g^z       N;þ+   R@vvvpl,GpG"&-'""""3C3  & &  ,D.(..$(+@5$5NYvӕzN559Y=,R9zâȚȴz ^C}        ^Ⱦȷp   5^ſvll&'-'"""'-"-63"& ,"&$ 2  5R9(.DD+$(9909DNgNn^9p^@I9nzȾD  &ddd    þ׾׾$,.zpzzͿRpv'''""""-3'"'--&& $$ ,  2RD59NN+$((((DYNzX;g(   (Ig^2$9. Dnz÷ӨÚ$ z2={td $ $D  D÷ͨD $.R}pvŪvvl^2Y"3>'"""'"   $555DYY.+,(.5(5$pDNnӨ9 9(@Ig5$Y5 ӋYȢ״ͷ  &"Źo&  5 Y  þ÷z   @pŝppvzŝpvp@GzŤv"-3'""""   ,.5D@.+55@9(DD;n  $I+.9I5.DȋþӤ  }oſܱ}^  p.$  +܇  a÷n (  Dz@zggvpzvY -6" """"$  &&55$($.(95.$  Nȷp $.9+9(( ͚Ⱦz  2Źl  & TͤggN+$$NRDNQDQD;DDD.Dz.ngDz|þӾ$  5Ȥ͹v^gvvz&&"& ,2 """"&&&"  & &2GG=5$55Y9$+9$.++(  5  Mŧ^   ^&gvn$þͷ  DpzYggzvzpvgpgYg"" 26&&& -"  "&&&&&""  ,G@GYR,55N.  Yp$...D;.!8F.+..+$+5$$+   $CŹ2 ,Ⱦȋzp+  zȷè  $pvRYg^IRppgp^gpgR9Gg 6=&"&"6' " &6,&&  .R5,=@$,$9$ $$+.$$ga     ztſl  N&þþͷþzD  ^^  (.5^p^gpp@gzvgI@RY6C&",&='"=,"  .GG.,GGG$59(55, ,9.($(5.0.^N 2Ů5 Yvg6Ū÷^ .þ   G^pppzGzRR&,Rpv,6"'=63"""&=&   ,2G25RR$.I.  =I=5.,DD955IY59gg  5}d  YRY.þþ÷Y $þþ   .Rppzpzg^^^zvGp..^&- -MC'""-2&,6&  &.=$$59$5(  5,$=^$DD@99YY5z܁      R\lG g(ܷ;ͨ÷N 5ȾȴD$ 9RgzzvgRvzvz55vg"" '& 2\M'" '--&-6&   ,2G=,95@.D9$.G..^ 59955IK,@+9.+gR   $2TdŎ zg$ʹ÷ȨN5 RͰȾפ(  .@YzzRRY^RYvgv,633"6\C-'""'''"2&   5GRYg^599^@(I@ ,g 559955IY95zg,   +5&{ٿŧll2RRD9^÷ȴþn^ zͪȾ  (@^ŁvzgGppvpgpp'==6"6T6''"""'"""'&"   5^I@^^,((D. @I,@v,@DII@9II$ 9=.   +.G˱ŹYpg÷÷Ⱦïzp ÷ @ppgYYvGgvRgzvp"=MC"6M-"""""-366""&&$  5^I9Yp@+59$I^=I ,@DYY@9I@  2=. +5 $ldˣCtl}pzװȾèðYDzȾþ=   YzpRzY@^"6=6-'>C'"""-3>C-"""  .I9@^pI+.5$ IY=R,999II9.=$  GG,&&.9Y}2˺{Co2Tldgzި÷è÷n z״=2 5ppg^pzv@@g33--6CM>3"33-C-33'    (5$GgN5((9$  9I6Rg.D.+@Y9$=+  RG5=,  (+9262˺\l{MdTT^nӴרÚèâèD .ðͰv@& , @vgvvggpzzzGGgzg3-''3>>>>33C'3--3&   $5.YI5.5I(==6Yg 5ND9I^I,=,  &RG5@, ((."l٧UE>3TT"CŗdT-CRNӴȾ÷ӾèRG5þÚ^DD;"& &   5^pzvz^^pp^^vzYRvzzpR------>MM'"\3-6"""'  (9$I@959I+ .,5 5YgYYYI59+ .p^@G. $(.&ˡ>-3-C>3jαT"3pgӰȾðӕzpz2ôg&"32&  .Ypzv^^zg@Ygv^zvvRz@.'--3-->\Mj>3> 3- (9$.I95.09(, ,NggYI999( 5pRI5 ((5C٫eUw'Moſt--dþ÷ðzzz^οG$..5=2'->6-,,"  .gvggpvRppŋ^pp^zzg=,""-ECd-"''>6  (9.=R5(((9 9^$@II $D^gI959N5  =vpRR5  (+5 \ٖ\o{M--TttlzȷȾȴ÷ӷþȾTűzG& .R^Y9R^''6>-3G6   $@^vgzppŋ^pvpvR''''-->EE3-M"""3>66  +@5II+(((9 DvIvvp,&.NYD55@5+  (RI=I5  ((.$M١j3 >M>6dlþͷȾȾȷþȷþä͝}TM &@RR@YgpgG^g'3C>"-T=  $D^^=Rvzgpz^vvzpvpzUUMMUUU\M3>E-3-3M636 +@.@I550+9$(R5YYI=.+9ND59D .5,@5  $$+,-ţ˺˺E{tC'M\\Ttltvzzzzlt{3326lv^GR@v^@GY@^^3>E>-3C2 & 5pz^IGGgzpgzz@g^vpvg^pvpg^.^zvpMMEEEEEE3"3>E\>>3">>  +9+9NDD909 (Y5I5,I5+5ND9@I50$9.9.G9 ($+$&ˣ˺w'j\d3\t{t}\C^9DI5+@.95@$$$,9555.$.$.R22{eEdTR}vIGRRgR^YgpYzv\EEUM>33,, (R^^pvzzpg$G^p^g^R^RRg&RpRG^zpREEEEEE>E>'-3-C33'>C"  (9+@YII9+. R@=5,D5+;DD9@D++(III=I9(((5-ź˫w'oMoj36.$$ ,$$55..95,,$ I, 6&3wllv^65vpglR}UUejC3>=6&  $Y^Rgpp^I@Yzvg&@pzvv^GGG^vRzvRYgYEEEEEEEUeM-3--''6>  (5(9N@9.$.RI=IG555DND9@D 9XK@I5 ++(5 2٫>\"{>\vzY^vvppz^@pYRIIYgI\tjw}g@GvRR@wUUejM>CC6&  (zzRRY@==..5+g^Yvpvggg'-3>3-Eewj3E"C6"'33   $.+9++$59YY,=I,9N^^N9DN++9KI99+(+$+@ ˖>jtEe3Eot\3\^vpgppvgpYvvg}v˧ttM>opg^pYp^UUeeECTM=6$ $p^.9ägpgDRYzvvvv^9'-33>EUewe'E"-M-""   $.$.5+$(99@9.555(.ININ9+50 @YI5@$(($Gw˿Mdtűw U'o"T}zgGl}gvT ClYg^GYY\UUUMM\T,2  (gp.5zzvv@@YgzgpvgG>E>>EeeUUEE'3E'"  $.5=@9($9D(  .$I@(D059Y9.+ G^I5R& (($.$٫wMŹTvTd}v}ˡT2vp=pzY@5RjeEUj\\\', $ 5gDDgvzzz^$.gppvR5pvv>E>->UeeeU-e3Ed>'"  ,.599($59(  +D5YN9@$(9@9ND$,( 9R@.I, +($. ˫''-C}TG^Tz}gRl-t˖d  6zRvv^G}TUEUeT\d-& $$ +Rp@^zzpY^pg@YvvpR^vzEUE33EUwwEEwET{d3'"   $5@@99.$+5( 5N5Y90..9YD59D9.+ 9G55=5 +((+&ٺU 3'"dGYzdll}gvMo\ Rppzg}MUUee\dd6,$,(  @^9^g^^^g^@,ggpR@^gpRUeeEEEUee>EUTo\3'-&"   +IYR@D9+(( 5D(I$$5NYD..DN5, 5=.@99 ((($2˫ˡEſMozpvp^gvlpt\-=R^Yvgzp{\ewwo\dd66,,((RvDYpR^zv.9@vpvR5@^gpg^gpgR@2EeeUUUEUU3EUT\C''-&&   +R^I@II.$$$$  5D@9YYI5.DY9, 5=,I9I ($$&ˡeſTt'\Gvzzdg}}M\d2pvpRv^vYv{dwwwed\6=,&$  @v^Rgzgvz$G^vpR=@55RY=G=Gg=G3UwwweUUUEEoeE'''&&  $II5.IY9(((+(  .D(N5+IYKNI9DY5+ .=,I=R $.&ٺw{tdoEM&gvvpvzz}@6GTTl}p}lg}}{}Uj{TG Rp=RR@pg5p{MUwwe\d\>6&  Nz^RYgpR^vz^9gGvvp^G^^Rg^gG^g-UweUeUUwo>"-- $D9,.I^@+...$ (D5^0N9IINNYNNN.$  ,=,I@I  ($9&˺w-""dd\EٱT$Ipgggpvvp ' 2}}lg}}\j{>CjC& 2ggGGG$l}3>ewUUj\>2"  9^zY^pp^IRgpvpGR^@@Gvvzv^^vvEwweewweww>"32   +RI99YgI50.+$  9.Y.N999INYNDD5$ ,=,@@@  (($(U3{jpT {UwR$vvvYgp2"-2vvp{}tww{d62@vpgYR}>EwwUUj\>' "   .Dp^gzzzvpg^v^^g^pgYYRRUweeeeee>'6-  5YRII^^@550(  .+995(0@DDND55$ .=.5@5 $$$$6e-C3g2''3dY(zz^6dMMtv}}{˺U3tt"==^^}\UUewT>'"&& 5YzzzvpRgzvY=@gz^vEewweeeweE>M>>>"  +D959I9+(59 +55.++I9.DN55, 5@6,I, (M˺o3tCMv "-6Y+Ip^^pv^\\l}}}lMt3\j =@@R$}\UwUewM3-"&&  9Ypp^vRpv.@RRg^@Rz">EUUUewU>">EMC   $($$995ID(9+.X@(DY95,  5I=,I( $ t序U'd{>>towιg" ^@YvpR=Gg}l}3Tl}gg>6j{" \t{dRl^9g=pz5p>3ee>\tC3'  $.Ygp^p @pzpRgvgvvpgzEUwEUwwweUE3>>C>  $5@+$+++ 995+5(.995+DY+$  ,@=5I$$2 j˖{>oEeU@55R}ggY@RYdl}oT˫6dltlI6d}jtoMtotd3&2^vv$@,@^Rz\eee\\U>TC-  DI5pggggpz=GRGzgpgpppUeUUUUUE333" .9gp95Y$$  9$(0+$II$.59N$  $5=@=( $(.+$$,&{wwUejt3>3t3-w{Cdt"  '.d26v==RC-6dTMd&=&=dI=l>-jM'3-EC>C2jgG6,I@=Yg{o{{\>C{\C&"$  I9+^gvvg^gR.GRgppvzvwwwUeUeU>333' 99GR55Y(+$ 5+99(99(555D.$ ,==@=, $+(+$Tjee3'"-"3 'e\'3C &26" 3' ' "d =G,2=26C"'ME> Cj6=&@Rvppzvo{ddjd\\tM>2" $@gzvpvgYgzz^p^pvpY^gzgwUUwweeweeU3'''"  D5,.$+Y(0($ +.ND((59.D95@$@+.====$ (+((3\3ewe\\\=2\oC\"">>"-M>"&2&&26&&2"6&2=R6T>6M\>M\ ,I2,&"23>>E&&llI66Ipppvgvddddjjjd\M'"  9gv@5,RR9Gppgpzvp^vv^@Y^vvU>3ewwweUE-  95$$D05(  $+I9$5559ND.5+9( ,955.$$$RjwwΜoM\\\jllvl\}\@ =}^IvY^YRl^C>3'M\dl^RgY,,RY^^RRGM>ddd\TC" @RgR@595,Gvvpvpvz^^vzvR^ppzgGppvU33UwwUE>'"  +5,$909$ ($509909ND+.+,$ ,5.., $2⿈3>}{}vRYIvM'C- C,YI2=RYYYRRG>-TTCCCC",2G^^@$+$$5p9$^zpgpgIRYGRvvvp^gpvpRzppeEeeweeE>3-'3- 9=$$+90I$ .$((9.(9D5$(.  (.,($ ,M36==XK,II>-MMdjT=CC2G@IRII==GRgpY=@^^IK^^I96Gjd^v^cg>"&22, ,6=62,& 2 2"6d2=@G^vp9(959,$Y5$gvggY=.5Ggg^ggvzzpYzzwweUwU>3-36- =G9DI@.9  D$(99+5+$5 $.$   G XK6KC&26GI- " ,(+0.,&&2G=&,(99((,,"$9I@,K^I9,gT"CTT-,$,62& & &dRRYgggvpR95555@G@9gvp^^YY..Ypzg^YRg^RRg^R@zvwweeE>---" $9=@NN@.+ N(.D0(++($9   .$   @& 2=Ky}jvyyyyyykvppv}l=XIKKIXkkkcXKI992 $pz.IlI2" "-T"Y& ,=RI=2=G=^zzlR9$ vg^@^gYIR^vI5^gg^gp^G@RR.,GgRp@.Y^vwwweeE>'""  +559NI5. N+$0D0++.+$@  (  $$(6Tνɽ²yK9$I9,=2gl>"22I" ,@G62 &$=G=,,9I@59I$YY9GI=55IvYG^R@.@vggYGg^,&@g^p@&..59wwweeUE3"  +95.95+9 D+.0005+..9.  (( jѭycykvX+, ^vp{TCd6G  "22&&   $$IYYpY9v^pgg^YI5@v^Rp^R5Gp@^^Yz=.RvvpRGGG,weE>>3""- $99.5($D$ 9+5.$05(+(.D   $$@⽽ѲǦvI$"@ "\ll^22G=@=,,  &&,$,=@,I@@=9RppIIpRDzz^^p,RYRz@.^zzgo>33--'""$(59,$($ ($$((($$   &2=GGGg^R^^.+.$ 9c۽yyK9 -}tſ÷gRG5 $ $,=6, R2==5^^Y(($.9DD95$Rg^gpYYgpzzvzzzv^\jC\oC ""  59, $  6\l}ſI,(yئkc6"j{z^R. $& 2=26&R22= 2Y. +5+$$.5.+5.+,.$"'"   $,(   . 6\dddtR$$$(kɦǽtt}}l^  ,22& 2=66$G,265g9$          $$$  Y &-C\t}Ū}6  (9Kɸ},26Gg=G@,"2G=6"@22=@pD    $$   $ = $&2&6}dl^&0k۟y¯ѽՔ Y  @@G2$2GGC,I=26@pD     ((  (,Rgl}{C5@ 0IXŸKyѦ9(,   2.@5&,GIG2"R=22=g=    z^DD.  (+(    9Gd\-&  KKDzyXy”9  .$==,2CMG6&I=,&,R. pngaD5,  ((      =&&"}T'Iҳ9ǔ9KK(,@G,->C>2,G@&&,G.+ZnͤR$      G=^z2&pl\űtT, 0XkɸǸXNѵѸy $$GG,&6C2&2GI,,5R.  .5DQYnȾn+       2GvR6gdltloŧ}62&""$KXkəYzՍyKI@@@GGTR90( ,RG&&>C-&=RY62"=Y5 5zÕa$     =Rgvv}Y=2  0kν۟gNN¸cccY59=YG "CT-&R^p@=&5R=    (gYYRD.        Rg^Rp=  && XgǽɸyY=^="M\-&I^p==,@R5    $^vR$      6GG^plRYd6,&&$Xyy^ռ¸ƼѦ95lG"-MT-,IG,2Iv^+ $RpzzvD$       &-&&Gv}ppv=,5$9Ѱ$ @.^+ɼƼѢ.p^6>C6-&&R6&$=pv. +z׾@        @^^^T\llgp}lG   +5;һƼʻҼ( Iɼy.^g=6C3-66^G=&$@^5NzȾpY@+( (  ,G@GR^pz}p^&&, &  ;cy $ ʳƵ09IG&2T6'66RGYR=.$p.$(     "&6Rl}lddl}}v= $  0kXg5 R pËyg95&\36=6,Ig^I,  Y9  $$$$$    6T^l}CCl}tllt}pv^Y=    0Xkkc $R 5.!ƵX^&,T"6=2"2I^pp9 9$  5$ +( "CGd}z,,& .  0KXykXkĻy$  ɼY66==I=6=@^zG  5$ +$ ,2C=66l}Źg=, $$   0cyyϻX(  (ƵgR=,R=622R^.  $$ $$Rvv}}}{tojd{{llvpG  ,, 9kyџ R $!KƵǯR=I,=$$&,GR$ +( GpYTGC6>CMT\\do{T\tto{G",  + (YXXyY  (X0¯زll=& ,Y@  ($ v^CCMTMM\jj\\\dT\t{{d=  $(@Xyyη܋½νɻƵظսο^$ $^= ++,td}{{t\T\\ot6   (XyƻµǦgR$)ƼѽſŹI,$  $$  {ojttdMC\td6  &   0kkkyƼƼy z !½$,I     d{{}{oj}lvG&    0kyǽ¸; !ǽέc    6}tojdtp^2   & (X­¼ʬyy +KǦνǽ¯½c.(     2^ljd=$ 0Xyʼɽ  )cDzսظ¸ۯyvN+  $    =dT\}dT\t}dC5  (0DkyɵK;Y0ѽ½µycXNNYN;!    RvCCt{}l\C2" Ycyҩi ک#!ѽֳ¸’ҳƼkN(((!(  R}\dT 5IKy¯ʳռ  yX(ѵ©եkyyX0+.$$     GT "  (9KccyyƳʻ) Kؼ¼ॻkcccXKN;;;DN$(  @T> && @KKKcycXyʳʻkY(  հ¼ڒƵkyykky$ =t6 &  9XXKKXkXXճXY0Xɼɵɵyyy$ $($$  ,G&    (NXKKXXcؼƳʻּ) ǸեƻصǦyy$$$     0KccXXkkkɵ5ۯɽɼʳĻʻƳѯ($$   (DNDIKkvո¯¸ɼռƵ²զ.$$$   +KcXXXXcyʻѸέǦǸƼKXNѽɵյ½yѯɼ+$$  0cyyckkظ━gYp}Gvyyyy״νŽѽ ΪDz¸νѯ+$$  0NXkyyykyĻ½ؿp\}Ťyyz^gvppvRdpK(.G=} vg=6vgyvyy΁ѽ+$ 0XkkccyĻĻ۽ǭαðyygpvzldl}d>C=69$, Y^66pG 2pgR=lRgv}vv}plv^vvgkyyyyyvvvvgpv^v²5+ $ (9Kckkckyǽظǽ={ſvg}t}{joltv^}= GYlY^T-\t}ll}TdvvllTTdGRIG^vvvgI9.5.5>622-&&&6G@Y^RR^^IYplI26\}t}{}^vD+$ $  ((0KKKKXky㦔¸&\d{oŤgGſlt}TtG =dt=vd &\dt}tTT\d\dojdjl=Ivdjll^IGR^YGTddddldCGpvg6""6\ddjlojdddpvgRYv 9+$$$  (9KXKKXc=lC\ttd\ltltŹ{C-TtdT\oj\dt\>\T22j>>MTRd"&dTj}\to\TjdldTjt}}}}vdTo{{{ddd}lT{}t{}}lll($$   0KKKXXXc۽(}TTM{jl6''M>33Tűo\C>ModM\\C>3Mj>-CM" M-'Mj6 2"M6Cdt>dt\jtj}dt{ld{tt{  0XcXXXckѭս齽ߔIg}Tdo\jl=26>\TC3Cdjt{t{{{\TMod'>MTMMjT"3>>MM-'{tdj\>>{{t}T>   0cKKKXckkǽџKo{6&\63>->3>oTMjj\dM\Mdt{\ M{}{Td Cod\Md3Mo\Td{tt}$  XcXXkļ¸ۼ.קt{ltddMM{\doMdoT\{MC>MjT  >\\l'3odT\C">{\>M\Tdo{toTo{tot}}}to\d{(  0XkXXkkkһɽ½vIŹvtűţjdT\tMt}t{{ttdC3>\d>3{jTtt2  dTM\'>--C\\C33>>CT{{jdjodCjjjt{{tod\d\o{o{{j\\j}{ood\TTTMCCCTj{{t{(  (IXykijɩѸ5gt{>>ˎ{TCMM3 >dld-&o\\j3>o\"3\C>3\\TT\\Td{{tTMo{tt{oj\Md{t\M\\jjdjjT>3-'''"'2--2CC(    (Xkyyykk½Ǹǭz,{α}2{ŗŹtŧ}todM'Cttd>-"d\d{Tjj33\{o\T\ddjdTTj}}{jMMt{od\jod{d\jttj\TC>>33-"'--266$$     DkcXkyXXkkɩǽǽ,dd{--Tol\-C}}{{j{{jCClojojTMTTd}doo\j>MMCTtjTMd{tto\j{tdd{tTCT\\To{jjt\MT\\djjjTTTTTdjj $     9yX9ckɯǽ½¸ɼѽ½26&2"&---6>>=2&"23""-T\t\2Cd\ddgvl\CT\33>-3>CMTTCCM>''2>>C\\C6 -\MCT>>TjC'>{Td{}jdj{j{oljdtooooodTTddM>T{M\jT\jo\MM>>TttT2-Cl  ;cyyXkѼǭ¦Ѳ½οǸI2Y&&TC>-'3CC>2""2'-'-d>"6C6M62CGC>3"3"""33''3--"''""CCM\MMdodM-"2d>>MTTT\djo>TtMM\dd\TMT\dTCMMTT\\\MMC>3>CT\jt}{oj{}tttj    !Nkyέզ½YŁ}j{{ttoddTl\>\tll22j\C{{TTC66CCC>-M336--3--3-""-333'">CMjddj3M\\2-T""'-3>>33>"'6'"2C>3>CMTddM62>d}d3'Ctd-'6C>Mdtjt\  0JckkɯՐſџ¸½ǽpY{dttjjj\C>3\T>"l\Cjdottldll}l>">j\T\MMM63CTMTTMC>3'&""CMCTM663'-33t>-"'-33- ''->CTd\>33Cdtd>6T}{\T\>'-\C>j{{tdC-3>M\t   !;cykckɸǔۼDzǸK6vTC}dt{t\Mdjd"-{{\\Tt{dd\\djC'3od\\CMCCMCMMTTdodCT\>""MdodTMC-''"3>T\M>"'ddT>3>>3"33"-33-"'>\ddt{o\Tdjdjt{t- "6CMMCM\\M6>CM\{   !!0XkyyʳƵ½Ǹ(l}o6jt->tdojdo{t\CCC6CTM'"\TMC363CT6--3>ModM\jT->dddM>>>-3>'3>M'"CMT6}\MTdj\>\dCCTC&3odC'">o{\d{}{M"'d}t\C\}tt}tojtt(00XkkʩyظļƵɼ,v}tdd{{"6ttd\\\MTt}C'jTTC3>>>>--6633>MC>M6"3M3MT636-3C->3--3366>Tdttjjj\MTdTMddC6Ttd\o{olj{űt}t}}o\\dj 0;Kyڻ@v}totjojdt{{}}j"\{tttooTd}}tttdTTjjTT\dddo\6-32\oTCTTCCMM\TM>6>33'Co}}tj}tt}ddldd{űo}o\\j;cXcykkkϻ,{t{tM"{t{}}}}t{}}T-'>\tjTjtM>d\o{\CM\dM->\j{}lT3ot}jo}{tt 0KKKckcykkkkĬĻڻʳg,}}ˮCtjttj{}d{tt}{jjj\C''>TT>M\>3MT\TMTdt{M>6T{ttd>M{}{ttjl}t\\{tj}t(JckcckcXkkkĥƵڳһ&C˹˱C>{{{\\\\tod{}{ojjt}{ddjT6''3T\MM\MCTjTCCT\jt{}M'6jttotjj\\j{{tl0Xkkckyһϻ,"t}{tTMC2j{tdjoltd\jj\doj\MM}jt{dtj\\dooj\jjM6--Md\MTTMMdM>>MTMM\}d3'>tt}{ddj\j}{{lŮT0KcckkϳԬ={\d\T\oj\\\\o}tM3'dtTMM\\MTd\\l{oTdtt\MM\T3'Tj\M\tdTj\TTj{t{oTM\\C3''>TM>>>>6>>6>MTTTTdjM""T}t}}}}}}dCddot}{l\l{T{ű(IXckccƼĬϻg t}{}tddot\Tj}t\MTT-"o\j\d\Tj{totMjtdM3>doM->j\Tl}jdjdT\{{jTCCMM>3'"-CC63>3-"'---3>>>6d\'-t}}tlt}}dCo\T{{{{o{d{{}ŹMMt(XkcXKckXkƼɼڻRlo{{}}TCtt{dj\MMCMj}t6-dRRlpjjj\Td{{j\\\\TMMM33M\MCTM63CT>"'>C>-MdC""Cp}lddttoj\CMt\dt{{{oooC3t(9XcXK9kyKKѵѼʻֻ\Ttj{tdl}gd>T{od{t\TjjTMdj-326G=CTMCC\o}{{{{{tootTC\{tjttTjo>>\jdCMjjC-2l}lddll{j\dd\j{tj\d{tjdjtl{d3>{((9KKKKKKKcckyؼѸijƼKItdtt{^C2t{jj\3T{>-26=2-333>C\o}{{{tt{jE\{{}\Tot\33\jjj\d}C-d}lddllo{jej\MCTdjto\T\\\{tjddTCTdt{tC'-Mo@KKXKKKKckXcyݼǽǸڼȪ{}TC{{jMd}d-6G=2--3>C>>\}jtodT\jtoMM}{}{TMT\\MCMMTo\MjtT26TtllljjjUejE>M\EMttdM3>tt}}{ojTMMMTd{{\CMdKKIIKXccccyyyyyѼ¯ռ”c⪈}ttddTdoot}{o{{{o{}dd'2G=-3CMT\C>T}\j\MCMTdt\T}tMt}{jM>C\M>CMC2&}ttldjtU\e\d{j>Co{to\CMT\o{}tdj}t{dCCKKKKcccXXkycyּYt{tj\dd\\TMTd\C>C3"2l}GCddjoojjoj\{td\dj\{\TMdtt{{{dTMT\TCCTTC-&\{{odtttod{{\d{{dMCC\o}ojt{t\Td{{{o\KXXccccXXkyեոµҳɳʻTdT}tj\\\\TM>>CM>- >{otttt{tjT\{{j\dd\{\>\tCMtttd\T\djd\\djtjdC3o}}tdj{{ot{{t{d\toTMMTd{odjo\MTdtj\\j{jccXXXckkcѼ¸ϻĻ9,td{to{{t-t\d}d>33>M\\ddj\djjT>3'-dooojdTCMjodM>CMMC-'>\oot{tdTMTdtddddt}{td>Mjtddj\djo{{{d{jTET\\\dddjo{{tt{ttt{toddot{XckkXKXkyݼɼijvoCt{>j\dMCC>63>CMCC\\dojM63'"tttt{{{tdMMT\\TMM\j\\M>>\tt\jjd\CCCMTTTT\dooojTCCT\M>MddT\t{{j\dj\{}M6Cdttdt{jdjo{{tt\MMTKXyycckɩʬĻĻN$lT{ltttl\ll{}-}{jMdddTCCCCCCMTdj\C-''->3 tjMTdjo{t\djjt{too{}\>ddotoj\TTTTMMTTTT\djj\MC>6>CTTCTo}to}}tttdlTM\jttt{tddottddtKXcyyyʵռĻɩ.vl}}llllldTd\GTddT>2Tlooojd\\j{}jot{o\>'-C\M j{dTMMTjttoTo{{tjoot\ttjjjjjTTTTMMMT\dtoT>M\TMC>M\jddjt{}tooj\jtTT{}tj{joKXckyݼƼĬĬԻ¼鼯yNp}{l2}dj\\tj}td\\\dojd\\TMd{t\MMjtTMd\M\T>-""-3>'-''""''"CdTCTdM66>CCCCMCCMT\\\\\T66ll6"Tt}tkkyһƳϻئ(9.&G^^RGGGGR^^^Yvp^pz}6pſŹd}Mjjd\\TTMTMMM>--3MTCCMCM\dT>3>C>-"'C\d\\dT>TT>2CC6--6CMT\TT6-=6&  =CC=GdddotjjjjddĬʻƳڼѽ  5Y2Glp}vŹtCdd-CMCCCC>666>>C>33>MT\d3">\jTM\{M>333--------'""'--'6\jMCo{TldG6GG=226=GTY\RddGGITG& ",22CC>CMdjoĻƼҳߟ   && 2=6,&&&"&&&2CTT6"-6">MCM\\\TTT\d}l\T\dd\\\ltT\{\T\dddTC>36663--333-3"6dlpdI=@G=2&,&26===GYl}}vd^2&26G\gdlljd\ddjjĻĻּҳƥһ㲽$ "& &-22&&-6GG=2-6TT6TddlCC\tt}}}}ttjdddTC>CM>--=RG52&$ $&  2GRRG@GRG2,=^lgRYllt}ijڻʼʳʻոظѭ+          && "6G6&&2lG>Tl}}}pdt}lG55$ $$   ,6,& ->TtĻʬƩƳʻּĻѦ¦զ      &&&,,,&6RRRGG^R.,.5@@GR^Y@5,$&,.55,$ ,=5,6TTMMTϻƩɼƻĩʻǸ  &, $.5559.,$ $+,,& $&,,5, @gpg&-TddTT\Ļ¯صijֻ   &55..@gppGGdlplll؞¼ƳѦ$      ƼѯՔ¼ϻѸǽѽ.    ϻĻƼѦyǽ¼Ļڻǔy5    ϻʻƼǸҳϻƼI ĻĻһɼѽβĥʻɼDz+ ڳĻռǽѽĬĻҼǟ$    ijĻĬѯǸέڻĻҼƵD  ʬǯؽǽƥǔYϻĞؽDzµϻһҼʯN ĻֳѸɼҞʬN̻µѸŸɸƩϻDƼƼ½ǸƩݬʼ۸ij;Ƶέɼʳƞʸѯ;ĻƦyέֳҳҞʬ0yyǽǦ¼ɵ0ʻɩyղǦ©ɼݻҳ0ɼ²ɯµּĥµҬ0ǽ½½ʻ۸һ0ռ¸µǸƵ¯0ɵ½µղǟ½¸kɦƩʥ0Ƽ½ɼѸŸ½ۼѼƞkɼե0ؼɵ۽yy¯½ɥɵǼ켙+Ƽؼџ¯Ǹѽ㼼э+ĻɼѯѸ½¦؟k0ƼƼƯɼ¼ǸǦѽ¦ﯯ0ʼռ¸ɸµ½Ѽ¸Ն0Ƽɼ¸½¦ѯѯəǦkյ™0Ƽɼ¸ɲظյկɍyد0M @                    #  #  ) & ' - " )!/  $$"+!"&&#1# "#-$( & "%3$!)"%)%0)!$"('6'#&-#%'2(+!$*(6,(%,& (1%')9*-*'/)(*1%(*,((),:,C&(/-)"+3)+ 1* -=$2 *,%/+(+1.,%-5#4$/C-.$1-6.+./&07&7$/0&3/ "2I)19/2+*2:*8&41#:123(52$(<(,4;,4C09>8@=.:C+1H5:?:6F15AG<@;9F0A?2H?$3K88I5B>BB41N=7L8=J3@D?6ON8:QVAHMGES=TK1@XCHU?LOIDYDLQMHZAD\GD^IPVEK[EPTO_P4I_HEdOSXRP^GKbLVZURaJMdNGhSQeNMhRmW7Z_VTgOQkUWhQYjUUoXUt]^nZ_t_dAdxai{juu}R""""* * "g M @*"*$$                  &! &"       "*$**$               & ""     $*$$$          $!$"! ""%!$!$         *$*! !!!     &!$$%            *!*$        &( $$%!            !!*$     "%""""!$%"""               $0!     !"(((((" !""               !*!         "((%%"" ""             !$!       ""%(,,(%                $        "(%(,/,%%                   $*     "&""%((//(% !                 00        %%%%&"%%%%(%%                 00        "%%%((%%"(%((%"                  "!0$        "%(,,,,,%""((("                    $$*     "(,3333/(%%%%("     !                !$$         "%,///,*(%%"%"                $         &%(/,,(*%""                   *        "%(/,("&%*                  $           *%,$%"!                    *         (****                       !$          "(%**$!                   $$$"                              !!!       $                                    $                    !                                       *00$                            !!                                                                                                                                                                                                                               !                                                                                                                                                                                                                 %3, 1JL=#                             1;Hj{b: #sveO9)                                 "&EPee|zhE HvQ5                        "&1=GRWtycxxmvL 1\lxgS=2&                              '.KX]lxqxyiuzmzV#LWsxrVV?                    %/3;JLZURWkzqxsaz_vb_P2                      %3;>EUelzzzj4                            BZnjWjUG?116;("&'.?KCIII??..' # iǰo )).999?99....'')(/;J6EOKQ]llsnB                    %:H\jb[.:44->&''2=???8.9.9' #ouŢf )-'.2.9?DD59?.+&/6JS-EUR][bey~g%                     ,;EPS[eD:252;-'.))22..=9992+"#Qzǭmxi^mx&&()..2.999:552'&%,;JS4DKRRQbe`+                       ,/"+HJP[hktPJ4>4;1"&"&1/,6;49ESpgTFFΠzǴzriI^`B4Npn\E44/,//-"&""(3;AE4=KaWR_lwstv+                         %36(+LNS[_[[LJAE:;6&%((3<<<6;T`γ誧ӽЧrrlllVmp`ή{B<3<<33,/3(&6>>D:5bve[[ol^ew~e?                  "",/,1JJSUUKLN>EN;>6&"&%/7773HEHHEA:EHJJB(""!07777FT`pijpƯqsaQRaczxuupppĹ}TM77770$0(-JJHJALtvWGGG\gLLH==5+                %-/%("+4:A:EHEEJN=JN>B(%"*7777FMTTp񺸬rmmxu]GUh]zxu|Tp}ijpTM7F700$/,&:JJABEZvtaUH=NT/--44-+                        %%&/%&"-:1>>:2=LST::J>;,""(0077FMMM}}d񺯻mc^imlWK[kcr^sMd}gTM7F00**/(+>J>;;NjjokWUHJ;1++-2))&&""               "(" -&&"&))>>2'2:A>=2:;;1"**07FJJ;3BHDOR_eUP?'.55-)+)&&&%%"                  (,("&/(,1-11-:HEE2#)-):A44;;3&%$$77777MBT}FMɜz^^uu|eumu]RNFMd}dTM77F77$36&:4+-1++)))&%"%"(                 %3,((+("&&-++4@@@5## 5E4;>B6"%%$77777TBMpF7Ώrccm^^iXrxqxr]WLNUOLLDH@+)4-)##&&))&"""%%>>(               "--,3,%%& && &++4>AE:) -A>;BJ6%&$07777MB<}}`Z\H92)52 ++# ##+-("%%%%)NSB,%                 =SB&,/%"-+&)+)+:;JE:1)+&)>>;>J>%&/3<33JB6ppN<7|iKK^KV^mrzfIVr]?9GSd3BT}p`MB6333("13/,63;Ab[D2.)+)##)-5-))))+%%(%%()]_\N>%                    &GWoJ&,/"" &&)))).5444-# )+-@:1;B>&#%"%-&&6;;)Mp||abcIC^^m^czui^KKKWL>M(%(%#&1/,33;AbOH=54# &+).@2)))#%(%%('^ckbS>%                 %ZeRiJ-(,%"&&+&))#)))-)+##&&1J4&6;>+&&&###&&O|saVCImxiuzr^cXKK?GU-&#)&)#&-,/36;A[OOO5) --:145)))#%(%"&2ui][ZN;,              "JkaIXN1,((%%(&&&+-))#&+#+++&&+41-6;B- &++&&&#&&# Ol]cczicscXKKLGGLG   &&&#+))#"((36>4H_ROH.))+4:;644++&#%(%%&9zri]UHJ;/              -StW?KN1/%(,%&&&&&-1+&&&#&&&&)-46;>B%#++&&+)&### Krzzr^Q]WK??LGH_G  # &###))## "%%/3>4PtaUH5@@::>/11&#&&%(%%&?iceaO=HA>,            ,45L_L+=E41(,,%%((%"%-&&&(&&&&4J>>>>B%#)))))))# Zɣzrm^zmVKOODRKOGRtS ##&##)' #,36)U~[LDPH:-4/,""""((%"#@ekh_LDE?DE1"                  FBNEOUA&&9:;///%(((%"""&"%&&&&&-B>JJ>>%#))'')))# =zcllsxY??H=GOG9L\H " #))# #&# ,31)UbSZbS:--//%"(%(&#:Uj[UUOH?KONB$                    &#### # )# mwosmX?9HD2K92GL:  '' # %/36&OshUOjnZ:+(,/%"%%%##=[e_[[WUKKKOJ<1               -NHQOQOOPH@=2EN>&%"%%(%%%(%" ) #&#-1JS@E' ''{rhZ_e_OGOO9OO?GG5 ' # "(<41H\[[RbjL4&&((%"&&"&&&+?|zzllXXQG=@HG'             2PNSHRRRLOLLP=:=JB&#&"%%%(%(((,%)2@4=ZL9:ANAA+  P]cXso_OW[[Znt_vv]O2  "(6;:@@GKUU\SA;&%(%""&(&&)+-G~~ot_OOK9@HQ5             .vbZOKO[ZUPPS::>NA1%((%%%%%,((((-5DDPnjWLHN;;%""(&1-&&6;6+#"dXV^lu|k_WQUaovvyb0!&46-,33116(%&14EPORKROZZA4&%%%%%%""&&&&&-1E~tbO\ZHLHDHRX?           9s{SHKLWUUOSS=::NJ6(%(""%%%(((%%,@LOU_e]UZS;6%%/3<B`p`>67dlXlsimhURR]kwyuyo70+BTT33<3%$07FEK]llseojA/%"%0077MF3,""%%%"%(&",--OsselcKKRELZXmݭ_            2ŷwGUDRRUUOLE:@2AJ>1"%%%(//5AJ6,""%%(,1BBJNUkikslu~P/,""/007MFFFM`dF700Fn^c~eRORkskt~wwz|zzwvn3003MdM007073,""%-?]cukLA@@HEHA6,((%(((""%//(Zrluc]WDHORiբk'           P̞[HGKUUPLPZ@::>A1((((%"%&2=JNS_o~syuul[43&"/00FMMFMT`dF707}cXvl[ROO]lskswm]a{M00<<3/%%(%,6/,Elwa]eWWUGLOQcuR             HǞ]HGDHGLSHLE=:;B4&%%("%(@HA>JbvrijE1+&",,0F`TMMTTT<30<}|]eXR[ZZ_w_[swca_SJ0*